Port test_frozen to unittest.

This commit is contained in:
Georg Brandl 2007-08-24 18:22:54 +00:00
parent 9f2b93e03a
commit 692bbc4790
3 changed files with 49 additions and 24 deletions

View File

@ -1,4 +0,0 @@
test_frozen
Hello world...
Hello world...
Hello world...

View File

@ -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:
class FrozenTests(unittest.TestCase):
def test_frozen(self):
with captured_stdout() as stdout:
try:
import __hello__
except ImportError, x:
raise TestFailed, "import __hello__ failed:" + str(x)
except ImportError, x:
self.fail("import __hello__ failed:" + str(x))
try:
try:
import __phello__
except ImportError, x:
raise TestFailed, "import __phello__ failed:" + str(x)
except ImportError, x:
self.fail("import __phello__ failed:" + str(x))
try:
try:
import __phello__.spam
except ImportError, x:
raise TestFailed, "import __phello__.spam failed:" + str(x)
except ImportError, x:
self.fail("import __phello__.spam failed:" + str(x))
if sys.platform != "mac": # On the Mac this import does succeed.
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"
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)

View File

@ -374,6 +374,22 @@ def transient_internet():
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.