mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
bpo-33053: -m now adds *starting* directory to sys.path (GH-6231)
Historically, -m added the empty string as sys.path zero, meaning it resolved imports against the current working directory, the same way -c and the interactive prompt do. This changes the sys.path initialisation to add the *starting* working directory as sys.path[0] instead, such that changes to the working directory while the program is running will have no effect on imports when using the -m switch.
This commit is contained in:
parent
bc77eff8b9
commit
d5d9e02dd3
9 changed files with 108 additions and 78 deletions
|
@ -118,7 +118,7 @@ class ImportTests(unittest.TestCase):
|
|||
f.write("__all__ = [b'invalid_type']")
|
||||
globals = {}
|
||||
with self.assertRaisesRegex(
|
||||
TypeError, f"{re.escape(name)}\.__all__ must be str"
|
||||
TypeError, f"{re.escape(name)}\\.__all__ must be str"
|
||||
):
|
||||
exec(f"from {name} import *", globals)
|
||||
self.assertNotIn(b"invalid_type", globals)
|
||||
|
@ -127,7 +127,7 @@ class ImportTests(unittest.TestCase):
|
|||
f.write("globals()[b'invalid_type'] = object()")
|
||||
globals = {}
|
||||
with self.assertRaisesRegex(
|
||||
TypeError, f"{re.escape(name)}\.__dict__ must be str"
|
||||
TypeError, f"{re.escape(name)}\\.__dict__ must be str"
|
||||
):
|
||||
exec(f"from {name} import *", globals)
|
||||
self.assertNotIn(b"invalid_type", globals)
|
||||
|
@ -847,8 +847,11 @@ class PycacheTests(unittest.TestCase):
|
|||
unload(TESTFN)
|
||||
importlib.invalidate_caches()
|
||||
m = __import__(TESTFN)
|
||||
self.assertEqual(m.__file__,
|
||||
os.path.join(os.curdir, os.path.relpath(pyc_file)))
|
||||
try:
|
||||
self.assertEqual(m.__file__,
|
||||
os.path.join(os.curdir, os.path.relpath(pyc_file)))
|
||||
finally:
|
||||
os.remove(pyc_file)
|
||||
|
||||
def test___cached__(self):
|
||||
# Modules now also have an __cached__ that points to the pyc file.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue