https://github.com/python/cpython/commit/d780f0af2bd7b9ef8cf46d28c5d495d1c980b1f0 commit: d780f0af2bd7b9ef8cf46d28c5d495d1c980b1f0 branch: main author: Andrii Hrimov <andrew.hri...@gmail.com> committer: vsajip <vinay_sa...@yahoo.co.uk> date: 2025-03-04T07:48:07Z summary:
gh-130486: Fix test_venv fails from within venv (GH-130487) files: M Lib/test/test_venv.py diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py index 6e23097deaf221..adc86a49b0668d 100644 --- a/Lib/test/test_venv.py +++ b/Lib/test/test_venv.py @@ -228,25 +228,27 @@ def test_upgrade_dependencies(self): builder = venv.EnvBuilder() bin_path = 'bin' python_exe = os.path.split(sys.executable)[1] + expected_exe = os.path.basename(sys._base_executable) + if sys.platform == 'win32': bin_path = 'Scripts' if os.path.normcase(os.path.splitext(python_exe)[0]).endswith('_d'): - python_exe = 'python_d.exe' + expected_exe = 'python_d' else: - python_exe = 'python.exe' + expected_exe = 'python' + python_exe = expected_exe + '.exe' + with tempfile.TemporaryDirectory() as fake_env_dir: expect_exe = os.path.normcase( - os.path.join(fake_env_dir, bin_path, python_exe) + os.path.join(fake_env_dir, bin_path, expected_exe) ) if sys.platform == 'win32': expect_exe = os.path.normcase(os.path.realpath(expect_exe)) def pip_cmd_checker(cmd, **kwargs): - cmd[0] = os.path.normcase(cmd[0]) self.assertEqual( - cmd, + cmd[1:], [ - expect_exe, '-m', 'pip', 'install', @@ -254,6 +256,9 @@ def pip_cmd_checker(cmd, **kwargs): 'pip', ] ) + exe_dir = os.path.normcase(os.path.dirname(cmd[0])) + expected_dir = os.path.normcase(os.path.dirname(expect_exe)) + self.assertEqual(exe_dir, expected_dir) fake_context = builder.ensure_directories(fake_env_dir) with patch('venv.subprocess.check_output', pip_cmd_checker): @@ -681,7 +686,8 @@ def test_zippath_from_non_installed_posix(self): self.addCleanup(rmtree, non_installed_dir) bindir = os.path.join(non_installed_dir, self.bindir) os.mkdir(bindir) - shutil.copy2(sys.executable, bindir) + python_exe = os.path.basename(sys.executable) + shutil.copy2(sys.executable, os.path.join(bindir, python_exe)) libdir = os.path.join(non_installed_dir, platlibdir, self.lib[1]) os.makedirs(libdir) landmark = os.path.join(libdir, "os.py") @@ -717,7 +723,7 @@ def test_zippath_from_non_installed_posix(self): else: additional_pythonpath_for_non_installed.append( eachpath) - cmd = [os.path.join(non_installed_dir, self.bindir, self.exe), + cmd = [os.path.join(non_installed_dir, self.bindir, python_exe), "-m", "venv", "--without-pip", @@ -748,7 +754,8 @@ def test_zippath_from_non_installed_posix(self): subprocess.check_call(cmd, env=child_env) # Now check the venv created from the non-installed python has # correct zip path in pythonpath. - cmd = [self.envpy(), '-S', '-c', 'import sys; print(sys.path)'] + target_python = os.path.join(self.env_dir, self.bindir, python_exe) + cmd = [target_python, '-S', '-c', 'import sys; print(sys.path)'] out, err = check_output(cmd) self.assertTrue(zip_landmark.encode() in out) _______________________________________________ Python-checkins mailing list -- python-checkins@python.org To unsubscribe send an email to python-checkins-le...@python.org https://mail.python.org/mailman3/lists/python-checkins.python.org/ Member address: arch...@mail-archive.com