Example #1
0
    def test_replace_explicit_with_labels(self):
        m = Mock()

        runner = Runner(m.job0)
        runner.add_label('foo')
        runner['foo'].add(m.job1)
        runner['foo'].add(m.job2)

        runner.replace(m.job2, m.jobnew, returns='mock')

        runner()

        compare([call.job0(), call.job1(), call.jobnew()], m.mock_calls)

        # check added_using is handled correctly
        m.reset_mock()
        runner2 = runner.clone(added_using='foo')
        runner2()

        compare([call.job1(), call.jobnew()], actual=m.mock_calls)

        # check runner's label pointer is sane
        m.reset_mock()
        runner['foo'].add(m.job3)
        runner()

        compare(
            [call.job0(), call.job1(),
             call.jobnew(),
             call.job3()],
            actual=m.mock_calls)
Example #2
0
    def test_clone_between_empty(self):
        m = Mock()
        runner1 = Runner()
        runner1.add(m.f1, label='first')
        runner1.add(m.f2, label='second')

        runner2 = runner1.clone(start_label='first', end_label='second')
        verify(runner2)
Example #3
0
    def test_clone_between_empty(self):
        m = Mock()
        runner1 = Runner()
        runner1.add(m.f1, label='first')
        runner1.add(m.f2, label='second')

        runner2 = runner1.clone(start_label='first', end_label='second')
        verify(runner2)
Example #4
0
    def test_clone_between_one_item(self):
        m = Mock()
        runner1 = Runner()
        runner1.add(m.f1, label='first')
        runner1.add(m.f2, label='second')
        runner1.add(m.f3, label='third')

        runner2 = runner1.clone(start_label='first', end_label='third')
        verify(runner2,
                    (m.f2, {'second'}),
                    )
Example #5
0
    def test_clone_between_one_item(self):
        m = Mock()
        runner1 = Runner()
        runner1.add(m.f1, label='first')
        runner1.add(m.f2, label='second')
        runner1.add(m.f3, label='third')

        runner2 = runner1.clone(start_label='first', end_label='third')
        verify(runner2,
                    (m.f2, {'second'}),
                    )
Example #6
0
    def test_clone_start_label_include(self):
        m = Mock()
        runner1 = Runner()
        runner1.add(m.f1, label='first')
        runner1.add(m.f2, label='second')
        runner1.add(m.f3, label='third')

        runner2 = runner1.clone(start_label='second', include_start=True)
        verify(runner2,
                    (m.f2, {'second'}),
                    (m.f3, {'third'}),
                    )
Example #7
0
    def test_clone_end_label(self):
        m = Mock()
        runner1 = Runner()
        runner1.add(m.f1, label='first')
        runner1.add(m.f2, label='second')
        runner1.add(m.f3, label='third')

        runner2 = runner1.clone(end_label='third')
        verify(runner2,
                    (m.f1, {'first'}),
                    (m.f2, {'second'}),
                    )
Example #8
0
    def test_clone_start_label_include(self):
        m = Mock()
        runner1 = Runner()
        runner1.add(m.f1, label='first')
        runner1.add(m.f2, label='second')
        runner1.add(m.f3, label='third')

        runner2 = runner1.clone(start_label='second', include_start=True)
        verify(runner2,
                    (m.f2, {'second'}),
                    (m.f3, {'third'}),
                    )
Example #9
0
    def test_clone_end_label(self):
        m = Mock()
        runner1 = Runner()
        runner1.add(m.f1, label='first')
        runner1.add(m.f2, label='second')
        runner1.add(m.f3, label='third')

        runner2 = runner1.clone(end_label='third')
        verify(runner2,
                    (m.f1, {'first'}),
                    (m.f2, {'second'}),
                    )
Example #10
0
    def test_clone_added_using(self):
        runner1 = Runner()
        m = Mock()
        runner1.add(m.f1)
        runner1.add(m.f2, label='the_label')
        runner1.add(m.f3)

        runner1['the_label'].add(m.f6)
        runner1['the_label'].add(m.f7)

        runner2 = runner1.clone(added_using='the_label')
        verify(runner2,
               (m.f6, set()),
               (m.f7, {'the_label'}),
               )
Example #11
0
    def test_clone_added_using(self):
        runner1 = Runner()
        m = Mock()
        runner1.add(m.f1)
        runner1.add(m.f2, label='the_label')
        runner1.add(m.f3)

        runner1['the_label'].add(m.f6)
        runner1['the_label'].add(m.f7)

        runner2 = runner1.clone(added_using='the_label')
        verify(runner2,
               (m.f6, set()),
               (m.f7, {'the_label'}),
               )
Example #12
0
    def test_runner_add_label(self):
        m = Mock()

        runner = Runner()
        runner.add(m.job1)
        runner.add_label('label')
        runner.add(m.job3)

        runner['label'].add(m.job2)

        verify(runner, (m.job1, set()), (m.job2, {'label'}), (m.job3, set()))

        cloned = runner.clone(added_using='label')
        verify(
            cloned,
            (m.job2, {'label'}),
        )
