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

Reply via email to