Merge pull request #7872 from altendky/addini_takes_string

Document that Parser.addini() can take, and defaults to, 'string'
This commit is contained in:
Kyle Altendorf 2020-10-07 19:12:54 -04:00 committed by GitHub
commit 5acc55e838
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 18 additions and 8 deletions

1
changelog/7872.doc.rst Normal file
View File

@ -0,0 +1 @@
``_pytest.config.argparsing.Parser.addini()`` accepts explicit ``None`` and ``"string"``.

View File

@ -1402,7 +1402,7 @@ class Config:
elif type == "bool":
return _strtobool(str(value).strip())
else:
assert type is None
assert type in [None, "string"]
return value
def _getconftest_pathlist(

View File

@ -160,20 +160,23 @@ class Parser:
self,
name: str,
help: str,
type: Optional["Literal['pathlist', 'args', 'linelist', 'bool']"] = None,
type: Optional[
"Literal['string', 'pathlist', 'args', 'linelist', 'bool']"
] = None,
default=None,
) -> None:
"""Register an ini-file option.
:name: Name of the ini-variable.
:type: Type of the variable, can be ``pathlist``, ``args``, ``linelist``
or ``bool``.
:type: Type of the variable, can be ``string``, ``pathlist``, ``args``,
``linelist`` or ``bool``. Defaults to ``string`` if ``None`` or
not passed.
:default: Default value if no ini-file option exists but is queried.
The value of ini-variables can be retrieved via a call to
:py:func:`config.getini(name) <_pytest.config.Config.getini>`.
"""
assert type in (None, "pathlist", "args", "linelist", "bool")
assert type in (None, "string", "pathlist", "args", "linelist", "bool")
self._inidict[name] = (help, type, default)
self._ininames.append(name)

View File

@ -570,11 +570,17 @@ class TestConfigAPI:
assert pl[0] == tmpdir
assert pl[1] == somepath
def test_addini(self, testdir):
@pytest.mark.parametrize("maybe_type", ["not passed", "None", '"string"'])
def test_addini(self, testdir, maybe_type):
if maybe_type == "not passed":
type_string = ""
else:
type_string = f", {maybe_type}"
testdir.makeconftest(
"""
f"""
def pytest_addoption(parser):
parser.addini("myname", "my new ini value")
parser.addini("myname", "my new ini value"{type_string})
"""
)
testdir.makeini(