3 new commits in pytest: https://bitbucket.org/hpk42/pytest/commits/f052cd6a607b/ Changeset: f052cd6a607b Branch: explicit-ini-filename User: chri...@christian-linux.sarrazin.local Date: 2014-06-27 17:42:37 Summary: Implement the "-c" command line switch that allows to explicitly specifiy the config file to load.
This feature was requested in issue #174. Affected #: 3 files diff -r 0457bfb8ce8f2cf0f8481142122fa634726dbdfc -r f052cd6a607b344c783a8bf33cdd5f3ce3562e98 _pytest/config.py --- a/_pytest/config.py +++ b/_pytest/config.py @@ -833,6 +833,14 @@ return False def getcfg(args, inibasenames): + if "-c" in args: + n = len(args) + for i in range(1, n): + if args[i - 1] == "-c" and not str(args[i]).startswith("-"): + iniconfig = py.iniconfig.IniConfig(args[i]) + if 'pytest' in iniconfig.sections: + return iniconfig['pytest'] + return {} args = [x for x in args if not str(x).startswith("-")] if not args: args = [py.path.local()] diff -r 0457bfb8ce8f2cf0f8481142122fa634726dbdfc -r f052cd6a607b344c783a8bf33cdd5f3ce3562e98 _pytest/main.py --- a/_pytest/main.py +++ b/_pytest/main.py @@ -38,6 +38,9 @@ help="exit after first num failures or errors.") group._addoption('--strict', action="store_true", help="run pytest in strict mode, warnings become errors.") + # This option is never used as such, see config.getcfg(). + group._addoption("-c", metavar="file", type=str, dest="_inifilename", + help="load configuration from `file` instead of trying to locate one of the implicit configuration files.") group = parser.getgroup("collect", "collection") group.addoption('--collectonly', '--collect-only', action="store_true", diff -r 0457bfb8ce8f2cf0f8481142122fa634726dbdfc -r f052cd6a607b344c783a8bf33cdd5f3ce3562e98 testing/test_config.py --- a/testing/test_config.py +++ b/testing/test_config.py @@ -79,6 +79,21 @@ config = testdir.parseconfig() pytest.raises(AssertionError, lambda: config.parse([])) + def test_explicitly_specified_config_file_is_loaded(self, testdir): + testdir.makeconftest(""" + def pytest_addoption(parser): + parser.addini("custom", "") + """) + testdir.makeini(""" + [pytest] + custom = 0 + """) + testdir.makefile(".cfg", custom = """ + [pytest] + custom = 1 + """) + config = testdir.parseconfig("-c", "custom.cfg") + assert config.getini("custom") == "1" class TestConfigAPI: def test_config_trace(self, testdir): https://bitbucket.org/hpk42/pytest/commits/e68b51ff970f/ Changeset: e68b51ff970f Branch: explicit-ini-filename User: c_henz Date: 2014-06-28 12:03:55 Summary: Cleaner implementation of early handling of the '-c' command line switch. Affected #: 2 files diff -r f052cd6a607b344c783a8bf33cdd5f3ce3562e98 -r e68b51ff970f72cf23f41f243c0dbad4f1a3da18 _pytest/config.py --- a/_pytest/config.py +++ b/_pytest/config.py @@ -685,7 +685,15 @@ pytest_load_initial_conftests.trylast = True def _initini(self, args): - self.inicfg = getcfg(args, ["pytest.ini", "tox.ini", "setup.cfg"]) + parsed_args = self._parser.parse_known_args(args) + if parsed_args.inifilename: + iniconfig = py.iniconfig.IniConfig(parsed_args.inifilename) + if 'pytest' in iniconfig.sections: + self.inicfg = iniconfig['pytest'] + else: + self.inicfg = {} + else: + self.inicfg = getcfg(args, ["pytest.ini", "tox.ini", "setup.cfg"]) self._parser.addini('addopts', 'extra command line options', 'args') self._parser.addini('minversion', 'minimally required pytest version') @@ -833,14 +841,6 @@ return False def getcfg(args, inibasenames): - if "-c" in args: - n = len(args) - for i in range(1, n): - if args[i - 1] == "-c" and not str(args[i]).startswith("-"): - iniconfig = py.iniconfig.IniConfig(args[i]) - if 'pytest' in iniconfig.sections: - return iniconfig['pytest'] - return {} args = [x for x in args if not str(x).startswith("-")] if not args: args = [py.path.local()] diff -r f052cd6a607b344c783a8bf33cdd5f3ce3562e98 -r e68b51ff970f72cf23f41f243c0dbad4f1a3da18 _pytest/main.py --- a/_pytest/main.py +++ b/_pytest/main.py @@ -38,8 +38,7 @@ help="exit after first num failures or errors.") group._addoption('--strict', action="store_true", help="run pytest in strict mode, warnings become errors.") - # This option is never used as such, see config.getcfg(). - group._addoption("-c", metavar="file", type=str, dest="_inifilename", + group._addoption("-c", metavar="file", type=str, dest="inifilename", help="load configuration from `file` instead of trying to locate one of the implicit configuration files.") group = parser.getgroup("collect", "collection") https://bitbucket.org/hpk42/pytest/commits/b2dc874930b7/ Changeset: b2dc874930b7 User: hpk42 Date: 2014-06-29 12:08:29 Summary: Merged in c_henz/pytest/explicit-ini-filename (pull request #175) Implement the "-c" command line switch that allows to explicitly specifiy the config file to load. Affected #: 3 files diff -r f4bdaf606ad155ba3b2ed20d19f914001d4f1806 -r b2dc874930b733c81582cb7aaecda71939dd4686 _pytest/config.py --- a/_pytest/config.py +++ b/_pytest/config.py @@ -685,7 +685,15 @@ pytest_load_initial_conftests.trylast = True def _initini(self, args): - self.inicfg = getcfg(args, ["pytest.ini", "tox.ini", "setup.cfg"]) + parsed_args = self._parser.parse_known_args(args) + if parsed_args.inifilename: + iniconfig = py.iniconfig.IniConfig(parsed_args.inifilename) + if 'pytest' in iniconfig.sections: + self.inicfg = iniconfig['pytest'] + else: + self.inicfg = {} + else: + self.inicfg = getcfg(args, ["pytest.ini", "tox.ini", "setup.cfg"]) self._parser.addini('addopts', 'extra command line options', 'args') self._parser.addini('minversion', 'minimally required pytest version') diff -r f4bdaf606ad155ba3b2ed20d19f914001d4f1806 -r b2dc874930b733c81582cb7aaecda71939dd4686 _pytest/main.py --- a/_pytest/main.py +++ b/_pytest/main.py @@ -38,6 +38,8 @@ help="exit after first num failures or errors.") group._addoption('--strict', action="store_true", help="run pytest in strict mode, warnings become errors.") + group._addoption("-c", metavar="file", type=str, dest="inifilename", + help="load configuration from `file` instead of trying to locate one of the implicit configuration files.") group = parser.getgroup("collect", "collection") group.addoption('--collectonly', '--collect-only', action="store_true", diff -r f4bdaf606ad155ba3b2ed20d19f914001d4f1806 -r b2dc874930b733c81582cb7aaecda71939dd4686 testing/test_config.py --- a/testing/test_config.py +++ b/testing/test_config.py @@ -79,6 +79,21 @@ config = testdir.parseconfig() pytest.raises(AssertionError, lambda: config.parse([])) + def test_explicitly_specified_config_file_is_loaded(self, testdir): + testdir.makeconftest(""" + def pytest_addoption(parser): + parser.addini("custom", "") + """) + testdir.makeini(""" + [pytest] + custom = 0 + """) + testdir.makefile(".cfg", custom = """ + [pytest] + custom = 1 + """) + config = testdir.parseconfig("-c", "custom.cfg") + assert config.getini("custom") == "1" class TestConfigAPI: def test_config_trace(self, testdir): Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. _______________________________________________ pytest-commit mailing list pytest-commit@python.org https://mail.python.org/mailman/listinfo/pytest-commit