Merge pull request #4129 from nicoddemus/merge-master-into-features
Merge master into features (prepare for 3.9)
This commit is contained in:
commit
24c83d725a
|
@ -25,8 +25,6 @@ env:
|
|||
- TOXENV=py36-numpy
|
||||
- TOXENV=py36-pluggymaster PYTEST_NO_COVERAGE=1
|
||||
- TOXENV=py27-nobyte
|
||||
- TOXENV=doctesting
|
||||
- TOXENV=docs PYTEST_NO_COVERAGE=1
|
||||
|
||||
jobs:
|
||||
include:
|
||||
|
@ -61,7 +59,7 @@ jobs:
|
|||
env: TOXENV=py27
|
||||
- env: TOXENV=py34
|
||||
- env: TOXENV=py36
|
||||
- env: TOXENV=linting PYTEST_NO_COVERAGE=1
|
||||
- env: TOXENV=linting,docs,doctesting PYTEST_NO_COVERAGE=1
|
||||
|
||||
- stage: deploy
|
||||
python: '3.6'
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
environment:
|
||||
matrix:
|
||||
- TOXENV: "linting"
|
||||
- TOXENV: "linting,docs,doctesting"
|
||||
PYTEST_NO_COVERAGE: "1"
|
||||
- TOXENV: "py27"
|
||||
- TOXENV: "py34"
|
||||
|
@ -20,11 +20,8 @@ environment:
|
|||
- TOXENV: "py36-pluggymaster"
|
||||
PYTEST_NO_COVERAGE: "1"
|
||||
- TOXENV: "py27-nobyte"
|
||||
- TOXENV: "doctesting"
|
||||
- TOXENV: "py36-freeze"
|
||||
PYTEST_NO_COVERAGE: "1"
|
||||
- TOXENV: "docs"
|
||||
PYTEST_NO_COVERAGE: "1"
|
||||
|
||||
install:
|
||||
- echo Installed Pythons
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Update usefixtures documentation to clarify that it can't be used with fixture functions.
|
|
@ -0,0 +1 @@
|
|||
Fixed formatting of string literals in internal tests.
|
|
@ -245,9 +245,9 @@ class TestCustomAssertMsg(object):
|
|||
a = 1
|
||||
|
||||
b = 2
|
||||
assert A.a == b, (
|
||||
"A.a appears not to be b\n" "or does not appear to be b\none of those"
|
||||
)
|
||||
assert (
|
||||
A.a == b
|
||||
), "A.a appears not to be b\nor does not appear to be b\none of those"
|
||||
|
||||
def test_custom_repr(self):
|
||||
class JSON(object):
|
||||
|
|
|
@ -582,7 +582,7 @@ get on the terminal - we are working on that)::
|
|||
b = 2
|
||||
> assert (
|
||||
A.a == b
|
||||
), "A.a appears not to be b\n" "or does not appear to be b\none of those"
|
||||
), "A.a appears not to be b\nor does not appear to be b\none of those"
|
||||
E AssertionError: A.a appears not to be b
|
||||
E or does not appear to be b
|
||||
E one of those
|
||||
|
|
|
@ -178,7 +178,7 @@ Mark a test function as using the given fixture names.
|
|||
|
||||
.. warning::
|
||||
|
||||
This mark can be used with *test functions* only, having no affect when applied
|
||||
This mark has no effect when applied
|
||||
to a **fixture** function.
|
||||
|
||||
.. py:function:: pytest.mark.usefixtures(*names)
|
||||
|
|
|
@ -199,7 +199,7 @@ def _diff_text(left, right, verbose=False):
|
|||
if i > 42:
|
||||
i -= 10 # Provide some context
|
||||
explanation = [
|
||||
u("Skipping %s identical leading " "characters in diff, use -v to show")
|
||||
u("Skipping %s identical leading characters in diff, use -v to show")
|
||||
% i
|
||||
]
|
||||
left = left[i:]
|
||||
|
|
|
@ -343,7 +343,7 @@ def cacheshow(config, session):
|
|||
key = valpath.relative_to(vdir)
|
||||
val = config.cache.get(key, dummy)
|
||||
if val is dummy:
|
||||
tw.line("%s contains unreadable content, " "will be ignored" % key)
|
||||
tw.line("%s contains unreadable content, will be ignored" % key)
|
||||
else:
|
||||
tw.line("%s contains:" % key)
|
||||
for line in pformat(val).splitlines():
|
||||
|
|
|
@ -654,7 +654,7 @@ class DontReadFromInput(six.Iterator):
|
|||
return self
|
||||
|
||||
def fileno(self):
|
||||
raise UnsupportedOperation("redirected stdin is pseudofile, " "has no fileno()")
|
||||
raise UnsupportedOperation("redirected stdin is pseudofile, has no fileno()")
|
||||
|
||||
def isatty(self):
|
||||
return False
|
||||
|
|
|
@ -268,7 +268,7 @@ def get_real_func(obj):
|
|||
obj = new_obj
|
||||
else:
|
||||
raise ValueError(
|
||||
("could not find real function of {start}" "\nstopped at {current}").format(
|
||||
("could not find real function of {start}\nstopped at {current}").format(
|
||||
start=py.io.saferepr(start_obj), current=py.io.saferepr(obj)
|
||||
)
|
||||
)
|
||||
|
|
|
@ -92,7 +92,7 @@ RECORD_XML_PROPERTY = RemovedInPytest4Warning(
|
|||
)
|
||||
|
||||
COLLECTOR_MAKEITEM = RemovedInPytest4Warning(
|
||||
"pycollector makeitem was removed " "as it is an accidentially leaked internal api"
|
||||
"pycollector makeitem was removed as it is an accidentially leaked internal api"
|
||||
)
|
||||
|
||||
METAFUNC_ADD_CALL = RemovedInPytest4Warning(
|
||||
|
|
|
@ -139,7 +139,7 @@ def showhelp(config):
|
|||
tw.line()
|
||||
tw.line()
|
||||
tw.line(
|
||||
"[pytest] ini-options in the first " "pytest.ini|tox.ini|setup.cfg file found:"
|
||||
"[pytest] ini-options in the first pytest.ini|tox.ini|setup.cfg file found:"
|
||||
)
|
||||
tw.line()
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ def pytest_addoption(parser):
|
|||
"python_functions",
|
||||
type="args",
|
||||
default=["test"],
|
||||
help="prefixes or glob names for Python test function and " "method discovery",
|
||||
help="prefixes or glob names for Python test function and method discovery",
|
||||
)
|
||||
|
||||
group.addoption(
|
||||
|
|
|
@ -175,7 +175,7 @@ class WarningsChecker(WarningsRecorder):
|
|||
def __init__(self, expected_warning=None, match_expr=None):
|
||||
super(WarningsChecker, self).__init__()
|
||||
|
||||
msg = "exceptions must be old-style classes or " "derived from Warning, not %s"
|
||||
msg = "exceptions must be old-style classes or derived from Warning, not %s"
|
||||
if isinstance(expected_warning, tuple):
|
||||
for exc in expected_warning:
|
||||
if not inspect.isclass(exc):
|
||||
|
|
|
@ -835,9 +835,7 @@ def repr_pythonversion(v=None):
|
|||
|
||||
|
||||
def build_summary_stats_line(stats):
|
||||
keys = (
|
||||
"failed passed skipped deselected " "xfailed xpassed warnings error"
|
||||
).split()
|
||||
keys = ("failed passed skipped deselected xfailed xpassed warnings error").split()
|
||||
unknown_key_seen = False
|
||||
for key in stats.keys():
|
||||
if key not in keys:
|
||||
|
|
|
@ -628,7 +628,7 @@ class TestInvocationVariants(object):
|
|||
lib = ns.mkdir(dirname)
|
||||
lib.ensure("__init__.py")
|
||||
lib.join("test_{}.py".format(dirname)).write(
|
||||
"def test_{}(): pass\n" "def test_other():pass".format(dirname)
|
||||
"def test_{}(): pass\ndef test_other():pass".format(dirname)
|
||||
)
|
||||
|
||||
# The structure of the test directory is now:
|
||||
|
@ -717,10 +717,10 @@ class TestInvocationVariants(object):
|
|||
lib = foo.mkdir("bar")
|
||||
lib.ensure("__init__.py")
|
||||
lib.join("test_bar.py").write(
|
||||
"def test_bar(): pass\n" "def test_other(a_fixture):pass"
|
||||
"def test_bar(): pass\ndef test_other(a_fixture):pass"
|
||||
)
|
||||
lib.join("conftest.py").write(
|
||||
"import pytest\n" "@pytest.fixture\n" "def a_fixture():pass"
|
||||
"import pytest\n@pytest.fixture\ndef a_fixture():pass"
|
||||
)
|
||||
|
||||
d_local = testdir.mkdir("local")
|
||||
|
|
|
@ -26,10 +26,10 @@ def test_coloredlogformatter():
|
|||
formatter = ColoredLevelFormatter(tw, logfmt)
|
||||
output = formatter.format(record)
|
||||
assert output == (
|
||||
"dummypath 10 " "\x1b[32mINFO \x1b[0m Test Message"
|
||||
"dummypath 10 \x1b[32mINFO \x1b[0m Test Message"
|
||||
)
|
||||
|
||||
tw.hasmarkup = False
|
||||
formatter = ColoredLevelFormatter(tw, logfmt)
|
||||
output = formatter.format(record)
|
||||
assert output == ("dummypath 10 " "INFO Test Message")
|
||||
assert output == ("dummypath 10 INFO Test Message")
|
||||
|
|
|
@ -476,7 +476,7 @@ class TestPython(object):
|
|||
tnode.assert_attr(
|
||||
file="test_junit_prefixing.py",
|
||||
line="3",
|
||||
classname="xyz.test_junit_prefixing." "TestHello",
|
||||
classname="xyz.test_junit_prefixing.TestHello",
|
||||
name="test_hello",
|
||||
)
|
||||
|
||||
|
|
|
@ -147,7 +147,7 @@ class TestPDB(object):
|
|||
child = testdir.spawn_pytest("--pdb %s" % p1)
|
||||
child.expect(".*def test_1")
|
||||
child.expect(".*i = 0")
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
rest = child.read().decode("utf8")
|
||||
assert "1 failed" in rest
|
||||
|
@ -174,7 +174,7 @@ class TestPDB(object):
|
|||
"""
|
||||
)
|
||||
child = testdir.spawn_pytest("--pdb %s" % p1)
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendline("p self.filename")
|
||||
child.sendeof()
|
||||
rest = child.read().decode("utf8")
|
||||
|
@ -209,7 +209,7 @@ class TestPDB(object):
|
|||
child = testdir.spawn_pytest("--pdb %s" % p1)
|
||||
child.expect("captured stdout")
|
||||
child.expect("get rekt")
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
rest = child.read().decode("utf8")
|
||||
assert "1 failed" in rest
|
||||
|
@ -228,7 +228,7 @@ class TestPDB(object):
|
|||
child = testdir.spawn_pytest("--pdb %s" % p1)
|
||||
child.expect("captured stderr")
|
||||
child.expect("get rekt")
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
rest = child.read().decode("utf8")
|
||||
assert "1 failed" in rest
|
||||
|
@ -243,7 +243,7 @@ class TestPDB(object):
|
|||
"""
|
||||
)
|
||||
child = testdir.spawn_pytest("--pdb %s" % p1)
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
output = child.before.decode("utf8")
|
||||
child.sendeof()
|
||||
assert "captured stdout" not in output
|
||||
|
@ -266,7 +266,7 @@ class TestPDB(object):
|
|||
if showcapture in ("all", "log"):
|
||||
child.expect("captured log")
|
||||
child.expect("get rekt")
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
rest = child.read().decode("utf8")
|
||||
assert "1 failed" in rest
|
||||
|
@ -281,13 +281,11 @@ class TestPDB(object):
|
|||
assert False
|
||||
"""
|
||||
)
|
||||
child = testdir.spawn_pytest(
|
||||
"--show-capture=all --pdb " "-p no:logging %s" % p1
|
||||
)
|
||||
child = testdir.spawn_pytest("--show-capture=all --pdb -p no:logging %s" % p1)
|
||||
child.expect("get rekt")
|
||||
output = child.before.decode("utf8")
|
||||
assert "captured log" not in output
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
rest = child.read().decode("utf8")
|
||||
assert "1 failed" in rest
|
||||
|
@ -306,7 +304,7 @@ class TestPDB(object):
|
|||
child = testdir.spawn_pytest("--pdb %s" % p1)
|
||||
child.expect(".*def test_1")
|
||||
child.expect(".*pytest.raises.*globalfunc")
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendline("globalfunc")
|
||||
child.expect(".*function")
|
||||
child.sendeof()
|
||||
|
@ -322,7 +320,7 @@ class TestPDB(object):
|
|||
)
|
||||
child = testdir.spawn_pytest("--pdb %s" % p1)
|
||||
# child.expect(".*import pytest.*")
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
child.expect("1 error")
|
||||
self.flush(child)
|
||||
|
@ -337,7 +335,7 @@ class TestPDB(object):
|
|||
p1 = testdir.makepyfile("def test_func(): pass")
|
||||
child = testdir.spawn_pytest("--pdb %s" % p1)
|
||||
# child.expect(".*import pytest.*")
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
self.flush(child)
|
||||
|
||||
|
@ -355,7 +353,7 @@ class TestPDB(object):
|
|||
child = testdir.spawn_pytest(str(p1))
|
||||
child.expect("test_1")
|
||||
child.expect("x = 3")
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
rest = child.read().decode("utf-8")
|
||||
assert "1 failed" in rest
|
||||
|
@ -373,7 +371,7 @@ class TestPDB(object):
|
|||
)
|
||||
child = testdir.spawn_pytest(str(p1))
|
||||
child.expect("test_1")
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
rest = child.read().decode("utf8")
|
||||
assert "1 failed" in rest
|
||||
|
@ -448,10 +446,10 @@ class TestPDB(object):
|
|||
"""
|
||||
)
|
||||
child = testdir.spawn_pytest("--doctest-modules --pdb %s" % p1)
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendline("i")
|
||||
child.expect("0")
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
rest = child.read().decode("utf8")
|
||||
assert "1 failed" in rest
|
||||
|
@ -474,9 +472,10 @@ class TestPDB(object):
|
|||
child = testdir.spawn_pytest(str(p1))
|
||||
child.expect("test_1")
|
||||
child.expect("x = 3")
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendline("c")
|
||||
child.expect("x = 4")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
rest = child.read().decode("utf8")
|
||||
assert "1 failed" in rest
|
||||
|
@ -495,6 +494,7 @@ class TestPDB(object):
|
|||
)
|
||||
child = testdir.spawn("{} {}".format(sys.executable, p1))
|
||||
child.expect("x = 5")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
self.flush(child)
|
||||
|
||||
|
@ -511,6 +511,7 @@ class TestPDB(object):
|
|||
)
|
||||
child = testdir.spawn_pytest(str(p1))
|
||||
child.expect("x = 5")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
self.flush(child)
|
||||
|
||||
|
@ -690,7 +691,7 @@ class TestDebuggingBreakpoints(object):
|
|||
)
|
||||
child = testdir.spawn_pytest(str(p1))
|
||||
child.expect("test_1")
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
rest = child.read().decode("utf8")
|
||||
assert "1 failed" in rest
|
||||
|
@ -710,7 +711,7 @@ class TestDebuggingBreakpoints(object):
|
|||
)
|
||||
child = testdir.spawn_pytest(str(p1))
|
||||
child.expect("test_1")
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
rest = child.read().decode("utf8")
|
||||
assert "1 failed" in rest
|
||||
|
@ -728,7 +729,7 @@ class TestTraceOption:
|
|||
)
|
||||
child = testdir.spawn_pytest("--trace " + str(p1))
|
||||
child.expect("test_1")
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
rest = child.read().decode("utf8")
|
||||
assert "1 passed" in rest
|
||||
|
@ -747,7 +748,7 @@ class TestTraceOption:
|
|||
)
|
||||
child = testdir.spawn_pytest("--trace " + str(p1))
|
||||
child.expect("is_equal")
|
||||
child.expect("(Pdb)")
|
||||
child.expect("Pdb")
|
||||
child.sendeof()
|
||||
rest = child.read().decode("utf8")
|
||||
assert "1 passed" in rest
|
||||
|
|
Loading…
Reference in New Issue