[Pytest-commit] commit/pytest: 3 new changesets
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Mon Jul 8 15:55:41 CEST 2013
3 new commits in pytest:
https://bitbucket.org/hpk42/pytest/commits/1c51eba0e480/
Changeset: 1c51eba0e480
Branch: 320-class-scoped-fixture-caching-is-broken-if
User: bubenkoff
Date: 2013-07-06 21:30:24
Summary: re #320 fallback to test scope if the class-scoped fixture is used in non-class-based test function
Affected #: 3 files
diff -r cc8871c02a5e4e34ad8e42121ffefb0651304b67 -r 1c51eba0e48065351d33a0087710dae4d49b768d _pytest/python.py
--- a/_pytest/python.py
+++ b/_pytest/python.py
@@ -1317,7 +1317,8 @@
x = self._pyfuncitem.getparent(pytest.Class)
if x is not None:
return x
- scope = "module"
+ # fallback to function
+ return self._pyfuncitem
if scope == "module":
return self._pyfuncitem.getparent(pytest.Module)
raise ValueError("unknown finalization scope %r" %(scope,))
diff -r cc8871c02a5e4e34ad8e42121ffefb0651304b67 -r 1c51eba0e48065351d33a0087710dae4d49b768d testing/python/fixture.py
--- a/testing/python/fixture.py
+++ b/testing/python/fixture.py
@@ -513,12 +513,12 @@
def test_request_cachedsetup_class(self, testdir):
reprec = testdir.inline_runsource("""
- mysetup = ["hello", "hello2"].pop
+ mysetup = ["hello", "hello2", "hello3"].pop
def pytest_funcarg__something(request):
return request.cached_setup(mysetup, scope="class")
def test_func1(something):
- assert something == "hello2"
+ assert something == "hello3"
def test_func2(something):
assert something == "hello2"
class TestClass:
@@ -1090,7 +1090,7 @@
def arg():
l.append(1)
return 0
- @pytest.fixture(scope="class", autouse=True)
+ @pytest.fixture(scope="module", autouse=True)
def something(arg):
l.append(2)
diff -r cc8871c02a5e4e34ad8e42121ffefb0651304b67 -r 1c51eba0e48065351d33a0087710dae4d49b768d testing/test_fixture_scope.py
--- /dev/null
+++ b/testing/test_fixture_scope.py
@@ -0,0 +1,28 @@
+"""Tests for fixtures with different scoping."""
+
+
+def test_class_scope_with_normal_tests(testdir):
+ testpath = testdir.makepyfile("""
+ import pytest
+
+ class Box:
+ value = 0
+
+ @pytest.fixture(scope='class')
+ def a(request):
+ Box.value += 1
+ return Box.value
+
+ def test_a(a):
+ assert a == 1
+
+ class Test1:
+ def test_b(self, a):
+ assert a == 2
+
+ class Test2:
+ def test_c(self, a):
+ assert a == 3""")
+ reprec = testdir.inline_run(testpath)
+ for test in ['test_a', 'test_b', 'test_c']:
+ assert reprec.matchreport(test).passed
https://bitbucket.org/hpk42/pytest/commits/635c9c36e481/
Changeset: 635c9c36e481
Branch: 320-class-scoped-fixture-caching-is-broken-if
User: hpk42
Date: 2013-07-08 15:45:07
Summary: Close branch 320-class-scoped-fixture-caching-is-broken-if
Affected #: 0 files
https://bitbucket.org/hpk42/pytest/commits/602a8ebee9ba/
Changeset: 602a8ebee9ba
User: hpk42
Date: 2013-07-08 15:54:38
Summary: fix issue320 - fix class scope for fixtures when mixed with
module-level functions. Thanks Anatloy Bubenkoff.
Affected #: 5 files
diff -r bcf6f8c25f89879da9dc994fec8320ad5d1912cc -r 602a8ebee9ba44b91699ad86426711f0aba35f7b AUTHORS
--- a/AUTHORS
+++ b/AUTHORS
@@ -9,6 +9,7 @@
Jason R. Coombs
Wouter van Ackooy
Samuele Pedroni
+Anatoly Bubenkoff
Brianna Laugher
Carl Friedrich Bolz
Armin Rigo
diff -r bcf6f8c25f89879da9dc994fec8320ad5d1912cc -r 602a8ebee9ba44b91699ad86426711f0aba35f7b CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,9 @@
Changes between 2.3.5 and 2.4.DEV
-----------------------------------
+- fix issue320 - fix class scope for fixtures when mixed with
+ module-level functions. Thanks Anatloy Bubenkoff.
+
- you can specify "-q" or "-qq" to get different levels of "quieter"
reporting (thanks Katarzyna Jachim)
diff -r bcf6f8c25f89879da9dc994fec8320ad5d1912cc -r 602a8ebee9ba44b91699ad86426711f0aba35f7b _pytest/python.py
--- a/_pytest/python.py
+++ b/_pytest/python.py
@@ -1317,7 +1317,8 @@
x = self._pyfuncitem.getparent(pytest.Class)
if x is not None:
return x
- scope = "module"
+ # fallback to function
+ return self._pyfuncitem
if scope == "module":
return self._pyfuncitem.getparent(pytest.Module)
raise ValueError("unknown finalization scope %r" %(scope,))
diff -r bcf6f8c25f89879da9dc994fec8320ad5d1912cc -r 602a8ebee9ba44b91699ad86426711f0aba35f7b testing/python/fixture.py
--- a/testing/python/fixture.py
+++ b/testing/python/fixture.py
@@ -513,12 +513,12 @@
def test_request_cachedsetup_class(self, testdir):
reprec = testdir.inline_runsource("""
- mysetup = ["hello", "hello2"].pop
+ mysetup = ["hello", "hello2", "hello3"].pop
def pytest_funcarg__something(request):
return request.cached_setup(mysetup, scope="class")
def test_func1(something):
- assert something == "hello2"
+ assert something == "hello3"
def test_func2(something):
assert something == "hello2"
class TestClass:
@@ -1090,7 +1090,7 @@
def arg():
l.append(1)
return 0
- @pytest.fixture(scope="class", autouse=True)
+ @pytest.fixture(scope="module", autouse=True)
def something(arg):
l.append(2)
diff -r bcf6f8c25f89879da9dc994fec8320ad5d1912cc -r 602a8ebee9ba44b91699ad86426711f0aba35f7b testing/test_fixture_scope.py
--- /dev/null
+++ b/testing/test_fixture_scope.py
@@ -0,0 +1,28 @@
+"""Tests for fixtures with different scoping."""
+
+
+def test_class_scope_with_normal_tests(testdir):
+ testpath = testdir.makepyfile("""
+ import pytest
+
+ class Box:
+ value = 0
+
+ @pytest.fixture(scope='class')
+ def a(request):
+ Box.value += 1
+ return Box.value
+
+ def test_a(a):
+ assert a == 1
+
+ class Test1:
+ def test_b(self, a):
+ assert a == 2
+
+ class Test2:
+ def test_c(self, a):
+ assert a == 3""")
+ reprec = testdir.inline_run(testpath)
+ for test in ['test_a', 'test_b', 'test_c']:
+ assert reprec.matchreport(test).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.
More information about the pytest-commit
mailing list