Beispiel #1
0
    def testTupleActionMoreThanThreeElements(self):
        def dumb():
            return

        expected = "Task 'stub': invalid 'actions' tuple length"
        with pytest.raises(action.InvalidTask, match=expected):
            action.create_action((dumb, [1, 2], {
                'a': 5
            }, 'oo'), self.mytask, 'actions')
Beispiel #2
0
    def testBaseAction(self):
        class Sample(action.BaseAction):
            pass

        my_action = action.create_action(Sample(), self.mytask)
        assert isinstance(my_action, Sample)
        assert self.mytask == my_action.task
Beispiel #3
0
    def testBaseAction(self):
        class Sample(action.BaseAction):
            pass

        my_action = action.create_action(Sample(), self.mytask)
        assert isinstance(my_action, Sample)
        assert self.mytask == my_action.task
Beispiel #4
0
    def testTupleAction(self):
        def dumb():
            return

        my_action = action.create_action((dumb, [1, 2], {
            'a': 5
        }), self.mytask, 'actions')
        assert isinstance(my_action, action.PythonAction)
Beispiel #5
0
 def test_invalid_action_task_param_name(self):
     expected = "Task 'stub': invalid 'clean' type. got: True"
     with pytest.raises(action.InvalidTask, match=expected):
         action.create_action(True, self.mytask, 'clean')
Beispiel #6
0
 def testInvalidActionObject(self):
     expected = "Task 'stub': invalid 'actions' type. got: <"
     with pytest.raises(action.InvalidTask, match=expected):
         action.create_action(self, self.mytask, 'actions')
Beispiel #7
0
 def testMethodAction(self):
     def dumb(): return
     my_action = action.create_action(dumb, self.mytask, 'actions')
     assert isinstance(my_action, action.PythonAction)
Beispiel #8
0
 def testListStringAction(self):
     my_action = action.create_action(["xpto", 14, 7], self.mytask, 'actions')
     assert isinstance(my_action, action.CmdAction)
     assert my_action.shell == False
Beispiel #9
0
 def testStringAction(self):
     my_action = action.create_action("xpto 14 7", self.mytask, 'actions')
     assert isinstance(my_action, action.CmdAction)
     assert my_action.shell == True
Beispiel #10
0
    def __init__(self, name, actions, file_dep=(), targets=(),
                 task_dep=(), result_dep=(), uptodate=(),
                 calc_dep=(), setup=(), clean=(), teardown=(), is_subtask=False,
                 doc=None, params=(), verbosity=None, title=None, getargs=None):
        """sanity checks and initialization

        @param params: (list of option parameters) see cmdparse.Command.__init__
        """

        getargs = getargs or {} #default
        self.check_attr(name, 'name', name, self.valid_attr['name'])
        self.check_attr(name, 'actions', actions, self.valid_attr['actions'])
        self.check_attr(name, 'file_dep', file_dep, self.valid_attr['file_dep'])
        self.check_attr(name, 'task_dep', task_dep, self.valid_attr['task_dep'])
        self.check_attr(name, 'result_dep', result_dep,
                        self.valid_attr['result_dep'])
        self.check_attr(name, 'uptodate', uptodate, self.valid_attr['uptodate'])
        self.check_attr(name, 'calc_dep', calc_dep, self.valid_attr['calc_dep'])
        self.check_attr(name, 'targets', targets, self.valid_attr['targets'])
        self.check_attr(name, 'setup', setup, self.valid_attr['setup'])
        self.check_attr(name, 'clean', clean, self.valid_attr['clean'])
        self.check_attr(name, 'teardown', teardown, self.valid_attr['teardown'])
        self.check_attr(name, 'doc', doc, self.valid_attr['doc'])
        self.check_attr(name, 'params', params, self.valid_attr['params'])
        self.check_attr(name, 'verbosity', verbosity,
                        self.valid_attr['verbosity'])
        self.check_attr(name, 'getargs', getargs, self.valid_attr['getargs'])
        self.check_attr(name, 'title', title, self.valid_attr['title'])

        self.name = name
        self.taskcmd = cmdparse.TaskOption(name, params, None, None)
        self.options = None
        self.getargs = getargs
        self.setup_tasks = list(setup)
        self._init_deps(file_dep, task_dep, result_dep, calc_dep)
        self.targets = targets
        self.is_subtask = is_subtask
        self.result = None
        self.values = {}
        self.verbosity = verbosity
        self.custom_title = title

        # actions
        self._action_instances = None
        if actions is None:
            self._actions = []
        else:
            self._actions = actions[:]

        # uptodate
        self.uptodate = self._init_uptodate(uptodate) if uptodate else []

        # clean
        if clean is True:
            self._remove_targets = True
            self.clean_actions = ()
        else:
            self._remove_targets = False
            self.clean_actions = [create_action(a, self) for a in clean]

        self.teardown = [create_action(a, self) for a in teardown]
        self.doc = self._init_doc(doc)
        self.run_status = None
Beispiel #11
0
 def testMethodAction(self):
     def dumb(): return
     my_action = action.create_action(dumb, self.mytask)
     assert isinstance(my_action, action.PythonAction)
Beispiel #12
0
 def test_invalid_action_task_param_name(self):
     expected = "Task 'stub': invalid 'clean' type. got: True"
     with pytest.raises(action.InvalidTask, match=expected):
         action.create_action(True, self.mytask, 'clean')
Beispiel #13
0
 def testInvalidActionObject(self):
     expected = "Task 'stub': invalid 'actions' type. got: <"
     with pytest.raises(action.InvalidTask, match=expected):
         action.create_action(self, self.mytask, 'actions')
Beispiel #14
0
 def testTupleActionMoreThanThreeElements(self):
     def dumb(): return
     expected = "Task 'stub': invalid 'actions' tuple length"
     with pytest.raises(action.InvalidTask, match=expected):
         action.create_action((dumb,[1,2],{'a':5},'oo'), self.mytask,
                              'actions')
Beispiel #15
0
    def __init__(self, name, actions, file_dep=(), targets=(),
                 task_dep=(), result_dep=(), uptodate=(), run_once=False,
                 calc_dep=(), setup=(), clean=(), teardown=(), is_subtask=False,
                 doc=None, params=(), verbosity=None, title=None, getargs=None):
        """sanity checks and initialization

        @param params: (list of option parameters) see cmdparse.Command.__init__
        """

        getargs = getargs or {} #default
        # check task attributes input
        my_locals = locals()
        for attr, valid_list in self.valid_attr.iteritems():
            self.check_attr_input(name, attr, my_locals[attr], valid_list)

        self.name = name
        self.targets = targets
        self.uptodate = list(uptodate)
        self.run_once = run_once
        self.is_subtask = is_subtask
        self.result = None
        self.values = {}
        self.verbosity = verbosity
        self.custom_title = title
        self.getargs = getargs
        self.setup_tasks = list(setup)

        # options
        self.taskcmd = cmdparse.TaskOption(name, params, None, None)
        # put default values on options. this will be overwritten, if params
        # options were passed on the command line.
        self.options = self.taskcmd.parse('')[0] # ignore positional parameters

        # actions
        if actions is None:
            self.actions = []
        else:
            self.actions = [create_action(a, self) for a in actions]

        # clean
        if clean is True:
            self._remove_targets = True
            self.clean_actions = ()
        else:
            self._remove_targets = False
            self.clean_actions = [create_action(a, self) for a in clean]

        # teardown
        self.teardown = [create_action(a, self) for a in teardown]

        # dependencies
        self.dep_changed = None

        # file_dep
        self.file_dep = set()
        self._expand_file_dep(file_dep)

        # task_dep
        self.task_dep = []
        self.wild_dep = []
        self._expand_task_dep(task_dep)

        # result_dep
        self.result_dep = []
        self._expand_result_dep(result_dep)

        # calc_dep
        self.calc_dep = []
        self.calc_dep_stack = []
        self._expand_calc_dep(calc_dep)

        self._init_getargs()
        self.doc = self._init_doc(doc)

        self.run_status = None
Beispiel #16
0
 def testStringAction(self):
     my_action = action.create_action("xpto 14 7", self.mytask)
     assert isinstance(my_action, action.CmdAction)
     assert my_action.shell == True
Beispiel #17
0
 def testListStringAction(self):
     my_action = action.create_action(["xpto", 14, 7], self.mytask)
     assert isinstance(my_action, action.CmdAction)
     assert my_action.shell == False
Beispiel #18
0
 def testStringAction(self):
     my_action = action.create_action("xpto 14 7", self.mytask)
     assert isinstance(my_action, action.CmdAction)
Beispiel #19
0
 def testTupleAction(self):
     def dumb(): return
     my_action = action.create_action((dumb,[1,2],{'a':5}), self.mytask)
     assert isinstance(my_action, action.PythonAction)
Beispiel #20
0
 def actions(self):
     """lazy creation of action instances"""
     self._init_options()
     if self._action_instances is None:
         self._action_instances = [create_action(a, self) for a in self._actions]
     return self._action_instances