diff --git a/_pytest/config.py b/_pytest/config.py index db5938b2a..a458e9573 100644 --- a/_pytest/config.py +++ b/_pytest/config.py @@ -104,10 +104,7 @@ def _prepareconfig(args=None, plugins=None): elif not isinstance(args, (tuple, list)): if not isinstance(args, str): raise ValueError("not a string or argument list: %r" % (args,)) - if sys.platform == "win32": - args = shlex.split(args, posix=False) - else: - args = shlex.split(args) + args = shlex.split(args, posix=sys.platform == "win32") config = get_config() pluginmanager = config.pluginmanager try: diff --git a/testing/test_config.py b/testing/test_config.py index 92c9bdb8b..fe0654017 100644 --- a/testing/test_config.py +++ b/testing/test_config.py @@ -79,7 +79,7 @@ class TestParseIni: """) result = testdir.inline_run("--confcutdir=.") assert result.ret == 0 - + class TestConfigCmdlineParsing: def test_parsing_again_fails(self, testdir): config = testdir.parseconfig() @@ -101,6 +101,16 @@ class TestConfigCmdlineParsing: config = testdir.parseconfig("-c", "custom.cfg") assert config.getini("custom") == "1" + def test_absolute_win32_path(self, testdir): + temp_cfg_file = testdir.makefile(".cfg", custom=""" + [pytest] + addopts = --version + """) + from os.path import normpath + temp_cfg_file = normpath(str(temp_cfg_file)) + ret = pytest.main("-c " + temp_cfg_file) + assert ret == _pytest.main.EXIT_OK + class TestConfigAPI: def test_config_trace(self, testdir): config = testdir.parseconfig()