Change ``--strict`` to ``--strict-markers``, preserving the old one
Fix #5023
This commit is contained in:
parent
ceca35b94a
commit
685ca96c71
|
@ -0,0 +1 @@
|
||||||
|
``--strict`` is now called ``--strict-markers`` as it is more explicit about what it does. The old name still works for backward compatibility.
|
|
@ -259,7 +259,7 @@ For an example on how to add and work with markers from a plugin, see
|
||||||
* Asking for existing markers via ``pytest --markers`` gives good output
|
* Asking for existing markers via ``pytest --markers`` gives good output
|
||||||
|
|
||||||
* Typos in function markers are treated as an error if you use
|
* Typos in function markers are treated as an error if you use
|
||||||
the ``--strict`` option.
|
the ``--strict-markers`` option.
|
||||||
|
|
||||||
.. _`scoped-marking`:
|
.. _`scoped-marking`:
|
||||||
|
|
||||||
|
|
|
@ -41,15 +41,15 @@ marks by registering them in ``pytest.ini`` like this:
|
||||||
slow
|
slow
|
||||||
serial
|
serial
|
||||||
|
|
||||||
When the ``--strict`` command-line flag is passed, any unknown marks applied
|
When the ``--strict-markers`` command-line flag is passed, any unknown marks applied
|
||||||
with the ``@pytest.mark.name_of_the_mark`` decorator will trigger an error.
|
with the ``@pytest.mark.name_of_the_mark`` decorator will trigger an error.
|
||||||
Marks added by pytest or by a plugin instead of the decorator will not trigger
|
Marks added by pytest or by a plugin instead of the decorator will not trigger
|
||||||
this error. To enforce validation of markers, add ``--strict`` to ``addopts``:
|
this error. To enforce validation of markers, add ``--strict-markers`` to ``addopts``:
|
||||||
|
|
||||||
.. code-block:: ini
|
.. code-block:: ini
|
||||||
|
|
||||||
[pytest]
|
[pytest]
|
||||||
addopts = --strict
|
addopts = --strict-markers
|
||||||
markers =
|
markers =
|
||||||
slow
|
slow
|
||||||
serial
|
serial
|
||||||
|
|
|
@ -1261,19 +1261,24 @@ passed multiple times. The expected format is ``name=value``. For example::
|
||||||
|
|
||||||
.. confval:: markers
|
.. confval:: markers
|
||||||
|
|
||||||
When the ``--strict`` command-line argument is used, only known markers -
|
When the ``--strict-markers`` command-line argument is used, only known markers -
|
||||||
defined in code by core pytest or some plugin - are allowed.
|
defined in code by core pytest or some plugin - are allowed.
|
||||||
You can list additional markers in this setting to add them to the whitelist.
|
|
||||||
|
|
||||||
You can list one marker name per line, indented from the option name.
|
You can list additional markers in this setting to add them to the whitelist,
|
||||||
|
in which case you probably want to add ``--strict-markers`` to ``addopts``
|
||||||
|
to avoid future regressions:
|
||||||
|
|
||||||
.. code-block:: ini
|
.. code-block:: ini
|
||||||
|
|
||||||
[pytest]
|
[pytest]
|
||||||
|
addopts = --strict-markers
|
||||||
markers =
|
markers =
|
||||||
slow
|
slow
|
||||||
serial
|
serial
|
||||||
|
|
||||||
|
**Note**: This option was previously called ``--strict``, which is now an
|
||||||
|
alias preserved for backward compatibility.
|
||||||
|
|
||||||
.. confval:: minversion
|
.. confval:: minversion
|
||||||
|
|
||||||
Specifies a minimal pytest version required for running tests.
|
Specifies a minimal pytest version required for running tests.
|
||||||
|
|
|
@ -47,11 +47,6 @@ def pytest_addoption(parser):
|
||||||
type="args",
|
type="args",
|
||||||
default=[],
|
default=[],
|
||||||
)
|
)
|
||||||
# parser.addini("dirpatterns",
|
|
||||||
# "patterns specifying possible locations of test files",
|
|
||||||
# type="linelist", default=["**/test_*.txt",
|
|
||||||
# "**/test_*.py", "**/*_test.py"]
|
|
||||||
# )
|
|
||||||
group = parser.getgroup("general", "running and selection options")
|
group = parser.getgroup("general", "running and selection options")
|
||||||
group._addoption(
|
group._addoption(
|
||||||
"-x",
|
"-x",
|
||||||
|
@ -71,9 +66,10 @@ def pytest_addoption(parser):
|
||||||
help="exit after first num failures or errors.",
|
help="exit after first num failures or errors.",
|
||||||
)
|
)
|
||||||
group._addoption(
|
group._addoption(
|
||||||
|
"--strict-markers",
|
||||||
"--strict",
|
"--strict",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
help="marks not registered in configuration file raise errors.",
|
help="markers not registered in the `markers` section of the configuration file raise errors.",
|
||||||
)
|
)
|
||||||
group._addoption(
|
group._addoption(
|
||||||
"-c",
|
"-c",
|
||||||
|
|
|
@ -311,8 +311,11 @@ class MarkGenerator(object):
|
||||||
# If the name is not in the set of known marks after updating,
|
# If the name is not in the set of known marks after updating,
|
||||||
# then it really is time to issue a warning or an error.
|
# then it really is time to issue a warning or an error.
|
||||||
if name not in self._markers:
|
if name not in self._markers:
|
||||||
if self._config.option.strict:
|
if self._config.option.strict_markers:
|
||||||
fail("{!r} is not a registered marker".format(name), pytrace=False)
|
fail(
|
||||||
|
"{!r} not found in `markers` configuration option".format(name),
|
||||||
|
pytrace=False,
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
warnings.warn(
|
warnings.warn(
|
||||||
"Unknown pytest.mark.%s - is this a typo? You can register "
|
"Unknown pytest.mark.%s - is this a typo? You can register "
|
||||||
|
|
|
@ -130,7 +130,7 @@ def test_ini_markers_whitespace(testdir):
|
||||||
assert True
|
assert True
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
rec = testdir.inline_run("--strict", "-m", "a1")
|
rec = testdir.inline_run("--strict-markers", "-m", "a1")
|
||||||
rec.assertoutcome(passed=1)
|
rec.assertoutcome(passed=1)
|
||||||
|
|
||||||
|
|
||||||
|
@ -150,7 +150,7 @@ def test_marker_without_description(testdir):
|
||||||
)
|
)
|
||||||
ftdir = testdir.mkdir("ft1_dummy")
|
ftdir = testdir.mkdir("ft1_dummy")
|
||||||
testdir.tmpdir.join("conftest.py").move(ftdir.join("conftest.py"))
|
testdir.tmpdir.join("conftest.py").move(ftdir.join("conftest.py"))
|
||||||
rec = testdir.runpytest("--strict")
|
rec = testdir.runpytest("--strict-markers")
|
||||||
rec.assert_outcomes()
|
rec.assert_outcomes()
|
||||||
|
|
||||||
|
|
||||||
|
@ -194,7 +194,8 @@ def test_mark_on_pseudo_function(testdir):
|
||||||
reprec.assertoutcome(passed=1)
|
reprec.assertoutcome(passed=1)
|
||||||
|
|
||||||
|
|
||||||
def test_strict_prohibits_unregistered_markers(testdir):
|
@pytest.mark.parametrize("option_name", ["--strict-markers", "--strict"])
|
||||||
|
def test_strict_prohibits_unregistered_markers(testdir, option_name):
|
||||||
testdir.makepyfile(
|
testdir.makepyfile(
|
||||||
"""
|
"""
|
||||||
import pytest
|
import pytest
|
||||||
|
@ -203,9 +204,11 @@ def test_strict_prohibits_unregistered_markers(testdir):
|
||||||
pass
|
pass
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
result = testdir.runpytest("--strict")
|
result = testdir.runpytest(option_name)
|
||||||
assert result.ret != 0
|
assert result.ret != 0
|
||||||
result.stdout.fnmatch_lines(["'unregisteredmark' is not a registered marker"])
|
result.stdout.fnmatch_lines(
|
||||||
|
["'unregisteredmark' not found in `markers` configuration option"]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
|
|
|
@ -76,7 +76,7 @@ def broken_testdir(testdir):
|
||||||
|
|
||||||
|
|
||||||
def test_run_without_stepwise(stepwise_testdir):
|
def test_run_without_stepwise(stepwise_testdir):
|
||||||
result = stepwise_testdir.runpytest("-v", "--strict", "--fail")
|
result = stepwise_testdir.runpytest("-v", "--strict-markers", "--fail")
|
||||||
|
|
||||||
result.stdout.fnmatch_lines(["*test_success_before_fail PASSED*"])
|
result.stdout.fnmatch_lines(["*test_success_before_fail PASSED*"])
|
||||||
result.stdout.fnmatch_lines(["*test_fail_on_flag FAILED*"])
|
result.stdout.fnmatch_lines(["*test_fail_on_flag FAILED*"])
|
||||||
|
@ -85,7 +85,9 @@ def test_run_without_stepwise(stepwise_testdir):
|
||||||
|
|
||||||
def test_fail_and_continue_with_stepwise(stepwise_testdir):
|
def test_fail_and_continue_with_stepwise(stepwise_testdir):
|
||||||
# Run the tests with a failing second test.
|
# Run the tests with a failing second test.
|
||||||
result = stepwise_testdir.runpytest("-v", "--strict", "--stepwise", "--fail")
|
result = stepwise_testdir.runpytest(
|
||||||
|
"-v", "--strict-markers", "--stepwise", "--fail"
|
||||||
|
)
|
||||||
assert not result.stderr.str()
|
assert not result.stderr.str()
|
||||||
|
|
||||||
stdout = result.stdout.str()
|
stdout = result.stdout.str()
|
||||||
|
@ -95,7 +97,7 @@ def test_fail_and_continue_with_stepwise(stepwise_testdir):
|
||||||
assert "test_success_after_fail" not in stdout
|
assert "test_success_after_fail" not in stdout
|
||||||
|
|
||||||
# "Fix" the test that failed in the last run and run it again.
|
# "Fix" the test that failed in the last run and run it again.
|
||||||
result = stepwise_testdir.runpytest("-v", "--strict", "--stepwise")
|
result = stepwise_testdir.runpytest("-v", "--strict-markers", "--stepwise")
|
||||||
assert not result.stderr.str()
|
assert not result.stderr.str()
|
||||||
|
|
||||||
stdout = result.stdout.str()
|
stdout = result.stdout.str()
|
||||||
|
@ -107,7 +109,12 @@ def test_fail_and_continue_with_stepwise(stepwise_testdir):
|
||||||
|
|
||||||
def test_run_with_skip_option(stepwise_testdir):
|
def test_run_with_skip_option(stepwise_testdir):
|
||||||
result = stepwise_testdir.runpytest(
|
result = stepwise_testdir.runpytest(
|
||||||
"-v", "--strict", "--stepwise", "--stepwise-skip", "--fail", "--fail-last"
|
"-v",
|
||||||
|
"--strict-markers",
|
||||||
|
"--stepwise",
|
||||||
|
"--stepwise-skip",
|
||||||
|
"--fail",
|
||||||
|
"--fail-last",
|
||||||
)
|
)
|
||||||
assert not result.stderr.str()
|
assert not result.stderr.str()
|
||||||
|
|
||||||
|
@ -120,7 +127,7 @@ def test_run_with_skip_option(stepwise_testdir):
|
||||||
|
|
||||||
|
|
||||||
def test_fail_on_errors(error_testdir):
|
def test_fail_on_errors(error_testdir):
|
||||||
result = error_testdir.runpytest("-v", "--strict", "--stepwise")
|
result = error_testdir.runpytest("-v", "--strict-markers", "--stepwise")
|
||||||
|
|
||||||
assert not result.stderr.str()
|
assert not result.stderr.str()
|
||||||
stdout = result.stdout.str()
|
stdout = result.stdout.str()
|
||||||
|
@ -131,7 +138,7 @@ def test_fail_on_errors(error_testdir):
|
||||||
|
|
||||||
def test_change_testfile(stepwise_testdir):
|
def test_change_testfile(stepwise_testdir):
|
||||||
result = stepwise_testdir.runpytest(
|
result = stepwise_testdir.runpytest(
|
||||||
"-v", "--strict", "--stepwise", "--fail", "test_a.py"
|
"-v", "--strict-markers", "--stepwise", "--fail", "test_a.py"
|
||||||
)
|
)
|
||||||
assert not result.stderr.str()
|
assert not result.stderr.str()
|
||||||
|
|
||||||
|
@ -140,7 +147,9 @@ def test_change_testfile(stepwise_testdir):
|
||||||
|
|
||||||
# Make sure the second test run starts from the beginning, since the
|
# Make sure the second test run starts from the beginning, since the
|
||||||
# test to continue from does not exist in testfile_b.
|
# test to continue from does not exist in testfile_b.
|
||||||
result = stepwise_testdir.runpytest("-v", "--strict", "--stepwise", "test_b.py")
|
result = stepwise_testdir.runpytest(
|
||||||
|
"-v", "--strict-markers", "--stepwise", "test_b.py"
|
||||||
|
)
|
||||||
assert not result.stderr.str()
|
assert not result.stderr.str()
|
||||||
|
|
||||||
stdout = result.stdout.str()
|
stdout = result.stdout.str()
|
||||||
|
@ -149,7 +158,11 @@ def test_change_testfile(stepwise_testdir):
|
||||||
|
|
||||||
def test_stop_on_collection_errors(broken_testdir):
|
def test_stop_on_collection_errors(broken_testdir):
|
||||||
result = broken_testdir.runpytest(
|
result = broken_testdir.runpytest(
|
||||||
"-v", "--strict", "--stepwise", "working_testfile.py", "broken_testfile.py"
|
"-v",
|
||||||
|
"--strict-markers",
|
||||||
|
"--stepwise",
|
||||||
|
"working_testfile.py",
|
||||||
|
"broken_testfile.py",
|
||||||
)
|
)
|
||||||
|
|
||||||
stdout = result.stdout.str()
|
stdout = result.stdout.str()
|
||||||
|
|
|
@ -302,7 +302,7 @@ def test_filterwarnings_mark_registration(testdir):
|
||||||
pass
|
pass
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
result = testdir.runpytest("--strict")
|
result = testdir.runpytest("--strict-markers")
|
||||||
assert result.ret == 0
|
assert result.ret == 0
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue