extract a _handle_skip method, secure PY2 branch
This commit is contained in:
parent
176c680e19
commit
ad56cd8027
|
@ -151,22 +151,30 @@ class TestCaseFunction(pytest.Function):
|
||||||
def stopTest(self, testcase):
|
def stopTest(self, testcase):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def _handle_skip(self):
|
||||||
|
# implements the skipping machinery (see #2137)
|
||||||
|
# analog to pythons Lib/unittest/case.py:run
|
||||||
|
testMethod = getattr(self._testcase, self._testcase._testMethodName)
|
||||||
|
if (getattr(self._testcase.__class__, "__unittest_skip__", False) or
|
||||||
|
getattr(testMethod, "__unittest_skip__", False)):
|
||||||
|
# If the class or method was skipped.
|
||||||
|
skip_why = (getattr(self._testcase.__class__, '__unittest_skip_why__', '') or
|
||||||
|
getattr(testMethod, '__unittest_skip_why__', ''))
|
||||||
|
try: # PY3, unittest2 on PY2
|
||||||
|
self._testcase._addSkip(self, self._testcase, skip_why)
|
||||||
|
except TypeError: # PY2
|
||||||
|
if sys.version_info[0] != 2:
|
||||||
|
raise
|
||||||
|
self._testcase._addSkip(self, skip_why)
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def runtest(self):
|
def runtest(self):
|
||||||
if self.config.pluginmanager.get_plugin("pdbinvoke") is None:
|
if self.config.pluginmanager.get_plugin("pdbinvoke") is None:
|
||||||
self._testcase(result=self)
|
self._testcase(result=self)
|
||||||
else:
|
else:
|
||||||
# disables tearDown and cleanups for post mortem debugging (see #1890)
|
# disables tearDown and cleanups for post mortem debugging (see #1890)
|
||||||
# but still implements the skipping machinery (see #2137)
|
if self._handle_skip():
|
||||||
testMethod = getattr(self._testcase, self._testcase._testMethodName)
|
|
||||||
if (getattr(self._testcase.__class__, "__unittest_skip__", False) or
|
|
||||||
getattr(testMethod, "__unittest_skip__", False)):
|
|
||||||
# If the class or method was skipped.
|
|
||||||
skip_why = (getattr(self._testcase.__class__, '__unittest_skip_why__', '') or
|
|
||||||
getattr(testMethod, '__unittest_skip_why__', ''))
|
|
||||||
try:
|
|
||||||
self._testcase._addSkip(self, self._testcase, skip_why)
|
|
||||||
except TypeError: # PY2
|
|
||||||
self._testcase._addSkip(self, skip_why)
|
|
||||||
return
|
return
|
||||||
self._testcase.debug()
|
self._testcase.debug()
|
||||||
|
|
||||||
|
|
|
@ -107,6 +107,7 @@ class TestPDB:
|
||||||
self.flush(child)
|
self.flush(child)
|
||||||
|
|
||||||
def test_pdb_unittest_skip(self, testdir):
|
def test_pdb_unittest_skip(self, testdir):
|
||||||
|
"""Test for issue #2137"""
|
||||||
p1 = testdir.makepyfile("""
|
p1 = testdir.makepyfile("""
|
||||||
import unittest
|
import unittest
|
||||||
@unittest.skipIf(True, 'Skipping also with pdb active')
|
@unittest.skipIf(True, 'Skipping also with pdb active')
|
||||||
|
|
Loading…
Reference in New Issue