Example #13
0
    def test_runner_add_label(self):
        m = Mock()

        runner = Runner()
        runner.add(m.job1)
        runner.add_label('label')
        runner.add(m.job3)

        runner['label'].add(m.job2)

        verify(
            runner,
            (m.job1, set()),
            (m.job2, {'label'}),
            (m.job3, set())
        )

        cloned = runner.clone(added_using='label')
        verify(
            cloned,
            (m.job2, {'label'}),
        )
Example #14
0
    def test_replace_explicit_with_labels(self):
        m = Mock()

        runner = Runner(m.job0)
        runner.add_label('foo')
        runner['foo'].add(m.job1)
        runner['foo'].add(m.job2)

        runner.replace(m.job2, m.jobnew, returns='mock')

        runner()

        compare([
            call.job0(),
            call.job1(),
            call.jobnew()
        ], m.mock_calls)

        # check added_using is handled correctly
        m.reset_mock()
        runner2 = runner.clone(added_using='foo')
        runner2()

        compare([
            call.job1(),
            call.jobnew()
        ], actual=m.mock_calls)

        # check runner's label pointer is sane
        m.reset_mock()
        runner['foo'].add(m.job3)
        runner()

        compare([
            call.job0(),
            call.job1(),
            call.jobnew(),
            call.job3()
        ], actual=m.mock_calls)
Example #15
0
    def test_clone(self):
        m = Mock()
        class T1(object): pass
        class T2(object): pass
        def f1(): m.f1()
        def n1():
            m.n1()
            return T1(), T2()
        def l1(): m.l1()
        def t1(obj): m.t1()
        def t2(obj): m.t2()
        # original
        runner1 = Runner()
        runner1.add(f1, label='first')
        runner1.add(n1, returns=returns(T1, T2), label='normal')
        runner1.add(l1, label='last')
        runner1.add(t1, requires(T1))
        runner1.add(t2, requires(T2))
        # now clone and add bits
        def f2(): m.f2()
        def n2(): m.n2()
        def l2(): m.l2()
        def tn(obj): m.tn()
        runner2 = runner1.clone()
        runner2['first'].add(f2)
        runner2['normal'].add(n2)
        runner2['last'].add(l2)
        # make sure types stay in order
        runner2.add(tn, requires(T2))

        # now run both, and make sure we only get what we should

        runner1()
        verify(runner1,
                    (f1, {'first'}),
                    (n1, {'normal'}),
                    (l1, {'last'}),
                    (t1, set()),
                    (t2, set()),
                    )
        compare([
                call.f1(),
                call.n1(),
                call.l1(),
                call.t1(),
                call.t2(),
                ], m.mock_calls)

        m.reset_mock()

        runner2()
        verify(runner2,
                    (f1, set()),
                    (f2, {'first'}),
                    (n1, set()),
                    (n2, {'normal'}),
                    (l1, set()),
                    (l2, {'last'}),
                    (t1, set()),
                    (t2, set()),
                    (tn, set()),
                    )
        compare([
                call.f1(),
                call.f2(),
                call.n1(),
                call.n2(),
                call.l1(),
                call.l2(),
                call.t1(),
                call.t2(),
                call.tn()
                ], m.mock_calls)
Example #16
0
    def test_clone(self):
        m = Mock()
        class T1(object): pass
        class T2(object): pass
        def f1(): m.f1()
        def n1():
            m.n1()
            return T1(), T2()
        def l1(): m.l1()
        def t1(obj): m.t1()
        def t2(obj): m.t2()
        # original
        runner1 = Runner()
        runner1.add(f1, label='first')
        runner1.add(n1, returns=returns(T1, T2), label='normal')
        runner1.add(l1, label='last')
        runner1.add(t1, requires(T1))
        runner1.add(t2, requires(T2))
        # now clone and add bits
        def f2(): m.f2()
        def n2(): m.n2()
        def l2(): m.l2()
        def tn(obj): m.tn()
        runner2 = runner1.clone()
        runner2['first'].add(f2)
        runner2['normal'].add(n2)
        runner2['last'].add(l2)
        # make sure types stay in order
        runner2.add(tn, requires(T2))

        # now run both, and make sure we only get what we should

        runner1()
        verify(runner1,
                    (f1, {'first'}),
                    (n1, {'normal'}),
                    (l1, {'last'}),
                    (t1, set()),
                    (t2, set()),
                    )
        compare([
                call.f1(),
                call.n1(),
                call.l1(),
                call.t1(),
                call.t2(),
                ], m.mock_calls)

        m.reset_mock()

        runner2()
        verify(runner2,
                    (f1, set()),
                    (f2, {'first'}),
                    (n1, set()),
                    (n2, {'normal'}),
                    (l1, set()),
                    (l2, {'last'}),
                    (t1, set()),
                    (t2, set()),
                    (tn, set()),
                    )
        compare([
                call.f1(),
                call.f2(),
                call.n1(),
                call.n2(),
                call.l1(),
                call.l2(),
                call.t1(),
                call.t2(),
                call.tn()
                ], m.mock_calls)