[py-svn] r48126 - in py/branch/reporter-merge/py/test: . testing

fijal at codespeak.net fijal at codespeak.net
Sun Oct 28 12:48:36 CET 2007


Author: fijal
Date: Sun Oct 28 12:48:35 2007
New Revision: 48126

Added:
   py/branch/reporter-merge/py/test/testing/test_itemgen.py   (contents, props changed)
Modified:
   py/branch/reporter-merge/py/test/session.py
Log:
Some real test for itemgen


Modified: py/branch/reporter-merge/py/test/session.py
==============================================================================
--- py/branch/reporter-merge/py/test/session.py	(original)
+++ py/branch/reporter-merge/py/test/session.py	Sun Oct 28 12:48:35 2007
@@ -8,7 +8,8 @@
 def itemgen(session, colitems, reporter, keyword=None):
     stopitems = py.test.collect.Item # XXX should be generator here as well
     for next in colitems:
-        session.start(next)
+        if session:
+            session.start(next)
         if isinstance(next, stopitems):
             try:
                 next._skipbykeyword(keyword)
@@ -31,7 +32,8 @@
                     reporter(repevent.SkippedTryiter(excinfo, next))
                 else:
                     reporter(repevent.FailedTryiter(excinfo, next))
-        session.finish(next)
+        if session:
+            session.finish(next)
 
 class AbstractSession(object): 
     """ An abstract session executes collectors/items through a runner. 

Added: py/branch/reporter-merge/py/test/testing/test_itemgen.py
==============================================================================
--- (empty file)
+++ py/branch/reporter-merge/py/test/testing/test_itemgen.py	Sun Oct 28 12:48:35 2007
@@ -0,0 +1,39 @@
+
+import py
+from py.__.test.session import itemgen
+from py.__.test import repevent
+
+class TestItemgen:
+    def setup_class(cls):
+        tmp = py.test.ensuretemp('itemgentest')
+        tmp.ensure("__init__.py")
+        tmp.ensure("test_one.py").write(py.code.Source("""
+        def test_one():
+            pass
+
+        class TestX:
+            def test_method_one(self):
+                pass
+
+        class TestY(TestX):
+            pass
+        """))
+        tmp.ensure("test_two.py").write(py.code.Source("""
+        import py
+        py.test.skip('xxx')
+        """))
+        tmp.ensure("test_three.py").write("xxxdsadsadsadsa")
+        cls.tmp = tmp
+        
+    def test_itemgen(self):
+        l = []
+        colitems = [py.test.collect.Directory(self.tmp)]
+        gen = itemgen(None, colitems, l.append)
+        items = [i for i in gen]
+        assert len([i for i in l if isinstance(i, repevent.SkippedTryiter)]) == 1
+        assert len([i for i in l if isinstance(i, repevent.FailedTryiter)]) == 1
+        assert len(items) == 3
+        assert items[0].name == 'test_one'
+        assert items[1].name == 'test_method_one'
+        assert items[2].name == 'test_method_one'
+        


More information about the py-svn mailing list