summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2017-02-26 17:38:31 (GMT)
committerGitHub <noreply@github.com>2017-02-26 17:38:31 (GMT)
commit6b81003bdbd9375886bae54f876650bcdccfe6c7 (patch)
tree51c876f85b1b5d76d251bb2f93da6759e8395b9e
parentdeea29e61e61f0e216bff3f0ca008f5ee231793f (diff)
downloadcpython-6b81003bdbd9375886bae54f876650bcdccfe6c7.zip
cpython-6b81003bdbd9375886bae54f876650bcdccfe6c7.tar.gz
cpython-6b81003bdbd9375886bae54f876650bcdccfe6c7.tar.bz2
bpo-28624: Add a test that checks that cwd parameter of Popen() accepts PathLike objects (#157) (#323)
(cherry picked from commit d5c11f7ace48701bb950c6345deee88c35c66e26)
-rw-r--r--Doc/library/subprocess.rst10
-rw-r--r--Lib/test/test_subprocess.py10
-rw-r--r--Misc/ACKS1
-rw-r--r--Misc/NEWS3
4 files changed, 21 insertions, 3 deletions
diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst
index ad2abe8..548e4a6 100644
--- a/Doc/library/subprocess.rst
+++ b/Doc/library/subprocess.rst
@@ -466,9 +466,13 @@ functions.
The *pass_fds* parameter was added.
If *cwd* is not ``None``, the function changes the working directory to
- *cwd* before executing the child. In particular, the function looks for
- *executable* (or for the first item in *args*) relative to *cwd* if the
- executable path is a relative path.
+ *cwd* before executing the child. *cwd* can be a :class:`str` and
+ :term:`path-like <path-like object>` object. In particular, the function
+ looks for *executable* (or for the first item in *args*) relative to *cwd*
+ if the executable path is a relative path.
+
+ .. versionchanged:: 3.6
+ *cwd* parameter accepts a :term:`path-like object`.
If *restore_signals* is true (the default) all signals that Python has set to
SIG_IGN are restored to SIG_DFL in the child process before the exec.
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index e63f9f2..3c871dd 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -347,6 +347,16 @@ class ProcessTestCase(BaseTestCase):
temp_dir = self._normalize_cwd(temp_dir)
self._assert_cwd(temp_dir, sys.executable, cwd=temp_dir)
+ def test_cwd_with_pathlike(self):
+ temp_dir = tempfile.gettempdir()
+ temp_dir = self._normalize_cwd(temp_dir)
+
+ class _PathLikeObj:
+ def __fspath__(self):
+ return temp_dir
+
+ self._assert_cwd(temp_dir, sys.executable, cwd=_PathLikeObj())
+
@unittest.skipIf(mswindows, "pending resolution of issue #15533")
def test_cwd_with_relative_arg(self):
# Check that Popen looks for args[0] relative to cwd if args[0]
diff --git a/Misc/ACKS b/Misc/ACKS
index 1d6e773..c3b29a4 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -269,6 +269,7 @@ Albert Chin-A-Young
Adal Chiriliuc
Matt Chisholm
Lita Cho
+Sayan Chowdhury
Anders Chrigström
Tom Christiansen
Renee Chu
diff --git a/Misc/NEWS b/Misc/NEWS
index a48debd..dfafe7b 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -69,6 +69,9 @@ Extension Modules
Library
-------
+- bpo-28624: Add a test that checks that cwd parameter of Popen() accepts
+ PathLike objects. Patch by Sayan Chowdhury.
+
- bpo-28518: Start a transaction implicitly before a DML statement.
Patch by Aviv Palivoda.