1 new commit in pytest:
https://bitbucket.org/hpk42/pytest/commits/76a2baa4837d/
Changeset: 76a2baa4837d
User: hpk42
Date: 2013-10-11 14:36:54
Summary: avoid one surprising case of marker malfunction/confusion::
@pytest.mark.some(lambda arg: ...)
def test_function():
would not work correctly because pytest assumes @pytest.mark.some
gets a function to be decorated already. We now at least detect if this
arg is an lambda and thus the example will work. Thanks Alex Gaynor
for bringing it up.
Affected #: 3 files
diff -r 9931e8b59b66c7dca504db56a1ed87066383c0fe -r
76a2baa4837dfeacdeaca326b74dd918c0d031d9 CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -12,6 +12,16 @@
properly so that the pkg_resources.resource_stream method works properly.
Fixes issue366. Thanks for the investigations and full PR to Jason R.
Coombs.
+- avoid one surprising case of marker malfunction/confusion::
+
+ @pytest.mark.some(lambda arg: ...)
+ def test_function():
+
+ would not work correctly because pytest assumes @pytest.mark.some
+ gets a function to be decorated already. We now at least detect if this
+ arg is an lambda and thus the example will work. Thanks Alex Gaynor
+ for bringing it up.
+
Changes between 2.4.1 and 2.4.2
-----------------------------------
diff -r 9931e8b59b66c7dca504db56a1ed87066383c0fe -r
76a2baa4837dfeacdeaca326b74dd918c0d031d9 _pytest/mark.py
--- a/_pytest/mark.py
+++ b/_pytest/mark.py
@@ -182,6 +182,9 @@
if name not in self._markers:
raise AttributeError("%r not a registered marker" % (name,))
+def istestfunc(func):
+ return hasattr(func, "__call__") and \
+ getattr(func, "__name__", "<lambda>") != "<lambda>"
class MarkDecorator:
""" A decorator for test functions and test classes. When applied
@@ -217,8 +220,8 @@
otherwise add *args/**kwargs in-place to mark information. """
if args:
func = args[0]
- if len(args) == 1 and hasattr(func, '__call__') or \
- hasattr(func, '__bases__'):
+ if len(args) == 1 and (istestfunc(func) or
+ hasattr(func, '__bases__')):
if hasattr(func, '__bases__'):
if hasattr(func, 'pytestmark'):
l = func.pytestmark
diff -r 9931e8b59b66c7dca504db56a1ed87066383c0fe -r
76a2baa4837dfeacdeaca326b74dd918c0d031d9 testing/test_mark.py
--- a/testing/test_mark.py
+++ b/testing/test_mark.py
@@ -100,6 +100,16 @@
"*a1some*another marker",
])
+def test_mark_on_pseudo_function(testdir):
+ testdir.makepyfile("""
+ import pytest
+
+ @pytest.mark.r(lambda x: 0/0)
+ def test_hello():
+ pass
+ """)
+ reprec = testdir.inline_run()
+ reprec.assertoutcome(passed=1)
def test_strict_prohibits_unregistered_markers(testdir):
testdir.makepyfile("""
@@ -510,3 +520,4 @@
assert_test_is_not_selected("__")
assert_test_is_not_selected("()")
+
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
[email protected]
https://mail.python.org/mailman/listinfo/pytest-commit