Author: guido.van.rossum Date: Sun Feb 25 22:03:54 2007 New Revision: 53914
Added: python/branches/p3yk/Lib/test/test_xreload.py (contents, props changed) Log: Add a proper unit test for xreload.py. Added: python/branches/p3yk/Lib/test/test_xreload.py ============================================================================== --- (empty file) +++ python/branches/p3yk/Lib/test/test_xreload.py Sun Feb 25 22:03:54 2007 @@ -0,0 +1,103 @@ +"""Doctests for module reloading. + +>>> from xreload import xreload +>>> from test.test_xreload import make_mod +>>> make_mod() +>>> import x +>>> C = x.C +>>> Cfoo = C.foo +>>> Cbar = C.bar +>>> Cstomp = C.stomp +>>> b = C() +>>> bfoo = b.foo +>>> b.foo() +42 +>>> bfoo() +42 +>>> Cfoo(b) +42 +>>> Cbar() +42 42 +>>> Cstomp() +42 42 42 +>>> make_mod(repl="42", subst="24") +>>> xreload(x) +<module 'x' (built-in)> +>>> b.foo() +24 +>>> bfoo() +24 +>>> Cfoo(b) +24 +>>> Cbar() +24 24 +>>> Cstomp() +24 24 24 + +""" + +SAMPLE_CODE = """ +class C: + def foo(self): + print(42) + @classmethod + def bar(cls): + print(42, 42) + @staticmethod + def stomp(): + print (42, 42, 42) +""" + +import os +import sys +import shutil +import doctest +import xreload +import tempfile +from test.test_support import run_unittest + +tempdir = None +save_path = None + + +def setUp(unused=None): + global tempdir, save_path + tempdir = tempfile.mkdtemp() + save_path = list(sys.path) + sys.path.append(tempdir) + + +def tearDown(unused=None): + global tempdir, save_path + if save_path is not None: + sys.path = save_path + save_path = None + if tempdir is not None: + shutil.rmtree(tempdir) + tempdir = None + + +def make_mod(name="x", repl=None, subst=None): + if not tempdir: + setUp() + assert tempdir + fn = os.path.join(tempdir, name + ".py") + f = open(fn, "w") + sample = SAMPLE_CODE + if repl is not None and subst is not None: + sample = sample.replace(repl, subst) + try: + f.write(sample) + finally: + f.close() + + +def test_suite(): + return doctest.DocTestSuite(setUp=setUp, tearDown=tearDown) + + +def test_main(): + run_unittest(test_suite()) + +if __name__ == "__main__": + test_main() _______________________________________________ Python-3000-checkins mailing list [email protected] http://mail.python.org/mailman/listinfo/python-3000-checkins
