summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2007-02-25 21:03:54 (GMT)
committerGuido van Rossum <guido@python.org>2007-02-25 21:03:54 (GMT)
commit55b4a4a1a97ed880bbc1e12cbc8975fe9f84e32e (patch)
treeb6c3318c8bae9f848adf54b5aeea18a1c893ce79 /Lib
parent221085de89afa861c49ff4306979dbbad949d393 (diff)
downloadcpython-55b4a4a1a97ed880bbc1e12cbc8975fe9f84e32e.zip
cpython-55b4a4a1a97ed880bbc1e12cbc8975fe9f84e32e.tar.gz
cpython-55b4a4a1a97ed880bbc1e12cbc8975fe9f84e32e.tar.bz2
Add a proper unit test for xreload.py.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/test_xreload.py103
1 files changed, 103 insertions, 0 deletions
diff --git a/Lib/test/test_xreload.py b/Lib/test/test_xreload.py
new file mode 100644
index 0000000..dcd6569
--- /dev/null
+++ b/Lib/test/test_xreload.py
@@ -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()