parent
							
								
									e63abd631f
								
							
						
					
					
						commit
						ad0c2edfd2
					
				|  | @ -163,9 +163,14 @@ class PyCollectorMixin(PyobjMixin, py.test.collect.Collector): | |||
|         return funcargs.FunctionCollector(name=name,  | ||||
|             parent=self, calls=metafunc._calls) | ||||
| 
 | ||||
| if py.std.sys.version_info > (3, 0): | ||||
|     _code_attr = "__code__" | ||||
| else: | ||||
|     _code_attr = "func_code" | ||||
| 
 | ||||
| def is_generator(func): | ||||
|     try: | ||||
|         return (func.func_code.co_flags & 32) # generator function  | ||||
|         return (getattr(func, _code_attr).co_flags & 32) # generator function  | ||||
|     except AttributeError: # c / builtin functions have no func_code | ||||
|         return False  | ||||
|          | ||||
|  | @ -289,7 +294,7 @@ class Generator(FunctionMixin, PyCollectorMixin, py.test.collect.Collector): | |||
|         seen = {} | ||||
|         for i, x in enumerate(self.obj()):  | ||||
|             name, call, args = self.getcallargs(x) | ||||
|             if not callable(call):  | ||||
|             if not py.builtin.callable(call):  | ||||
|                 raise TypeError("%r yielded non callable test %r" %(self.obj, call,)) | ||||
|             if name is None: | ||||
|                 name = "[%d]" % i | ||||
|  |  | |||
|  | @ -76,6 +76,11 @@ class TestDisabled: | |||
|         """) | ||||
|         reprec.assertoutcome(skipped=2) | ||||
| 
 | ||||
| if py.std.sys.version_info > (3, 0): | ||||
|     _func_name_attr = "__name__" | ||||
| else: | ||||
|     _func_name_attr = "func_name" | ||||
| 
 | ||||
| class TestGenerator: | ||||
|     def test_generative_functions(self, testdir):  | ||||
|         modcol = testdir.getmodulecol(""" | ||||
|  | @ -95,7 +100,7 @@ class TestGenerator: | |||
|         assert isinstance(gencolitems[0], py.test.collect.Function) | ||||
|         assert isinstance(gencolitems[1], py.test.collect.Function) | ||||
|         assert gencolitems[0].name == '[0]' | ||||
|         assert gencolitems[0].obj.func_name == 'func1' | ||||
|         assert getattr(gencolitems[0].obj, _func_name_attr) == 'func1' | ||||
| 
 | ||||
