[Pytest-commit] commit/pytest: RonnyPfannschmidt: small refactoring of yield test interpretation

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Wed Feb 11 01:07:30 CET 2015


1 new commit in pytest:

https://bitbucket.org/hpk42/pytest/commits/e507c61f1fc0/
Changeset:   e507c61f1fc0
Branch:      yield-test-run-inline
User:        RonnyPfannschmidt
Date:        2015-02-11 00:06:55+00:00
Summary:     small refactoring of yield test interpretation
Affected #:  1 file

diff -r bd9f28f011eafe48ddf95b6a3e9dd260aa69c99f -r e507c61f1fc036a902cfcc3003d2d8b074273d06 _pytest/python.py
--- a/_pytest/python.py
+++ b/_pytest/python.py
@@ -189,26 +189,35 @@
     return request.config
 
 
+
+def _get_check_nameargs(obj, idx):
+    if not isinstance(obj, (list, tuple)):
+        obj = (obj,)
+    # explict naming
+
+    if isinstance(obj[0], py.builtin._basestring):
+        name = '[%s]' % obj[0]
+        obj = obj[1:]
+    else:
+        name = '[%d]' % idx
+    call, args = obj[0], obj[1:]
+    if not callable(call):
+        pytest.fail('not a check\n'
+            'name=%s call=%r args=%r' % (name, call, args))
+    return name, call, args
+
+
+
 @pytest.mark.trylast
 def pytest_pyfunc_interpret_result(pyfuncitem, result):
     if inspect.isgenerator(result):
         pyfuncitem.warn(
             code='G01',
             message='generator test, reporting is limited')
-        for check in result:
+        for idx, check in enumerate(result):
             # TODO(ronny): subtest support needed
-            if callable(check):
-                check()
-            elif not isinstance(check, tuple):
-                pytest.fail('%r is not a check' % (check,))
-            elif callable(check[0]):
-                check[0](*check[1:])
-            elif callable(check[1]):
-                check[1](*check[2:])
-            else:
-                pytest.fail(
-                    'generator test check not callable \n%r' % (check,))
-
+            name, call, args = _get_check_nameargs(check, idx)
+            call(*args)
 
 @pytest.mark.trylast
 def pytest_pyfunc_call(pyfuncitem):

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