3 new commits in pytest: https://bitbucket.org/hpk42/pytest/commits/ff8010f92f73/ Changeset: ff8010f92f73 Branch: multi-level-fixture-deps-override User: bubenkoff Date: 2013-11-12 13:35:32 Summary: initial Affected #: 0 files
https://bitbucket.org/hpk42/pytest/commits/809280e02a02/ Changeset: 809280e02a02 Branch: multi-level-fixture-deps-override User: bubenkoff Date: 2013-11-12 13:45:36 Summary: use deepest fixturedef for fixture closure Affected #: 2 files diff -r ff8010f92f73eb96ae8de39928c5ea228591981f -r 809280e02a0237f3710bc5560ecddec4033ef4f1 _pytest/python.py --- a/_pytest/python.py +++ b/_pytest/python.py @@ -1556,8 +1556,7 @@ fixturedefs = self.getfixturedefs(argname, parentid) arg2fixturedefs[argname] = fixturedefs if fixturedefs is not None: - for fixturedef in fixturedefs: - merge(fixturedef.argnames) + merge(fixturedefs[-1].argnames) return fixturenames_closure, arg2fixturedefs def pytest_generate_tests(self, metafunc): diff -r ff8010f92f73eb96ae8de39928c5ea228591981f -r 809280e02a0237f3710bc5560ecddec4033ef4f1 testing/test_conftest.py --- a/testing/test_conftest.py +++ b/testing/test_conftest.py @@ -215,3 +215,40 @@ conftest = Conftest() monkeypatch.setattr(conftest, 'importconftest', impct) assert conftest.getconftestmodules(sub) == [ct1, ct2] + + +def test_fixture_dependency(testdir, monkeypatch): + ct1 = testdir.makeconftest("") + ct1 = testdir.makepyfile("__init__.py") + ct1.write("") + sub = testdir.mkdir("sub") + sub.join("__init__.py").write("") + sub.join("conftest.py").write(py.std.textwrap.dedent(""" + import pytest + + @pytest.fixture + def not_needed(): + assert False, "Should not be called!" + + @pytest.fixture + def foo(): + assert False, "Should not be called!" + + @pytest.fixture + def bar(foo): + return 'bar' + """)) + subsub = sub.mkdir("subsub") + subsub.join("__init__.py").write("") + subsub.join("test_bar.py").write(py.std.textwrap.dedent(""" + import pytest + + @pytest.fixture + def bar(): + return 'sub bar' + + def test_event_fixture(bar): + assert bar == 'sub bar' + """)) + result = testdir.runpytest("sub") + result.stdout.fnmatch_lines(["*1 passed*"]) https://bitbucket.org/hpk42/pytest/commits/157241084b31/ Changeset: 157241084b31 User: hpk42 Date: 2013-11-13 07:43:59 Summary: Merged in paylogic/pytest/multi-level-fixture-deps-override (pull request #83) When overridden, fixture's dependencies are called from all levels of folder structure Affected #: 2 files diff -r 8a2c31cbe904a3ca26dce8653dbae2e0962c2e9c -r 157241084b314d9b1f69b92e0d51ca4b67d1cf0a _pytest/python.py --- a/_pytest/python.py +++ b/_pytest/python.py @@ -1556,8 +1556,7 @@ fixturedefs = self.getfixturedefs(argname, parentid) arg2fixturedefs[argname] = fixturedefs if fixturedefs is not None: - for fixturedef in fixturedefs: - merge(fixturedef.argnames) + merge(fixturedefs[-1].argnames) return fixturenames_closure, arg2fixturedefs def pytest_generate_tests(self, metafunc): diff -r 8a2c31cbe904a3ca26dce8653dbae2e0962c2e9c -r 157241084b314d9b1f69b92e0d51ca4b67d1cf0a testing/test_conftest.py --- a/testing/test_conftest.py +++ b/testing/test_conftest.py @@ -215,3 +215,40 @@ conftest = Conftest() monkeypatch.setattr(conftest, 'importconftest', impct) assert conftest.getconftestmodules(sub) == [ct1, ct2] + + +def test_fixture_dependency(testdir, monkeypatch): + ct1 = testdir.makeconftest("") + ct1 = testdir.makepyfile("__init__.py") + ct1.write("") + sub = testdir.mkdir("sub") + sub.join("__init__.py").write("") + sub.join("conftest.py").write(py.std.textwrap.dedent(""" + import pytest + + @pytest.fixture + def not_needed(): + assert False, "Should not be called!" + + @pytest.fixture + def foo(): + assert False, "Should not be called!" + + @pytest.fixture + def bar(foo): + return 'bar' + """)) + subsub = sub.mkdir("subsub") + subsub.join("__init__.py").write("") + subsub.join("test_bar.py").write(py.std.textwrap.dedent(""" + import pytest + + @pytest.fixture + def bar(): + return 'sub bar' + + def test_event_fixture(bar): + assert bar == 'sub bar' + """)) + result = testdir.runpytest("sub") + result.stdout.fnmatch_lines(["*1 passed*"]) Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. _______________________________________________ pytest-commit mailing list pytest-commit@python.org https://mail.python.org/mailman/listinfo/pytest-commit