summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Szakmeister <john@szakmeister.net>2014-03-15 06:15:42 -0400
committerJohn Szakmeister <john@szakmeister.net>2014-03-19 05:32:02 -0400
commit192694ed9f70447317bd54e427a17208bddf03be (patch)
treec01bcef2bd5a5e0cfc126cfc1388827967ad8a27
parent43c35e49106916f51f676455888fe7a39d030113 (diff)
downloadnose-192694ed9f70447317bd54e427a17208bddf03be.tar.gz
Fix #783: try_run is broken with Python 3.4
It turns out that we expected inspect.getargspec() to only work on functions (versus classes that are callable). Python 3.4 has changed this behavior and now happily returns the arg spec. Let's try to detect this situation by checking the __call__() method to if it's actually the method of a class. If so, pop the 'self' argument off of args--similar to what's done in the exceptional case below.
-rw-r--r--CHANGELOG1
-rw-r--r--nose/util.py4
2 files changed, 4 insertions, 1 deletions
diff --git a/CHANGELOG b/CHANGELOG
index e22230f..ef70f74 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -3,6 +3,7 @@ Under Development
- Fixed #782: Test failures with Python >= 3.3
Patch by Dmitry Shachnev.
- Fixed #780: Fix a regression with Python 3
+- Fixed #783: try_run is broken with Python 3.4
1.3.1
diff --git a/nose/util.py b/nose/util.py
index 7995700..dcb5fef 100644
--- a/nose/util.py
+++ b/nose/util.py
@@ -8,7 +8,7 @@ import re
import sys
import types
import unittest
-from nose.pyversion import ClassType, TypeType, isgenerator
+from nose.pyversion import ClassType, TypeType, isgenerator, ismethod
log = logging.getLogger('nose')
@@ -449,6 +449,8 @@ def try_run(obj, names):
# py.test compatibility
try:
args, varargs, varkw, defaults = inspect.getargspec(func)
+ if hasattr(func, '__call__') and ismethod(func.__call__):
+ args.pop(0)
except TypeError:
# Not a function. If it's callable, call it anyway
if hasattr(func, '__call__'):