Exemplo n.º 1
0
 def test_senditems_each_and_receive_with_two_nodes(self, testdir):
     item = testdir.getitem("def test_func(): pass")
     node1 = MockNode()
     node2 = MockNode()
     session = DSession(item.config)
     session.addnode(node1)
     session.addnode(node2)
     session.senditems_each([item])
     assert session.node2pending[node1] == [item]
     assert session.node2pending[node2] == [item]
     assert node1 in session.item2nodes[item]
     assert node2 in session.item2nodes[item]
     session.removeitem(item, node1)
     assert session.item2nodes[item] == [node2]
     session.removeitem(item, node2)
     assert not session.node2pending[node1]
     assert not session.item2nodes
Exemplo n.º 2
0
 def test_senditems_each_and_receive_with_two_nodes(self, testdir):
     item = testdir.getitem("def test_func(): pass")
     node1 = MockNode()
     node2 = MockNode()
     session = DSession(item.config)
     session.addnode(node1)
     session.addnode(node2)
     session.senditems_each([item])
     assert session.node2pending[node1] == [item]
     assert session.node2pending[node2] == [item]
     assert node1 in session.item2nodes[item]
     assert node2 in session.item2nodes[item]
     session.removeitem(item, node1)
     assert session.item2nodes[item] == [node2]
     session.removeitem(item, node2)
     assert not session.node2pending[node1] 
     assert not session.item2nodes
Exemplo n.º 3
0
    def test_removeitem_from_failing_teardown(self, testdir):
        # teardown reports only come in when they signal a failure
        # internal session-management should basically ignore them
        # XXX probably it'S best to invent a new error hook for
        # teardown/setup related failures
        modcol = testdir.getmodulecol("""
            def test_one(): 
                pass 
            def teardown_function(function):
                assert 0
        """)
        item1, = modcol.collect()

        # setup a session with two nodes
        session = DSession(item1.config)
        node1, node2 = MockNode(), MockNode()
        session.addnode(node1)
        session.addnode(node2)

        # have one test pending for a node that goes down
        session.senditems_each([item1])
        nodes = session.item2nodes[item1]

        class rep:
            failed = True
            item = item1
            node = nodes[0]
            when = "call"

        session.queueevent("pytest_runtest_logreport", report=rep)
        reprec = testdir.getreportrecorder(session)
        print session.item2nodes
        loopstate = session._initloopstate([])
        assert len(session.item2nodes[item1]) == 2
        session.loop_once(loopstate)
        assert len(session.item2nodes[item1]) == 1
        rep.when = "teardown"
        session.queueevent("pytest_runtest_logreport", report=rep)
        session.loop_once(loopstate)
        assert len(session.item2nodes[item1]) == 1