merge
This commit is contained in:
		
						commit
						983b2d2475
					
				|  | @ -1,6 +1,8 @@ | |||
| Changes between 2.3.2 and 2.3.3.dev | ||||
| ----------------------------------- | ||||
| 
 | ||||
| - fix issue 214: gracefully handle proxy objects that | ||||
|   look like fixtures but raise exceptions on introspection | ||||
| - fix issue213 - allow to parametrize with values like numpy arrays that | ||||
|   do not support an __eq__ operator  | ||||
| 
 | ||||
|  |  | |||
|  | @ -1551,7 +1551,15 @@ class FixtureManager: | |||
|                 continue | ||||
|             # fixture functions have a pytest_funcarg__ prefix (pre-2.3 style) | ||||
|             # or are "@pytest.fixture" marked | ||||
|             try: | ||||
|                 marker = getattr(obj, "_pytestfixturefunction", None) | ||||
|             except RuntimeError: | ||||
|                 # some proxy objects raise RuntimeError | ||||
|                 # flasks request globals are one example | ||||
|                 # those aren't fixture functions, so we can ignore | ||||
|                 # XXX: maybe trace it when it happens? | ||||
|                 marker = None | ||||
| 
 | ||||
|             if marker is None: | ||||
|                 if not name.startswith(self._argprefix): | ||||
|                     continue | ||||
|  |  | |||
|  | @ -1611,6 +1611,34 @@ def test_funcarg_lookup_error(testdir): | |||
|     ]) | ||||
|     assert "INTERNAL" not in result.stdout.str() | ||||
| 
 | ||||
| 
 | ||||
| def test_funcarg_fixture_discovery_failure_issue214(testdir): | ||||
|     # some proxy objects raise RuntimeError on getattr | ||||
|     # for example flask.request | ||||
|     p = testdir.makepyfile(""" | ||||
| 
 | ||||
|         class EvilObject(object): | ||||
|             def __call__(self):  | ||||
|                 #needed to trick discovery | ||||
|                 pass | ||||
|             def __getattr__(self, arg): | ||||
|                 raise RuntimeError('uhm ' + arg) | ||||
| 
 | ||||
| 
 | ||||
|         fixture = EvilObject() | ||||
|          | ||||
|         def test_1(): | ||||
|             pass | ||||
|     """) | ||||
|     result = testdir.runpytest('--fulltrace') | ||||
|     result.stdout.fnmatch_lines([ | ||||
|         '*1 passed*' | ||||
|     ]) | ||||
|     assert "INTERNAL" not in result.stdout.str() | ||||
|     assert "ERROR" not in result.stdout.str() | ||||
|          | ||||
| 
 | ||||
| 
 | ||||
| class TestReportInfo: | ||||
|     def test_itemreport_reportinfo(self, testdir, linecomp): | ||||
|         testdir.makeconftest(""" | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue