re-introduce compatibility attributes on collection nodes to keep compatible with code like::
def pytest_collect_file(path, parent):
        ... parent.Module(...)
--HG--
branch : trunk
			
			
This commit is contained in:
		
							parent
							
								
									4480401119
								
							
						
					
					
						commit
						5fc87acf9b
					
				|  | @ -5,7 +5,7 @@ see http://pytest.org for documentation and details | |||
| 
 | ||||
| (c) Holger Krekel and others, 2004-2010 | ||||
| """ | ||||
| __version__ = '2.0.0.dev8' | ||||
| __version__ = '2.0.0.dev9' | ||||
| 
 | ||||
| __all__ = ['config', 'cmdline'] | ||||
| 
 | ||||
|  |  | |||
|  | @ -308,6 +308,14 @@ class HookProxy: | |||
|             return hookmethod.pcall(plugins, **kwargs) | ||||
|         return call_matching_hooks | ||||
| 
 | ||||
| def compatproperty(name): | ||||
|     def fget(self): | ||||
|         #print "retrieving %r property from %s" %(name, self.fspath) | ||||
|         py.log._apiwarn("2.0", "use py.test.collect.%s for " | ||||
|             "Collection classes" % name) | ||||
|         return getattr(pytest.collect, name) | ||||
|     return property(fget) | ||||
|      | ||||
| class Node(object): | ||||
|     """ base class for all Nodes in the collection tree. | ||||
|     Collector subclasses have children, Items are terminal nodes.""" | ||||
|  | @ -330,6 +338,12 @@ class Node(object): | |||
|         self.ihook = HookProxy(self) | ||||
|         self.keywords = {self.name: True} | ||||
| 
 | ||||
|     Module = compatproperty("Module") | ||||
|     Class = compatproperty("Class") | ||||
|     Function = compatproperty("Function") | ||||
|     File = compatproperty("File") | ||||
|     Item = compatproperty("Item") | ||||
| 
 | ||||
|     def __repr__(self): | ||||
|         if getattr(self.config.option, 'debug', False): | ||||
|             return "<%s %r %0x>" %(self.__class__.__name__, | ||||
|  |  | |||
							
								
								
									
										2
									
								
								setup.py
								
								
								
								
							
							
						
						
									
										2
									
								
								setup.py
								
								
								
								
							|  | @ -22,7 +22,7 @@ def main(): | |||
|         name='pytest', | ||||
|         description='py.test: simple powerful testing with Python', | ||||
|         long_description = long_description, | ||||
|         version='2.0.0.dev8', | ||||
|         version='2.0.0.dev9', | ||||
|         url='http://pytest.org', | ||||
|         license='MIT license', | ||||
|         platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'], | ||||
|  |  | |||
|  | @ -6,6 +6,23 @@ class TestCollector: | |||
|         assert not issubclass(Collector, Item) | ||||
|         assert not issubclass(Item, Collector) | ||||
| 
 | ||||
|     def test_compat_attributes(self, testdir, recwarn): | ||||
|         modcol = testdir.getmodulecol(""" | ||||
|             def test_pass(): pass | ||||
|             def test_fail(): assert 0 | ||||
|         """) | ||||
|         recwarn.clear() | ||||
|         assert modcol.Module == py.test.collect.Module | ||||
|         recwarn.pop(DeprecationWarning) | ||||
|         assert modcol.Class == py.test.collect.Class | ||||
|         recwarn.pop(DeprecationWarning) | ||||
|         assert modcol.Item == py.test.collect.Item | ||||
|         recwarn.pop(DeprecationWarning) | ||||
|         assert modcol.File == py.test.collect.File | ||||
|         recwarn.pop(DeprecationWarning) | ||||
|         assert modcol.Function == py.test.collect.Function | ||||
|         recwarn.pop(DeprecationWarning) | ||||
| 
 | ||||
|     def test_check_equality(self, testdir): | ||||
|         modcol = testdir.getmodulecol(""" | ||||
|             def test_pass(): pass | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue