Merge master into features
Conflicts: src/_pytest/debugging.py
This commit is contained in:
@@ -15,7 +15,7 @@ class TestMetafunc:
|
||||
def Metafunc(self, func, config=None):
|
||||
# the unit tests of this class check if things work correctly
|
||||
# on the funcarg level, so we don't need a full blown
|
||||
# initiliazation
|
||||
# initialization
|
||||
class FixtureInfo:
|
||||
name2fixturedefs = None
|
||||
|
||||
|
||||
@@ -482,7 +482,7 @@ class TestFunctional:
|
||||
items, rec = testdir.inline_genitems(p)
|
||||
base_item, sub_item, sub_item_other = items
|
||||
print(items, [x.nodeid for x in items])
|
||||
# new api seregates
|
||||
# new api segregates
|
||||
assert not list(base_item.iter_markers(name="b"))
|
||||
assert not list(sub_item_other.iter_markers(name="b"))
|
||||
assert list(sub_item.iter_markers(name="b"))
|
||||
|
||||
@@ -229,7 +229,7 @@ def test_nose_setup_ordering(testdir):
|
||||
|
||||
def test_apiwrapper_problem_issue260(testdir):
|
||||
# this would end up trying a call an optional teardown on the class
|
||||
# for plain unittests we dont want nose behaviour
|
||||
# for plain unittests we don't want nose behaviour
|
||||
testdir.makepyfile(
|
||||
"""
|
||||
import unittest
|
||||
|
||||
@@ -304,7 +304,7 @@ def test_argcomplete(testdir, monkeypatch):
|
||||
shlex.quote(sys.executable)
|
||||
)
|
||||
)
|
||||
# alternative would be exteneded Testdir.{run(),_run(),popen()} to be able
|
||||
# alternative would be extended Testdir.{run(),_run(),popen()} to be able
|
||||
# to handle a keyword argument env that replaces os.environ in popen or
|
||||
# extends the copy, advantage: could not forget to restore
|
||||
monkeypatch.setenv("_ARGCOMPLETE", "1")
|
||||
|
||||
@@ -603,7 +603,7 @@ class TestPDB:
|
||||
# No extra newline.
|
||||
assert child.before.endswith(b"c\r\nprint_from_foo\r\n")
|
||||
|
||||
# set_debug should not raise outcomes.Exit, if used recrursively.
|
||||
# set_debug should not raise outcomes. Exit, if used recursively.
|
||||
child.sendline("debug 42")
|
||||
child.sendline("q")
|
||||
child.expect("LEAVING RECURSIVE DEBUGGER")
|
||||
@@ -1047,6 +1047,51 @@ class TestTraceOption:
|
||||
assert "Exit: Quitting debugger" not in child.before.decode("utf8")
|
||||
TestPDB.flush(child)
|
||||
|
||||
def test_trace_with_parametrize_handles_shared_fixtureinfo(self, testdir):
|
||||
p1 = testdir.makepyfile(
|
||||
"""
|
||||
import pytest
|
||||
@pytest.mark.parametrize('myparam', [1,2])
|
||||
def test_1(myparam, request):
|
||||
assert myparam in (1, 2)
|
||||
assert request.function.__name__ == "test_1"
|
||||
@pytest.mark.parametrize('func', [1,2])
|
||||
def test_func(func, request):
|
||||
assert func in (1, 2)
|
||||
assert request.function.__name__ == "test_func"
|
||||
@pytest.mark.parametrize('myparam', [1,2])
|
||||
def test_func_kw(myparam, request, func="func_kw"):
|
||||
assert myparam in (1, 2)
|
||||
assert func == "func_kw"
|
||||
assert request.function.__name__ == "test_func_kw"
|
||||
"""
|
||||
)
|
||||
child = testdir.spawn_pytest("--trace " + str(p1))
|
||||
for func, argname in [
|
||||
("test_1", "myparam"),
|
||||
("test_func", "func"),
|
||||
("test_func_kw", "myparam"),
|
||||
]:
|
||||
child.expect_exact("> PDB runcall (IO-capturing turned off) >")
|
||||
child.expect_exact(func)
|
||||
child.expect_exact("Pdb")
|
||||
child.sendline("args")
|
||||
child.expect_exact("{} = 1\r\n".format(argname))
|
||||
child.expect_exact("Pdb")
|
||||
child.sendline("c")
|
||||
child.expect_exact("Pdb")
|
||||
child.sendline("args")
|
||||
child.expect_exact("{} = 2\r\n".format(argname))
|
||||
child.expect_exact("Pdb")
|
||||
child.sendline("c")
|
||||
child.expect_exact("> PDB continue (IO-capturing resumed) >")
|
||||
rest = child.read().decode("utf8")
|
||||
assert "6 passed in" in rest
|
||||
assert "reading from stdin while output" not in rest
|
||||
# Only printed once - not on stderr.
|
||||
assert "Exit: Quitting debugger" not in child.before.decode("utf8")
|
||||
TestPDB.flush(child)
|
||||
|
||||
|
||||
def test_trace_after_runpytest(testdir):
|
||||
"""Test that debugging's pytest_configure is re-entrant."""
|
||||
@@ -1172,7 +1217,6 @@ def test_pdbcls_via_local_module(testdir):
|
||||
|
||||
def runcall(self, *args, **kwds):
|
||||
print("runcall_called", args, kwds)
|
||||
assert "func" in kwds
|
||||
""",
|
||||
)
|
||||
result = testdir.runpytest(
|
||||
|
||||
@@ -4,7 +4,7 @@ import pytest
|
||||
@pytest.fixture
|
||||
def stepwise_testdir(testdir):
|
||||
# Rather than having to modify our testfile between tests, we introduce
|
||||
# a flag for wether or not the second test should fail.
|
||||
# a flag for whether or not the second test should fail.
|
||||
testdir.makeconftest(
|
||||
"""
|
||||
def pytest_addoption(parser):
|
||||
|
||||
Reference in New Issue
Block a user