Port test_frozen to unittest.
diff --git a/Lib/test/output/test_frozen b/Lib/test/output/test_frozen
deleted file mode 100644
index 76f17db..0000000
--- a/Lib/test/output/test_frozen
+++ /dev/null
@@ -1,4 +0,0 @@
-test_frozen
-Hello world...
-Hello world...
-Hello world...
diff --git a/Lib/test/test_frozen.py b/Lib/test/test_frozen.py
index 8b121d3..621720c 100644
--- a/Lib/test/test_frozen.py
+++ b/Lib/test/test_frozen.py
@@ -1,27 +1,40 @@
# Test the frozen module defined in frozen.c.
+from __future__ import with_statement
-from test.test_support import TestFailed
+from test.test_support import captured_stdout, run_unittest
+import unittest
import sys, os
-try:
- import __hello__
-except ImportError, x:
- raise TestFailed, "import __hello__ failed:" + str(x)
+class FrozenTests(unittest.TestCase):
+ def test_frozen(self):
-try:
- import __phello__
-except ImportError, x:
- raise TestFailed, "import __phello__ failed:" + str(x)
+ with captured_stdout() as stdout:
+ try:
+ import __hello__
+ except ImportError, x:
+ self.fail("import __hello__ failed:" + str(x))
-try:
- import __phello__.spam
-except ImportError, x:
- raise TestFailed, "import __phello__.spam failed:" + str(x)
+ try:
+ import __phello__
+ except ImportError, x:
+ self.fail("import __phello__ failed:" + str(x))
-if sys.platform != "mac": # On the Mac this import does succeed.
- try:
- import __phello__.foo
- except ImportError:
- pass
- else:
- raise TestFailed, "import __phello__.foo should have failed"
+ try:
+ import __phello__.spam
+ except ImportError, x:
+ self.fail("import __phello__.spam failed:" + str(x))
+
+ if sys.platform != "mac": # On the Mac this import does succeed.
+ try:
+ import __phello__.foo
+ except ImportError:
+ pass
+ else:
+ self.fail("import __phello__.foo should have failed")
+
+ self.assertEquals(stdout.getvalue(),
+ 'Hello world...\nHello world...\nHello world...\n')
+
+
+def test_main():
+ run_unittest(FrozenTests)
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 0f96084..cba0a49 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -374,6 +374,22 @@
return contextlib.nested(time_out, socket_peer_reset, ioerror_peer_reset)
+@contextlib.contextmanager
+def captured_stdout():
+ """Run the with statement body using a StringIO object as sys.stdout.
+ Example use::
+
+ with captured_stdout() as s:
+ print "hello"
+ assert s.getvalue() == "hello"
+ """
+ import StringIO
+ orig_stdout = sys.stdout
+ sys.stdout = StringIO.StringIO()
+ yield sys.stdout
+ sys.stdout = orig_stdout
+
+
#=======================================================================
# Decorator for running a function in a different locale, correctly resetting
# it afterwards.