[Python-checkins] r85464 - python/branches/py3k/Lib/test/test_compileall.py

georg.brandl python-checkins at python.org
Thu Oct 14 09:42:27 CEST 2010


Author: georg.brandl
Date: Thu Oct 14 09:42:27 2010
New Revision: 85464

Log:
#9964: fix running test_compileall under -O and -OO.

Modified:
   python/branches/py3k/Lib/test/test_compileall.py

Modified: python/branches/py3k/Lib/test/test_compileall.py
==============================================================================
--- python/branches/py3k/Lib/test/test_compileall.py	(original)
+++ python/branches/py3k/Lib/test/test_compileall.py	Thu Oct 14 09:42:27 2010
@@ -131,22 +131,28 @@
         assert sys.path[0] == self.directory, 'Missing path'
         del sys.path[0]
 
-    def test_pep3147_paths(self):
-        # Ensure that the default behavior of compileall's CLI is to create
-        # PEP 3147 pyc/pyo files.
-        retcode = subprocess.call(
-            (sys.executable, '-m', 'compileall', '-q', self.pkgdir))
-        self.assertEqual(retcode, 0)
-        # Verify the __pycache__ directory contents.
-        cachedir = os.path.join(self.pkgdir, '__pycache__')
-        self.assertTrue(os.path.exists(cachedir))
-        ext = ('pyc' if __debug__ else 'pyo')
-        expected = sorted(base.format(imp.get_tag(), ext) for base in
-                          ('__init__.{}.{}', 'bar.{}.{}'))
-        self.assertEqual(sorted(os.listdir(cachedir)), expected)
-        # Make sure there are no .pyc files in the source directory.
-        self.assertFalse([pyc_file for pyc_file in os.listdir(self.pkgdir)
-                          if pyc_file.endswith(ext)])
+    # Ensure that the default behavior of compileall's CLI is to create
+    # PEP 3147 pyc/pyo files.
+    for name, ext, switch in [
+        ('normal', 'pyc', []),
+        ('optimize', 'pyo', ['-O']),
+        ('doubleoptimize', 'pyo', ['-OO'])
+    ]:
+        def f(self, ext=ext, switch=switch):
+            retcode = subprocess.call(
+                [sys.executable] + switch +
+                ['-m', 'compileall', '-q', self.pkgdir])
+            self.assertEqual(retcode, 0)
+            # Verify the __pycache__ directory contents.
+            cachedir = os.path.join(self.pkgdir, '__pycache__')
+            self.assertTrue(os.path.exists(cachedir))
+            expected = sorted(base.format(imp.get_tag(), ext) for base in
+                              ('__init__.{}.{}', 'bar.{}.{}'))
+            self.assertEqual(sorted(os.listdir(cachedir)), expected)
+            # Make sure there are no .pyc files in the source directory.
+            self.assertFalse([pyc_file for pyc_file in os.listdir(self.pkgdir)
+                              if pyc_file.endswith(ext)])
+        locals()['test_pep3147_paths_' + name] = f
 
     def test_legacy_paths(self):
         # Ensure that with the proper switch, compileall leaves legacy
@@ -157,10 +163,7 @@
         # Verify the __pycache__ directory contents.
         cachedir = os.path.join(self.pkgdir, '__pycache__')
         self.assertFalse(os.path.exists(cachedir))
-        ext = ('pyc' if __debug__ else 'pyo')
-        expected = [base.format(ext) for base in ('__init__.{}', 'bar.{}')]
-        expected.extend(['__init__.py', 'bar.py'])
-        expected.sort()
+        expected = sorted(['__init__.py', '__init__.pyc', 'bar.py', 'bar.pyc'])
         self.assertEqual(sorted(os.listdir(self.pkgdir)), expected)
 
     def test_multiple_runs(self):


More information about the Python-checkins mailing list