diff options
author | Brett Cannon <bcannon@gmail.com> | 2010-05-20 18:37:55 (GMT) |
---|---|---|
committer | Brett Cannon <bcannon@gmail.com> | 2010-05-20 18:37:55 (GMT) |
commit | eb3cd301aea85de122c828afa6473bfc6c9eb10e (patch) | |
tree | a4d2c340158318d6d258e694ca87c3e38811a2fc /Lib | |
parent | b1556c537d7c49978fa40594a9c9f40c6f88cdde (diff) | |
download | cpython-eb3cd301aea85de122c828afa6473bfc6c9eb10e.zip cpython-eb3cd301aea85de122c828afa6473bfc6c9eb10e.tar.gz cpython-eb3cd301aea85de122c828afa6473bfc6c9eb10e.tar.bz2 |
Turned out that if you used explicit relative import syntax
(e.g. from .os import sep) and it failed, import would still try the implicit
relative import semantics of an absolute import (from os import sep). That's
not right, so when level is negative, only do explicit relative import
semantics.
Fixes issue #7902. Thanks to Meador Inge for the patch.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_import.py | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py index f47c6c9..da4fe3b 100644 --- a/Lib/test/test_import.py +++ b/Lib/test/test_import.py @@ -431,6 +431,18 @@ class RelativeImportTests(unittest.TestCase): self.assertRaises(ValueError, check_absolute) self.assertRaises(ValueError, check_relative) + def test_absolute_import_without_future(self): + # If absolute import syntax is used, then do not try to perform + # a relative import in the face of failure. + # Issue #7902. + try: + from .os import sep + except ImportError: + pass + else: + self.fail("explicit relative import triggered an " + "implicit relative import") + def test_main(verbose=None): run_unittest(ImportTests, PycRewritingTests, PathsTests, RelativeImportTests) |