mirror of https://github.com/python/cpython
gh-92675: venv: Fix ensure_directories() to again accept a Path for env_dir (GH-92676)
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
(cherry picked from commit 30deeac649
)
Co-authored-by: David Foster <david@dafoster.net>
This commit is contained in:
parent
7afccd34a6
commit
71cdf6a38a
|
@ -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
|
||||
|
@ -98,12 +99,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)
|
||||
|
@ -473,7 +485,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):
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Fix :func:`venv.ensure_directories` to accept :class:`pathlib.Path` arguments
|
||||
in addition to :class:`str` paths. Patch by David Foster.
|
Loading…
Reference in New Issue