mirror of https://github.com/python/cpython
#11420: merge with 3.3.
This commit is contained in:
commit
469da97c1e
|
@ -86,9 +86,9 @@ class BuildDumbTestCase(support.TempdirManager,
|
||||||
fp.close()
|
fp.close()
|
||||||
|
|
||||||
contents = sorted(os.path.basename(fn) for fn in contents)
|
contents = sorted(os.path.basename(fn) for fn in contents)
|
||||||
wanted = ['foo-0.1-py%s.%s.egg-info' % sys.version_info[:2],
|
wanted = ['foo-0.1-py%s.%s.egg-info' % sys.version_info[:2], 'foo.py']
|
||||||
'foo.%s.pyc' % imp.get_tag(),
|
if not sys.dont_write_bytecode:
|
||||||
'foo.py']
|
wanted.append('foo.%s.pyc' % imp.get_tag())
|
||||||
self.assertEqual(contents, sorted(wanted))
|
self.assertEqual(contents, sorted(wanted))
|
||||||
|
|
||||||
def test_suite():
|
def test_suite():
|
||||||
|
|
|
@ -162,8 +162,10 @@ class ImportTests(unittest.TestCase):
|
||||||
|
|
||||||
with warnings.catch_warnings():
|
with warnings.catch_warnings():
|
||||||
warnings.simplefilter('ignore')
|
warnings.simplefilter('ignore')
|
||||||
|
if not sys.dont_write_bytecode:
|
||||||
mod = imp.load_compiled(
|
mod = imp.load_compiled(
|
||||||
temp_mod_name, imp.cache_from_source(temp_mod_name + '.py'))
|
temp_mod_name,
|
||||||
|
imp.cache_from_source(temp_mod_name + '.py'))
|
||||||
self.assertEqual(mod.a, 1)
|
self.assertEqual(mod.a, 1)
|
||||||
|
|
||||||
if not os.path.exists(test_package_name):
|
if not os.path.exists(test_package_name):
|
||||||
|
|
|
@ -24,6 +24,10 @@ from test.support import (
|
||||||
from test import script_helper
|
from test import script_helper
|
||||||
|
|
||||||
|
|
||||||
|
skip_if_dont_write_bytecode = unittest.skipIf(
|
||||||
|
sys.dont_write_bytecode,
|
||||||
|
"test meaningful only when writing bytecode")
|
||||||
|
|
||||||
def remove_files(name):
|
def remove_files(name):
|
||||||
for f in (name + ".py",
|
for f in (name + ".py",
|
||||||
name + ".pyc",
|
name + ".pyc",
|
||||||
|
@ -120,6 +124,7 @@ class ImportTests(unittest.TestCase):
|
||||||
finally:
|
finally:
|
||||||
del sys.path[0]
|
del sys.path[0]
|
||||||
|
|
||||||
|
@skip_if_dont_write_bytecode
|
||||||
def test_bug7732(self):
|
def test_bug7732(self):
|
||||||
source = TESTFN + '.py'
|
source = TESTFN + '.py'
|
||||||
os.mkdir(source)
|
os.mkdir(source)
|
||||||
|
@ -230,6 +235,7 @@ class ImportTests(unittest.TestCase):
|
||||||
remove_files(TESTFN)
|
remove_files(TESTFN)
|
||||||
unload(TESTFN)
|
unload(TESTFN)
|
||||||
|
|
||||||
|
@skip_if_dont_write_bytecode
|
||||||
def test_file_to_source(self):
|
def test_file_to_source(self):
|
||||||
# check if __file__ points to the source file where available
|
# check if __file__ points to the source file where available
|
||||||
source = TESTFN + ".py"
|
source = TESTFN + ".py"
|
||||||
|
@ -316,6 +322,7 @@ class ImportTests(unittest.TestCase):
|
||||||
self.fail("fromlist must allow bogus names")
|
self.fail("fromlist must allow bogus names")
|
||||||
|
|
||||||
|
|
||||||
|
@skip_if_dont_write_bytecode
|
||||||
class FilePermissionTests(unittest.TestCase):
|
class FilePermissionTests(unittest.TestCase):
|
||||||
# tests for file mode on cached .pyc/.pyo files
|
# tests for file mode on cached .pyc/.pyo files
|
||||||
|
|
||||||
|
@ -642,6 +649,7 @@ class PycacheTests(unittest.TestCase):
|
||||||
del sys.path[0]
|
del sys.path[0]
|
||||||
self._clean()
|
self._clean()
|
||||||
|
|
||||||
|
@skip_if_dont_write_bytecode
|
||||||
def test_import_pyc_path(self):
|
def test_import_pyc_path(self):
|
||||||
self.assertFalse(os.path.exists('__pycache__'))
|
self.assertFalse(os.path.exists('__pycache__'))
|
||||||
__import__(TESTFN)
|
__import__(TESTFN)
|
||||||
|
@ -654,6 +662,7 @@ class PycacheTests(unittest.TestCase):
|
||||||
"test meaningful only on posix systems")
|
"test meaningful only on posix systems")
|
||||||
@unittest.skipIf(hasattr(os, 'geteuid') and os.geteuid() == 0,
|
@unittest.skipIf(hasattr(os, 'geteuid') and os.geteuid() == 0,
|
||||||
"due to varying filesystem permission semantics (issue #11956)")
|
"due to varying filesystem permission semantics (issue #11956)")
|
||||||
|
@skip_if_dont_write_bytecode
|
||||||
def test_unwritable_directory(self):
|
def test_unwritable_directory(self):
|
||||||
# When the umask causes the new __pycache__ directory to be
|
# When the umask causes the new __pycache__ directory to be
|
||||||
# unwritable, the import still succeeds but no .pyc file is written.
|
# unwritable, the import still succeeds but no .pyc file is written.
|
||||||
|
@ -663,6 +672,7 @@ class PycacheTests(unittest.TestCase):
|
||||||
self.assertFalse(os.path.exists(os.path.join(
|
self.assertFalse(os.path.exists(os.path.join(
|
||||||
'__pycache__', '{}.{}.pyc'.format(TESTFN, self.tag))))
|
'__pycache__', '{}.{}.pyc'.format(TESTFN, self.tag))))
|
||||||
|
|
||||||
|
@skip_if_dont_write_bytecode
|
||||||
def test_missing_source(self):
|
def test_missing_source(self):
|
||||||
# With PEP 3147 cache layout, removing the source but leaving the pyc
|
# With PEP 3147 cache layout, removing the source but leaving the pyc
|
||||||
# file does not satisfy the import.
|
# file does not satisfy the import.
|
||||||
|
@ -673,6 +683,7 @@ class PycacheTests(unittest.TestCase):
|
||||||
forget(TESTFN)
|
forget(TESTFN)
|
||||||
self.assertRaises(ImportError, __import__, TESTFN)
|
self.assertRaises(ImportError, __import__, TESTFN)
|
||||||
|
|
||||||
|
@skip_if_dont_write_bytecode
|
||||||
def test_missing_source_legacy(self):
|
def test_missing_source_legacy(self):
|
||||||
# Like test_missing_source() except that for backward compatibility,
|
# Like test_missing_source() except that for backward compatibility,
|
||||||
# when the pyc file lives where the py file would have been (and named
|
# when the pyc file lives where the py file would have been (and named
|
||||||
|
@ -694,6 +705,7 @@ class PycacheTests(unittest.TestCase):
|
||||||
pyc_file = imp.cache_from_source(TESTFN + '.py')
|
pyc_file = imp.cache_from_source(TESTFN + '.py')
|
||||||
self.assertEqual(m.__cached__, os.path.join(os.curdir, pyc_file))
|
self.assertEqual(m.__cached__, os.path.join(os.curdir, pyc_file))
|
||||||
|
|
||||||
|
@skip_if_dont_write_bytecode
|
||||||
def test___cached___legacy_pyc(self):
|
def test___cached___legacy_pyc(self):
|
||||||
# Like test___cached__() except that for backward compatibility,
|
# Like test___cached__() except that for backward compatibility,
|
||||||
# when the pyc file lives where the py file would have been (and named
|
# when the pyc file lives where the py file would have been (and named
|
||||||
|
@ -709,6 +721,7 @@ class PycacheTests(unittest.TestCase):
|
||||||
self.assertEqual(m.__cached__,
|
self.assertEqual(m.__cached__,
|
||||||
os.path.join(os.curdir, os.path.relpath(pyc_file)))
|
os.path.join(os.curdir, os.path.relpath(pyc_file)))
|
||||||
|
|
||||||
|
@skip_if_dont_write_bytecode
|
||||||
def test_package___cached__(self):
|
def test_package___cached__(self):
|
||||||
# Like test___cached__ but for packages.
|
# Like test___cached__ but for packages.
|
||||||
def cleanup():
|
def cleanup():
|
||||||
|
|
|
@ -159,6 +159,7 @@ class SimpleTest(unittest.TestCase):
|
||||||
finally:
|
finally:
|
||||||
os.unlink(file_path)
|
os.unlink(file_path)
|
||||||
pycache = os.path.dirname(imp.cache_from_source(file_path))
|
pycache = os.path.dirname(imp.cache_from_source(file_path))
|
||||||
|
if os.path.exists(pycache):
|
||||||
shutil.rmtree(pycache)
|
shutil.rmtree(pycache)
|
||||||
|
|
||||||
def test_timestamp_overflow(self):
|
def test_timestamp_overflow(self):
|
||||||
|
|
|
@ -258,6 +258,7 @@ class RunModuleTestCase(unittest.TestCase, CodeExecutionMixin):
|
||||||
importlib.invalidate_caches()
|
importlib.invalidate_caches()
|
||||||
__import__(mod_name)
|
__import__(mod_name)
|
||||||
os.remove(mod_fname)
|
os.remove(mod_fname)
|
||||||
|
if not sys.dont_write_bytecode:
|
||||||
make_legacy_pyc(mod_fname)
|
make_legacy_pyc(mod_fname)
|
||||||
unload(mod_name) # In case loader caches paths
|
unload(mod_name) # In case loader caches paths
|
||||||
importlib.invalidate_caches()
|
importlib.invalidate_caches()
|
||||||
|
@ -293,6 +294,7 @@ class RunModuleTestCase(unittest.TestCase, CodeExecutionMixin):
|
||||||
importlib.invalidate_caches()
|
importlib.invalidate_caches()
|
||||||
__import__(mod_name)
|
__import__(mod_name)
|
||||||
os.remove(mod_fname)
|
os.remove(mod_fname)
|
||||||
|
if not sys.dont_write_bytecode:
|
||||||
make_legacy_pyc(mod_fname)
|
make_legacy_pyc(mod_fname)
|
||||||
unload(mod_name) # In case loader caches paths
|
unload(mod_name) # In case loader caches paths
|
||||||
if verbose > 1: print("Running from compiled:", pkg_name)
|
if verbose > 1: print("Running from compiled:", pkg_name)
|
||||||
|
@ -351,6 +353,7 @@ from ..uncle.cousin import nephew
|
||||||
importlib.invalidate_caches()
|
importlib.invalidate_caches()
|
||||||
__import__(mod_name)
|
__import__(mod_name)
|
||||||
os.remove(mod_fname)
|
os.remove(mod_fname)
|
||||||
|
if not sys.dont_write_bytecode:
|
||||||
make_legacy_pyc(mod_fname)
|
make_legacy_pyc(mod_fname)
|
||||||
unload(mod_name) # In case the loader caches paths
|
unload(mod_name) # In case the loader caches paths
|
||||||
if verbose > 1: print("Running from compiled:", mod_name)
|
if verbose > 1: print("Running from compiled:", mod_name)
|
||||||
|
@ -513,6 +516,7 @@ class RunPathTestCase(unittest.TestCase, CodeExecutionMixin):
|
||||||
script_name = self._make_test_script(script_dir, mod_name)
|
script_name = self._make_test_script(script_dir, mod_name)
|
||||||
compiled_name = py_compile.compile(script_name, doraise=True)
|
compiled_name = py_compile.compile(script_name, doraise=True)
|
||||||
os.remove(script_name)
|
os.remove(script_name)
|
||||||
|
if not sys.dont_write_bytecode:
|
||||||
legacy_pyc = make_legacy_pyc(script_name)
|
legacy_pyc = make_legacy_pyc(script_name)
|
||||||
self._check_script(script_dir, "<run_path>", legacy_pyc,
|
self._check_script(script_dir, "<run_path>", legacy_pyc,
|
||||||
script_dir)
|
script_dir)
|
||||||
|
|
|
@ -935,6 +935,9 @@ Extension Modules
|
||||||
Tests
|
Tests
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
- Issue #11420: make test suite pass with -B/DONTWRITEBYTECODE set.
|
||||||
|
Initial patch by Thomas Wouters.
|
||||||
|
|
||||||
- Issue #10652: make tcl/tk tests run after __all__ test, patch by
|
- Issue #10652: make tcl/tk tests run after __all__ test, patch by
|
||||||
Zachary Ware.
|
Zachary Ware.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue