diff --git a/changelog/6117.improvement.rst b/changelog/6117.improvement.rst new file mode 100644 index 00000000000..656f480d772 --- /dev/null +++ b/changelog/6117.improvement.rst @@ -0,0 +1,3 @@ +Ini options (typically added via ``parser.addini`` in ``pytest_addoption``) +allow for using ``default=None``, where previously the default would be ``[]`` +then. diff --git a/src/_pytest/config/__init__.py b/src/_pytest/config/__init__.py index 2b0f48c07a7..9dce841f3b5 100644 --- a/src/_pytest/config/__init__.py +++ b/src/_pytest/config/__init__.py @@ -990,7 +990,7 @@ def _getini(self, name: str) -> Any: try: value = self.inicfg[name] except KeyError: - if default is not None: + if default is not notset: return default if type is None: return "" diff --git a/src/_pytest/config/argparsing.py b/src/_pytest/config/argparsing.py index 9b526ff3e1f..509c4ccb264 100644 --- a/src/_pytest/config/argparsing.py +++ b/src/_pytest/config/argparsing.py @@ -10,6 +10,7 @@ import py +from _pytest.config import notset from _pytest.config.exceptions import UsageError FILE_OR_DIR = "file_or_dir" @@ -127,7 +128,7 @@ def parse_known_and_unknown_args( args = [str(x) if isinstance(x, py.path.local) else x for x in args] return optparser.parse_known_args(args, namespace=namespace) - def addini(self, name, help, type=None, default=None): + def addini(self, name, help, type=None, default=notset): """ register an ini-file option. :name: name of the ini-variable diff --git a/testing/test_config.py b/testing/test_config.py index d4d624348f5..1173dba9326 100644 --- a/testing/test_config.py +++ b/testing/test_config.py @@ -268,6 +268,7 @@ def test_addini(self, testdir): """ def pytest_addoption(parser): parser.addini("myname", "my new ini value") + parser.addini("defaultunset", "allow None", default=None) """ ) testdir.makeini( @@ -279,6 +280,7 @@ def pytest_addoption(parser): config = testdir.parseconfig() val = config.getini("myname") assert val == "hello" + assert config.getini("defaultunset") is None pytest.raises(ValueError, config.getini, "other") def test_addini_pathlist(self, testdir):