Make InvocationParams.args a tuple
This avoids mutating the original list to reflect on InvocationParams, which is supposed to be an immutable snapshot of the state of pytest.main() at the moment of invocation (see pytest-dev/pytest-xdist#478).
This commit is contained in:
@@ -7,6 +7,7 @@ import _pytest._code
|
||||
import pytest
|
||||
from _pytest.compat import importlib_metadata
|
||||
from _pytest.config import _iter_rewritable_modules
|
||||
from _pytest.config import Config
|
||||
from _pytest.config.exceptions import UsageError
|
||||
from _pytest.config.findpaths import determine_setup
|
||||
from _pytest.config.findpaths import get_common_ancestor
|
||||
@@ -456,7 +457,7 @@ class TestConfigFromdictargs:
|
||||
|
||||
config = Config.fromdictargs(option_dict, args)
|
||||
assert config.args == ["a", "b"]
|
||||
assert config.invocation_params.args == args
|
||||
assert config.invocation_params.args == tuple(args)
|
||||
assert config.option.verbose == 4
|
||||
assert config.option.capture == "no"
|
||||
|
||||
@@ -1235,7 +1236,7 @@ def test_invocation_args(testdir):
|
||||
call = calls[0]
|
||||
config = call.item.config
|
||||
|
||||
assert config.invocation_params.args == [p, "-v"]
|
||||
assert config.invocation_params.args == (p, "-v")
|
||||
assert config.invocation_params.dir == Path(str(testdir.tmpdir))
|
||||
|
||||
plugins = config.invocation_params.plugins
|
||||
@@ -1243,6 +1244,10 @@ def test_invocation_args(testdir):
|
||||
assert plugins[0] is plugin
|
||||
assert type(plugins[1]).__name__ == "Collect" # installed by testdir.inline_run()
|
||||
|
||||
# args cannot be None
|
||||
with pytest.raises(TypeError):
|
||||
Config.InvocationParams(args=None, plugins=None, dir=Path())
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"plugin",
|
||||
|
||||
Reference in New Issue
Block a user