def test_nopending_but_collection_remains(self, testdir): modcol = testdir.getmodulecol(""" def test_fail(): assert 0 def test_pass(): pass """) session = DSession(modcol.config) node = MockNode() session.addnode(node) colreport = basic_collect_report(modcol) item1, item2 = colreport.result session.senditems_load([item1]) # node2pending will become empty when the loop sees the report rep = run(item1, node) session.queueevent("itemtestreport", run(item1, node)) # but we have a collection pending session.queueevent("collectionreport", colreport) loopstate = session._initloopstate([]) session.loop_once(loopstate) assert loopstate.exitstatus is None, "loop did not care for collection report" assert not loopstate.colitems session.loop_once(loopstate) assert loopstate.colitems == colreport.result assert loopstate.exitstatus is None, "loop did not care for colitems"
def test_exit_on_first_failing(self, testdir): modcol = testdir.getmodulecol(""" def test_fail(): assert 0 def test_pass(): pass """) modcol.config.option.exitfirst = True session = DSession(modcol.config) node = MockNode() session.addnode(node) items = basic_collect_report(modcol).result # trigger testing - this sends tests to the node session.triggertesting(items) # run tests ourselves and produce reports ev1 = run(items[0], node) ev2 = run(items[1], node) session.queueevent("itemtestreport", ev1) # a failing one session.queueevent("itemtestreport", ev2) # now call the loop loopstate = session._initloopstate(items) session.loop_once(loopstate) assert loopstate.testsfailed assert loopstate.shuttingdown
def triggertesting(self, colitems): colitems = self.filteritems(colitems) senditems = [] for next in colitems: if isinstance(next, Item): senditems.append(next) else: ev = basic_collect_report(next) self.bus.notify(event.CollectionStart(next)) self.queue.put(ev) self.senditems(senditems)
def test_skip_at_module_scope(self, testdir): col = testdir.getmodulecol(""" import py py.test.skip("hello") def test_func(): pass """) ev = basic_collect_report(col) assert not ev.failed assert not ev.passed assert ev.skipped
def triggertesting(self, colitems): colitems = self.filteritems(colitems) senditems = [] for next in colitems: if isinstance(next, py.test.collect.Item): senditems.append(next) else: self.bus.notify("collectionstart", event.CollectionStart(next)) self.queueevent("collectionreport", basic_collect_report(next)) if self.config.option.dist == "each": self.senditems_each(senditems) else: # XXX assert self.config.option.dist == "load" self.senditems_load(senditems)
def test_collect_result(self, testdir): col = testdir.getmodulecol(""" def test_func1(): pass class TestClass: pass """) ev = basic_collect_report(col) assert not ev.failed assert not ev.skipped assert ev.passed res = ev.result assert len(res) == 2 assert res[0].name == "test_func1" assert res[1].name == "TestClass"