diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2024-05-29 20:06:38 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-29 20:06:38 (GMT) |
commit | c3cfc04a736111cb61883cef08469ea46f86d9ce (patch) | |
tree | 75f72ec6beb5a13c0b6fd7651591ce5eba95e587 | |
parent | dcfbd3be9f1e0ba7aa32214e8f5f7f2ea4375a28 (diff) | |
download | cpython-c3cfc04a736111cb61883cef08469ea46f86d9ce.zip cpython-c3cfc04a736111cb61883cef08469ea46f86d9ce.tar.gz cpython-c3cfc04a736111cb61883cef08469ea46f86d9ce.tar.bz2 |
gh-119070: Fix py.exe handling of /usr/bin/env commands missing extension (GH-119426)
(cherry picked from commit df93f5d4bf9d70036d485666d4dd4f009d37f8b9)
Co-authored-by: Steve Dower <steve.dower@python.org>
-rw-r--r-- | Lib/test/test_launcher.py | 8 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Windows/2024-05-22-19-43-29.gh-issue-119070._enton.rst | 3 | ||||
-rw-r--r-- | PC/launcher2.c | 2 |
3 files changed, 12 insertions, 1 deletions
diff --git a/Lib/test/test_launcher.py b/Lib/test/test_launcher.py index 2528a51..6d358ac 100644 --- a/Lib/test/test_launcher.py +++ b/Lib/test/test_launcher.py @@ -764,3 +764,11 @@ class TestLauncher(unittest.TestCase, RunPyMixin): with self.script(f'#! /usr/bin/env {exe.stem} arg1') as script: data = self.run_py([script], env=env) self.assertEqual(data["stdout"].strip(), f"{quote(exe)} arg1 {quote(script)}") + + def test_shebang_executable_extension(self): + with self.script('#! /usr/bin/env python3.12') as script: + data = self.run_py([script]) + expect = "# Search PATH for python3.12.exe" + actual = [line.strip() for line in data["stderr"].splitlines() + if line.startswith("# Search PATH")] + self.assertEqual([expect], actual) diff --git a/Misc/NEWS.d/next/Windows/2024-05-22-19-43-29.gh-issue-119070._enton.rst b/Misc/NEWS.d/next/Windows/2024-05-22-19-43-29.gh-issue-119070._enton.rst new file mode 100644 index 0000000..aab26f5 --- /dev/null +++ b/Misc/NEWS.d/next/Windows/2024-05-22-19-43-29.gh-issue-119070._enton.rst @@ -0,0 +1,3 @@ +Fixes ``py.exe`` handling of shebangs like ``/usr/bin/env python3.12``, +which were previously interpreted as ``python3.exe`` instead of +``python3.12.exe``. diff --git a/PC/launcher2.c b/PC/launcher2.c index 9823161..b372044 100644 --- a/PC/launcher2.c +++ b/PC/launcher2.c @@ -853,7 +853,7 @@ searchPath(SearchInfo *search, const wchar_t *shebang, int shebangLength) } wchar_t filename[MAXLEN]; - if (wcsncpy_s(filename, MAXLEN, command, lastDot)) { + if (wcsncpy_s(filename, MAXLEN, command, commandLength)) { return RC_BAD_VIRTUAL_PATH; } |