Codebase list python-procrunner / e838522
pass pathlib.Path objects through on Python 3.7+ subprocess cwd= parameter supports path-like objects on all platforms from 3.7 onwards Markus Gerstel 3 years ago
2 changed file(s) with 9 addition(s) and 3 deletion(s). Raw diff Collapse all Expand all
495495 command = tuple(_path_resolve(part) for part in command)
496496 if win32resolve and sys.platform == "win32":
497497 command = _windows_resolve(command)
498 if working_directory and sys.version_info < (3, 7):
499 working_directory = os.fspath(working_directory)
498500
499501 p = subprocess.Popen(
500502 command,
501503 shell=False,
502 cwd=_path_resolve(working_directory),
504 cwd=working_directory,
503505 env=env,
504506 stdin=stdin_pipe,
505507 stdout=subprocess.PIPE,
00 import copy
11 import mock
22 import os
3 import pathlib
34 import procrunner
45 import pytest
56 import sys
8687 False,
8788 callback_stdout=mock.sentinel.callback_stdout,
8889 callback_stderr=mock.sentinel.callback_stderr,
89 working_directory=mock.sentinel.cwd,
90 working_directory=pathlib.Path("somecwd"),
9091 raise_timeout_exception=True,
9192 )
9293
9394 assert mock_subprocess.Popen.called
9495 assert mock_subprocess.Popen.call_args[1]["env"] == os.environ
95 assert mock_subprocess.Popen.call_args[1]["cwd"] == mock.sentinel.cwd
96 assert mock_subprocess.Popen.call_args[1]["cwd"] in (
97 pathlib.Path("somecwd"),
98 "somecwd",
99 )
96100 mock_streamreader.assert_has_calls(
97101 [
98102 mock.call(