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