testing/test_runner: make SetupState tests use a proper SetupState

Previously the tests (probably unintentionally) mixed a fresh SetupState
and the generated item Session's SetupState, which led to some serious
head scratching when prodding it a bit.
This commit is contained in:
Ran Benita 2021-01-01 15:53:38 +02:00
parent 0d4121d24b
commit c83d030028
1 changed files with 10 additions and 8 deletions

View File

@ -22,8 +22,8 @@ from _pytest.pytester import Pytester
class TestSetupState: class TestSetupState:
def test_setup(self, pytester: Pytester) -> None: def test_setup(self, pytester: Pytester) -> None:
ss = runner.SetupState()
item = pytester.getitem("def test_func(): pass") item = pytester.getitem("def test_func(): pass")
ss = item.session._setupstate
values = [1] values = [1]
ss.prepare(item) ss.prepare(item)
ss.addfinalizer(values.pop, colitem=item) ss.addfinalizer(values.pop, colitem=item)
@ -33,7 +33,7 @@ class TestSetupState:
def test_teardown_exact_stack_empty(self, pytester: Pytester) -> None: def test_teardown_exact_stack_empty(self, pytester: Pytester) -> None:
item = pytester.getitem("def test_func(): pass") item = pytester.getitem("def test_func(): pass")
ss = runner.SetupState() ss = item.session._setupstate
ss.prepare(item) ss.prepare(item)
ss.teardown_exact(None) ss.teardown_exact(None)
ss.teardown_exact(None) ss.teardown_exact(None)
@ -47,9 +47,11 @@ class TestSetupState:
def test_func(): pass def test_func(): pass
""" """
) )
ss = runner.SetupState() ss = item.session._setupstate
pytest.raises(ValueError, lambda: ss.prepare(item)) with pytest.raises(ValueError):
pytest.raises(ValueError, lambda: ss.prepare(item)) ss.prepare(item)
with pytest.raises(ValueError):
ss.prepare(item)
def test_teardown_multiple_one_fails(self, pytester: Pytester) -> None: def test_teardown_multiple_one_fails(self, pytester: Pytester) -> None:
r = [] r = []
@ -64,7 +66,7 @@ class TestSetupState:
r.append("fin3") r.append("fin3")
item = pytester.getitem("def test_func(): pass") item = pytester.getitem("def test_func(): pass")
ss = runner.SetupState() ss = item.session._setupstate
ss.prepare(item) ss.prepare(item)
ss.addfinalizer(fin1, item) ss.addfinalizer(fin1, item)
ss.addfinalizer(fin2, item) ss.addfinalizer(fin2, item)
@ -84,7 +86,7 @@ class TestSetupState:
raise Exception("oops2") raise Exception("oops2")
item = pytester.getitem("def test_func(): pass") item = pytester.getitem("def test_func(): pass")
ss = runner.SetupState() ss = item.session._setupstate
ss.prepare(item) ss.prepare(item)
ss.addfinalizer(fin1, item) ss.addfinalizer(fin1, item)
ss.addfinalizer(fin2, item) ss.addfinalizer(fin2, item)
@ -102,7 +104,7 @@ class TestSetupState:
module_teardown.append("fin_module") module_teardown.append("fin_module")
item = pytester.getitem("def test_func(): pass") item = pytester.getitem("def test_func(): pass")
ss = runner.SetupState() ss = item.session._setupstate
ss.addfinalizer(fin_module, item.listchain()[-2]) ss.addfinalizer(fin_module, item.listchain()[-2])
ss.addfinalizer(fin_func, item) ss.addfinalizer(fin_func, item)
ss.prepare(item) ss.prepare(item)