|     def test_generative_methods(self, testdir):  | ||||
|         modcol = testdir.getmodulecol(""" | ||||
|  | @ -113,7 +118,7 @@ class TestGenerator: | |||
|         assert isinstance(gencolitems[0], py.test.collect.Function) | ||||
|         assert isinstance(gencolitems[1], py.test.collect.Function) | ||||
|         assert gencolitems[0].name == '[0]' | ||||
|         assert gencolitems[0].obj.func_name == 'func1' | ||||
|         assert getattr(gencolitems[0].obj, _func_name_attr) == 'func1' | ||||
| 
 | ||||
|     def test_generative_functions_with_explicit_names(self, testdir): | ||||
|         modcol = testdir.getmodulecol(""" | ||||
|  | @ -133,9 +138,9 @@ class TestGenerator: | |||
|         assert isinstance(gencolitems[0], py.test.collect.Function) | ||||
|         assert isinstance(gencolitems[1], py.test.collect.Function) | ||||
|         assert gencolitems[0].name == "['seventeen']" | ||||
|         assert gencolitems[0].obj.func_name == 'func1' | ||||
|         assert getattr(gencolitems[0].obj, _func_name_attr) == 'func1' | ||||
|         assert gencolitems[1].name == "['fortytwo']" | ||||
|         assert gencolitems[1].obj.func_name == 'func1'         | ||||
|         assert getattr(gencolitems[1].obj, _func_name_attr) == 'func1'         | ||||
| 
 | ||||
|     def test_generative_functions_unique_explicit_names(self, testdir): | ||||
|         # generative  | ||||
|  | @ -167,22 +172,23 @@ class TestGenerator: | |||
|         assert isinstance(gencolitems[0], py.test.collect.Function) | ||||
|         assert isinstance(gencolitems[1], py.test.collect.Function) | ||||
|         assert gencolitems[0].name == "['m1']" | ||||
|         assert gencolitems[0].obj.func_name == 'func1' | ||||
|         assert getattr(gencolitems[0].obj, _func_name_attr) == 'func1' | ||||
|         assert gencolitems[1].name == "['m2']" | ||||
|         assert gencolitems[1].obj.func_name == 'func1'         | ||||
|         assert getattr(gencolitems[1].obj, _func_name_attr) == 'func1'         | ||||
| 
 | ||||
|     def test_order_of_execution_generator_same_codeline(self, testdir, tmpdir): | ||||
|         o = testdir.makepyfile(""" | ||||
|             def test_generative_order_of_execution(): | ||||
|                 import py | ||||
|                 test_list = [] | ||||
|                 expected_list = range(6) | ||||
|                 expected_list = list(range(6)) | ||||
| 
 | ||||
|                 def list_append(item): | ||||
|                     test_list.append(item) | ||||
|                      | ||||
|                 def assert_order_of_execution(): | ||||
|                     print 'expected order', expected_list | ||||
|                     print 'but got       ', test_list | ||||
|                     py.builtin.print_('expected order', expected_list) | ||||
|                     py.builtin.print_('but got       ', test_list) | ||||
|                     assert test_list == expected_list | ||||
|                  | ||||
|                 for i in expected_list: | ||||
|  | @ -197,8 +203,9 @@ class TestGenerator: | |||
|     def test_order_of_execution_generator_different_codeline(self, testdir): | ||||
|         o = testdir.makepyfile(""" | ||||
|             def test_generative_tests_different_codeline(): | ||||
|                 import py | ||||
|                 test_list = [] | ||||
|                 expected_list = range(3) | ||||
|                 expected_list = list(range(3)) | ||||
| 
 | ||||
|                 def list_append_2(): | ||||
|                     test_list.append(2) | ||||
|  | @ -210,8 +217,8 @@ class TestGenerator: | |||
|                     test_list.append(0) | ||||
| 
 | ||||
|                 def assert_order_of_execution(): | ||||
|                     print 'expected order', expected_list | ||||
|                     print 'but got       ', test_list | ||||
|                     py.builtin.print_('expected order', expected_list) | ||||
|                     py.builtin.print_('but got       ', test_list) | ||||
|                     assert test_list == expected_list | ||||
|                      | ||||
|                 yield list_append_0 | ||||
|  | @ -236,11 +243,11 @@ class TestFunction: | |||
|         f1 = py.test.collect.Function(name="name",  | ||||
|                                       args=(1,), callobj=isinstance) | ||||
|         f2 = py.test.collect.Function(name="name", | ||||
|                                       args=(1,), callobj=callable) | ||||
|                                       args=(1,), callobj=py.builtin.callable) | ||||
|         assert not f1 == f2 | ||||
|         assert f1 != f2 | ||||
|         f3 = py.test.collect.Function(name="name",  | ||||
|                                       args=(1,2), callobj=callable) | ||||
|                                       args=(1,2), callobj=py.builtin.callable) | ||||
|         assert not f3 == f2 | ||||
|         assert f3 != f2 | ||||
| 
 | ||||
|  | @ -294,8 +301,9 @@ class TestSorting: | |||
|         assert isinstance(fn2, py.test.collect.Function) | ||||
| 
 | ||||
|         assert fn1 == fn2 | ||||
|         assert fn1 != modcol  | ||||
|         assert cmp(fn1, fn2) == 0 | ||||
|         assert fn1 != modcol | ||||
|         if py.std.sys.version_info < (3, 0): | ||||
|             assert cmp(fn1, fn2) == 0 | ||||
|         assert hash(fn1) == hash(fn2)  | ||||
| 
 | ||||
|         fn3 = modcol.collect_by_name("test_fail") | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue