def test_basic_command_line(): @tasks.task def t1(): pass _set_environment(t1=t1) try: tr, args = tasks._parse_command_line(['foo']) print_(tr) assert False, "Expected BuildFailure exception for unknown task" except tasks.BuildFailure: pass task, args = tasks._parse_command_line(['t1']) assert task == t1 task, args = tasks._parse_command_line(['t1', 't2']) assert task == t1 assert args == ['t2']
def test_consume_nargs(): # consume all args on first task @tasks.task @tasks.consume_nargs() def t11(options): assert options.args == ["1", "t12", "3"] @tasks.task def t12(options): assert False, ("Should not have run t12 because of previous " "consume_nargs()") env = _set_environment(t11=t11, t12=t12) tasks._process_commands("t11 1 t12 3".split()) assert t11.called # consume some args (specified numbers) on first and second task @tasks.task @tasks.consume_nargs(2) def t21(options): assert options.args == ["1", "2"] @tasks.task @tasks.consume_nargs(3) def t22(options): assert options.args == ["3", "4", "5"] env = _set_environment(t21=t21, t22=t22) tasks._process_commands("t21 1 2 t22 3 4 5".split()) assert t21.called assert t22.called # not enougth args consumable on called task, and other task not called env = _set_environment(t21=t21, t12=t12) try: tr, args = tasks._parse_command_line("t21 t12".split()) print_(tr) assert False, "Expected BuildFailure exception for not enougth args" except tasks.BuildFailure: pass # too much args passed, and unconsumed args are not tasks tr, args = tasks._parse_command_line("t21 1 2 3 4 5".split()) assert args == ["3", "4", "5"] # consume some args (specified numbers) on first and all other on second task @tasks.task @tasks.consume_nargs(2) def t31(options): assert options.args == ["1", "2"] @tasks.task @tasks.consume_nargs() def t32(options): assert options.args == ["3", "4", "t33", "5"] @tasks.task @tasks.consume_nargs() def t33(options): assert False, ("Should not have run t33 because of previous " "consume_nargs()") env = _set_environment(t31=t31, t32=t32, t33=t33) tasks._process_commands("t31 1 2 t32 3 4 t33 5".split()) assert t31.called assert t32.called