https://github.com/python/cpython/commit/32acfdb678e3a4cbff7dcbbc5233d169cdafe1a9
commit: 32acfdb678e3a4cbff7dcbbc5233d169cdafe1a9
branch: 3.13
author: Miss Islington (bot) <[email protected]>
committer: Yhg1s <[email protected]>
date: 2024-09-29T18:11:22-07:00
summary:

[3.13] gh-124212: Fix undefined variable in error message in venv (GH-124211) 
(#124226)

gh-124212: Fix undefined variable in error message in venv (GH-124211)
(cherry picked from commit ea7fe1fe2e162f2375562467ad834c6224a62daf)

Co-authored-by: Jacek <[email protected]>

files:
A Misc/NEWS.d/next/Library/2024-09-18-17-45-52.gh-issue-124212.n6kIby.rst
M Lib/test/test_venv.py
M Lib/venv/__init__.py

diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py
index b9fcc59d49668c..1ef08da326c18c 100644
--- a/Lib/test/test_venv.py
+++ b/Lib/test/test_venv.py
@@ -504,6 +504,21 @@ def test_unicode_in_batch_file(self):
         )
         self.assertEqual(out.strip(), '0')
 
+    @unittest.skipUnless(os.name == 'nt' and can_symlink(),
+                         'symlinks on Windows')
+    def test_failed_symlink(self):
+        """
+        Test handling of failed symlinks on Windows.
+        """
+        rmtree(self.env_dir)
+        env_dir = os.path.join(os.path.realpath(self.env_dir), 'venv')
+        with patch('os.symlink') as mock_symlink:
+            mock_symlink.side_effect = OSError()
+            builder = venv.EnvBuilder(clear=True, symlinks=True)
+            _, err = self.run_with_capture(builder.create, env_dir)
+            filepath_regex = r"'[A-Z]:\\\\(?:[^\\\\]+\\\\)*[^\\\\]+'"
+            self.assertRegex(err, rf"Unable to symlink {filepath_regex} to 
{filepath_regex}")
+
     @requireVenvCreate
     def test_multiprocessing(self):
         """
diff --git a/Lib/venv/__init__.py b/Lib/venv/__init__.py
index fa69d5846f2fa7..028e9483196694 100644
--- a/Lib/venv/__init__.py
+++ b/Lib/venv/__init__.py
@@ -393,7 +393,7 @@ def setup_python(self, context):
                         os.symlink(src, dest)
                         to_unlink.append(dest)
                     except OSError:
-                        logger.warning('Unable to symlink %r to %r', src, dst)
+                        logger.warning('Unable to symlink %r to %r', src, dest)
                         do_copies = True
                         for f in to_unlink:
                             try:
diff --git 
a/Misc/NEWS.d/next/Library/2024-09-18-17-45-52.gh-issue-124212.n6kIby.rst 
b/Misc/NEWS.d/next/Library/2024-09-18-17-45-52.gh-issue-124212.n6kIby.rst
new file mode 100644
index 00000000000000..7848f26511e282
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2024-09-18-17-45-52.gh-issue-124212.n6kIby.rst
@@ -0,0 +1 @@
+Fix invalid variable in :mod:`venv` handling of failed symlink on Windows

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to