Merge remote-tracking branch 'upstream/master' into features
This commit is contained in:
commit
d9aaab7ab2
|
@ -129,7 +129,7 @@ if _PY3:
|
|||
STRING_TYPES = bytes, str
|
||||
UNICODE_TYPES = str,
|
||||
|
||||
def _escape_strings(val):
|
||||
def _ascii_escaped(val):
|
||||
"""If val is pure ascii, returns it as a str(). Otherwise, escapes
|
||||
bytes objects into a sequence of escaped bytes:
|
||||
|
||||
|
@ -163,7 +163,7 @@ else:
|
|||
|
||||
from itertools import imap, izip # NOQA
|
||||
|
||||
def _escape_strings(val):
|
||||
def _ascii_escaped(val):
|
||||
"""In py2 bytes and str are the same type, so return if it's a bytes
|
||||
object, return it unchanged if it is a full ascii string,
|
||||
otherwise escape it into its binary form.
|
||||
|
|
|
@ -60,9 +60,17 @@ def pytest_addoption(parser):
|
|||
|
||||
@hookspec(historic=True)
|
||||
def pytest_configure(config):
|
||||
""" called after command line options have been parsed
|
||||
and all plugins and initial conftest files been loaded.
|
||||
This hook is called for every plugin.
|
||||
"""
|
||||
Allows plugins and conftest files to perform initial configuration.
|
||||
|
||||
This hook is called for every plugin and initial conftest file
|
||||
after command line options have been parsed.
|
||||
|
||||
After that, the hook is called for other conftest files as they are
|
||||
imported.
|
||||
|
||||
:arg config: pytest config object
|
||||
:type config: _pytest.config.Config
|
||||
"""
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
|
|
|
@ -45,7 +45,7 @@ def pytest_addoption(parser):
|
|||
action="store", type=int, dest="maxfail", default=0,
|
||||
help="exit after first num failures or errors.")
|
||||
group._addoption('--strict', action="store_true",
|
||||
help="run pytest in strict mode, warnings become errors.")
|
||||
help="marks not registered in configuration file raise errors.")
|
||||
group._addoption("-c", metavar="file", type=str, dest="inifilename",
|
||||
help="load configuration from `file` instead of trying to locate one of the implicit configuration files.")
|
||||
group._addoption("--continue-on-collection-errors", action="store_true",
|
||||
|
|
|
@ -17,7 +17,7 @@ import _pytest._pluggy as pluggy
|
|||
from _pytest import fixtures
|
||||
from _pytest import main
|
||||
from _pytest.compat import (
|
||||
isclass, isfunction, is_generator, _escape_strings,
|
||||
isclass, isfunction, is_generator, _ascii_escaped,
|
||||
REGEX_TYPE, STRING_TYPES, NoneType, NOTSET,
|
||||
get_real_func, getfslineno, safe_getattr,
|
||||
safe_str, getlocation, enum,
|
||||
|
@ -909,7 +909,7 @@ def _idval(val, argname, idx, idfn, config=None):
|
|||
msg += '\nUpdate your code as this will raise an error in pytest-4.0.'
|
||||
warnings.warn(msg, DeprecationWarning)
|
||||
if s:
|
||||
return _escape_strings(s)
|
||||
return _ascii_escaped(s)
|
||||
|
||||
if config:
|
||||
hook_id = config.hook.pytest_make_parametrize_id(
|
||||
|
@ -918,11 +918,11 @@ def _idval(val, argname, idx, idfn, config=None):
|
|||
return hook_id
|
||||
|
||||
if isinstance(val, STRING_TYPES):
|
||||
return _escape_strings(val)
|
||||
return _ascii_escaped(val)
|
||||
elif isinstance(val, (float, int, bool, NoneType)):
|
||||
return str(val)
|
||||
elif isinstance(val, REGEX_TYPE):
|
||||
return _escape_strings(val.pattern)
|
||||
return _ascii_escaped(val.pattern)
|
||||
elif enum is not None and isinstance(val, enum.Enum):
|
||||
return str(val)
|
||||
elif isclass(val) and hasattr(val, '__name__'):
|
||||
|
@ -938,7 +938,7 @@ def _idvalset(idx, parameterset, argnames, idfn, ids, config=None):
|
|||
for val, argname in zip(parameterset.values, argnames)]
|
||||
return "-".join(this_id)
|
||||
else:
|
||||
return _escape_strings(ids[idx])
|
||||
return _ascii_escaped(ids[idx])
|
||||
|
||||
|
||||
def idmaker(argnames, parametersets, idfn=None, ids=None, config=None):
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Update help message for ``--strict`` to make it clear it only deals with unregistered markers, not warnings.
|
|
@ -0,0 +1 @@
|
|||
Renamed the utility function `_pytest.compat._escape_strings` to `_ascii_escaped` to better communicate the function's purpose.
|
|
@ -0,0 +1 @@
|
|||
Clarify ``pytest_configure`` hook call order.
|
|
@ -223,13 +223,12 @@ For an example on how to add and work with markers from a plugin, see
|
|||
|
||||
It is recommended to explicitly register markers so that:
|
||||
|
||||
* there is one place in your test suite defining your markers
|
||||
* There is one place in your test suite defining your markers
|
||||
|
||||
* 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
|
||||
the ``--strict`` option. Future versions of ``pytest`` are probably
|
||||
going to start treating non-registered markers as errors at some point.
|
||||
* Typos in function markers are treated as an error if you use
|
||||
the ``--strict`` option.
|
||||
|
||||
.. _`scoped-marking`:
|
||||
|
||||
|
|
|
@ -576,7 +576,7 @@ class TestSkip(object):
|
|||
def test_hello():
|
||||
pass
|
||||
""")
|
||||
result = testdir.runpytest("-rs --strict")
|
||||
result = testdir.runpytest("-rs")
|
||||
result.stdout.fnmatch_lines([
|
||||
"*unconditional skip*",
|
||||
"*1 skipped*",
|
||||
|
|
Loading…
Reference in New Issue