Bug Fix 11282: config.getini returns an empty list for an option of type string absent in INI file

This commit is contained in:
TanyaAgarwal28 2023-10-11 12:06:51 +05:30
parent c52659458b
commit 6c1eaf6e7f
3 changed files with 28 additions and 0 deletions

View File

@ -0,0 +1 @@
Return "None" as the default value if "None" or no default value if provided by the developer.In this approach, existing calls to the getini function would need to check for "None" values.

View File

@ -1525,6 +1525,8 @@ class Config:
return default
if type is None:
return ""
if type == "string":
return None
return []
else:
value = override_value

View File

@ -221,6 +221,31 @@ def test_setinitial_conftest_subdirs(pytester: Pytester, name: str) -> None:
assert len(set(pm.get_plugins()) - {pm}) == 0
def test_my_option(pytester: Pytester):
testdir = pytester.mkdir("test_my_option")
testdir.joinpath("conftest.py").write_text(
textwrap.dedent(
"""\
def pytest_addoption(parser):
parser.addini(
"my_option",
type="string",
default=None,
help="My option",
)
@pytest.fixture(scope='session')
def my_option(request):
return request.config.getini("my_option")
"""
),
encoding="utf-8",
)
result = pytester.runpytest(str(testdir))
assert result.ret == 0
captured_stdout = result.stdout.str()
assert "1 passed" in captured_stdout
def test_conftest_confcutdir(pytester: Pytester) -> None:
pytester.makeconftest("assert 0")
x = pytester.mkdir("x")