]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-92675: venv: Fix ensure_directories() to again accept a Path for env_dir (#92676)
authorDavid Foster <david@dafoster.net>
Thu, 19 May 2022 14:47:16 +0000 (08:47 -0600)
committerGitHub <noreply@github.com>
Thu, 19 May 2022 14:47:16 +0000 (07:47 -0700)
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
Lib/test/test_venv.py
Lib/venv/__init__.py
Misc/NEWS.d/next/Library/2022-05-19-13-33-18.gh-issue-92675.ZeerMZ.rst [new file with mode: 0644]

index 9f2ecf3be644a51994504b05a233385bd6638ccd..37b61a780cb07bd7c02039c1c7cc2d82ae0c621c 100644 (file)
@@ -8,6 +8,7 @@ Licensed to the PSF under a contributor agreement.
 import ensurepip
 import os
 import os.path
+import pathlib
 import re
 import shutil
 import struct
@@ -99,12 +100,23 @@ class BasicTest(BaseTest):
         fn = self.get_env_file(*args)
         self.assertTrue(os.path.isdir(fn))
 
-    def test_defaults(self):
+    def test_defaults_with_str_path(self):
         """
-        Test the create function with default arguments.
+        Test the create function with default arguments and a str path.
         """
         rmtree(self.env_dir)
         self.run_with_capture(venv.create, self.env_dir)
+        self._check_output_of_default_create()
+
+    def test_defaults_with_pathlib_path(self):
+        """
+        Test the create function with default arguments and a pathlib.Path path.
+        """
+        rmtree(self.env_dir)
+        self.run_with_capture(venv.create, pathlib.Path(self.env_dir))
+        self._check_output_of_default_create()
+
+    def _check_output_of_default_create(self):
         self.isdir(self.bindir)
         self.isdir(self.include)
         self.isdir(*self.lib)
@@ -474,7 +486,9 @@ class BasicTest(BaseTest):
         the path separator.
         """
         rmtree(self.env_dir)
-        self.assertRaises(ValueError, venv.create, self.env_dir + os.pathsep)
+        bad_itempath = self.env_dir + os.pathsep
+        self.assertRaises(ValueError, venv.create, bad_itempath)
+        self.assertRaises(ValueError, venv.create, pathlib.Path(bad_itempath))
 
 @requireVenvCreate
 class EnsurePipTest(BaseTest):
index 7bfbadda7b49709f6856eaf21cc411ead8c6782b..6032f3648e15ff8bfcb156c1b4cf2908d366ad78 100644 (file)
@@ -116,7 +116,7 @@ class EnvBuilder:
             elif os.path.islink(d) or os.path.isfile(d):
                 raise ValueError('Unable to create directory %r' % d)
 
-        if os.pathsep in env_dir:
+        if os.pathsep in os.fspath(env_dir):
             raise ValueError(f'Refusing to create a venv in {env_dir} because '
                              f'it contains the PATH separator {os.pathsep}.')
         if os.path.exists(env_dir) and self.clear:
diff --git a/Misc/NEWS.d/next/Library/2022-05-19-13-33-18.gh-issue-92675.ZeerMZ.rst b/Misc/NEWS.d/next/Library/2022-05-19-13-33-18.gh-issue-92675.ZeerMZ.rst
new file mode 100644 (file)
index 0000000..6adc024
--- /dev/null
@@ -0,0 +1,2 @@
+Fix :func:`venv.ensure_directories` to accept :class:`pathlib.Path` arguments\r
+in addition to :class:`str` paths. Patch by David Foster.\r