diff options
-rw-r--r-- | Lib/importlib/test/source/test_file_loader.py | 10 | ||||
-rw-r--r-- | Lib/test/test_import.py | 29 |
2 files changed, 30 insertions, 9 deletions
diff --git a/Lib/importlib/test/source/test_file_loader.py b/Lib/importlib/test/source/test_file_loader.py index e967e08..2ca57d0 100644 --- a/Lib/importlib/test/source/test_file_loader.py +++ b/Lib/importlib/test/source/test_file_loader.py @@ -4,6 +4,7 @@ from .. import abc from .. import util from . import util as source_util +import errno import imp import marshal import os @@ -131,7 +132,14 @@ class SimpleTest(unittest.TestCase): compiled = imp.cache_from_source(source) with open(source, 'w') as f: f.write("x = 5") - os.utime(source, (2 ** 33, 2 ** 33)) + try: + os.utime(source, (2 ** 33, 2 ** 33)) + except OverflowError: + self.skipTest("cannot set modification time to large integer") + except OSError as e: + if e.errno != getattr(errno, 'EOVERFLOW', None): + raise + self.skipTest("cannot set modification time to large integer ({})".format(e)) loader = _bootstrap._SourceFileLoader('_temp', mapping['_temp']) mod = loader.load_module('_temp') # Sanity checks. diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py index 70787a4..d121ba3 100644 --- a/Lib/test/test_import.py +++ b/Lib/test/test_import.py @@ -11,6 +11,7 @@ import stat import sys import unittest import textwrap +import errno from test.support import ( EnvironmentVarGuard, TESTFN, check_warnings, forget, is_jython, @@ -309,14 +310,26 @@ class ImportTests(unittest.TestCase): def test_timestamp_overflow(self): # A modification timestamp larger than 2**32 should not be a problem # when importing a module (issue #11235). - source = TESTFN + ".py" - compiled = imp.cache_from_source(source) - with open(source, 'w') as f: - pass - os.utime(source, (2 ** 33, 2 ** 33)) - __import__(TESTFN) - # The pyc file was created. - os.stat(compiled) + sys.path.insert(0, os.curdir) + try: + source = TESTFN + ".py" + compiled = imp.cache_from_source(source) + with open(source, 'w') as f: + pass + try: + os.utime(source, (2 ** 33, 2 ** 33)) + except OverflowError: + self.skipTest("cannot set modification time to large integer") + except OSError as e: + if e.errno != getattr(errno, 'EOVERFLOW', None): + raise + self.skipTest("cannot set modification time to large integer ({})".format(e)) + __import__(TESTFN) + # The pyc file was created. + os.stat(compiled) + finally: + del sys.path[0] + remove_files(TESTFN) class PycRewritingTests(unittest.TestCase): |