From dd2425675bac0ddde21e0e3ec43cffa72cb405b8 Mon Sep 17 00:00:00 2001 From: Meng Jue Date: Tue, 19 Apr 2016 12:09:54 +0800 Subject: [PATCH 1/3] Fix a small issue about shlex.split not working well with win32 path --- AUTHORS | 1 + _pytest/config.py | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index 14bb4e3c1..7ae2b50d9 100644 --- a/AUTHORS +++ b/AUTHORS @@ -87,3 +87,4 @@ Russel Winder Ben Webb Alexei Kozlenok Cal Leeming +Feng Ma diff --git a/_pytest/config.py b/_pytest/config.py index fb7b1774f..db5938b2a 100644 --- a/_pytest/config.py +++ b/_pytest/config.py @@ -104,7 +104,10 @@ 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,)) - args = shlex.split(args) + if sys.platform == "win32": + args = shlex.split(args, posix=False) + else: + args = shlex.split(args) config = get_config() pluginmanager = config.pluginmanager try: From 1a37035d710769ab13330014eec6e686f54b6f11 Mon Sep 17 00:00:00 2001 From: MengJueM Date: Wed, 20 Apr 2016 01:27:37 +0800 Subject: [PATCH 2/3] Add test test_absolute_win32_path --- _pytest/config.py | 5 +---- testing/test_config.py | 12 +++++++++++- 2 files changed, 12 insertions(+), 5 deletions(-) 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() From f51c34ef319e87436173afdb5d421828dcede4b4 Mon Sep 17 00:00:00 2001 From: MengJueM Date: Wed, 20 Apr 2016 22:32:35 +0800 Subject: [PATCH 3/3] Add changelog --- CHANGELOG.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 2b6780ad8..f6025bfe8 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -5,7 +5,8 @@ * -* +* Fix win32 path issue when puttinging custom config file with absolute path + in ``pytest.main("-c your_absolute_path")``. * Fix maximum recursion depth detection when raised error class is not aware of unicode/encoded bytes.