diff --git a/procrunner/__init__.py b/procrunner/__init__.py index 31659ef..231fecd 100644 --- a/procrunner/__init__.py +++ b/procrunner/__init__.py @@ -496,11 +496,13 @@ command = tuple(_path_resolve(part) for part in command) if win32resolve and sys.platform == "win32": command = _windows_resolve(command) + if working_directory and sys.version_info < (3, 7): + working_directory = os.fspath(working_directory) p = subprocess.Popen( command, shell=False, - cwd=_path_resolve(working_directory), + cwd=working_directory, env=env, stdin=stdin_pipe, stdout=subprocess.PIPE, diff --git a/tests/test_procrunner.py b/tests/test_procrunner.py index 218053c..3347355 100644 --- a/tests/test_procrunner.py +++ b/tests/test_procrunner.py @@ -1,6 +1,7 @@ import copy import mock import os +import pathlib import procrunner import pytest import sys @@ -87,13 +88,16 @@ False, callback_stdout=mock.sentinel.callback_stdout, callback_stderr=mock.sentinel.callback_stderr, - working_directory=mock.sentinel.cwd, + working_directory=pathlib.Path("somecwd"), raise_timeout_exception=True, ) assert mock_subprocess.Popen.called assert mock_subprocess.Popen.call_args[1]["env"] == os.environ - assert mock_subprocess.Popen.call_args[1]["cwd"] == mock.sentinel.cwd + assert mock_subprocess.Popen.call_args[1]["cwd"] in ( + pathlib.Path("somecwd"), + "somecwd", + ) mock_streamreader.assert_has_calls( [ mock.call(