def CmdFactory(cls, outstream=None, task_loader=None, dep_file=None, backend=None, task_list=None, sel_tasks=None, dep_manager=None, config=None, cmds=None): """helper for test code, so test can call _execute() directly""" loader = get_loader(config, task_loader, cmds) cmd = cls(task_loader=loader, config=config, cmds=cmds) if outstream: cmd.outstream = outstream if backend: assert backend == "dbm" # the only one used on tests cmd.dep_manager = Dependency(DbmDB, dep_file, MD5Checker) elif dep_manager: cmd.dep_manager = dep_manager cmd.dep_file = dep_file # (str) filename usually '.doit.db' cmd.task_list = task_list # list of tasks cmd.sel_tasks = sel_tasks # from command line or default_tasks return cmd
def test_execute(self, depfile_name): members = {'task_xxx1': lambda : {'actions':[]},} loader = get_loader({}, task_loader=ModuleTaskLoader(members)) mycmd = self.MyCmd(task_loader=loader) assert 'min' == mycmd.parse_execute([ '--db-file', depfile_name, '--mine', 'min'])
def testPluginLoader(self): entry_point = {'mod': 'tests.sample_plugin:MyLoader'} config = { 'GLOBAL': {'loader': 'mod'}, 'LOADER': entry_point, } loader = get_loader(config) mycmd = self.MyCmd(task_loader=loader, config=config) assert mycmd.loader.__class__.__name__ == 'MyLoader' task_list, dodo_config = mycmd.loader.load_tasks(mycmd, {}, []) assert task_list[0].name == 'sample_task' assert dodo_config == {'verbosity': 2}
def test_new_cmd(self): class MyRawCmd(self.MyCmd): def execute(self, params, args): return params['my_opt'] members = {'task_xxx1': lambda : {'actions':[]},} cmds = {'foo':None, 'bar':None} loader = get_loader({}, task_loader=ModuleTaskLoader(members), cmds=cmds) mycmd = MyRawCmd(task_loader=loader) assert mycmd.loader.cmd_names == ['bar', 'foo'] assert 'min' == mycmd.parse_execute(['--mine', 'min'])
def test_execute_provides_dep_manager(self, mock_globals, depfile_name): mock_globals.dep_manager = None members = {'task_xxx1': lambda: {'actions': []}} class MockTaskLoader(ModuleTaskLoader): def load_tasks(self, cmd, pos_args): # ensure dep_manager is set before tasks are loaded: assert mock_globals.dep_manager return super().load_tasks(cmd, pos_args) loader = get_loader({}, task_loader=MockTaskLoader(members)) mycmd = self.MyCmd(task_loader=loader) mycmd.parse_execute(['--db-file', depfile_name, '--mine', 'min']) assert mock_globals.dep_manager == mycmd.dep_manager