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)
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)
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'}), )
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'}), )
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'}), )
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'}), )
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'}), )
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'}), )
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)
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)