def test_conditional_evaluation(self): select_xml = XML( '''<param name="always_true" type="select"><option value="true">True</option></param>''' ) parameter = SelectToolParameter(self.tool, select_xml) conditional = Conditional() conditional.name = "c" conditional.test_param = parameter when = ConditionalWhen() when.inputs = {"thresh": self.tool.test_thresh_param()} when.value = "true" conditional.cases = [when] self.tool.set_params({"c": conditional}) self.job.parameters = [ JobParameter( name="c", value= '''{"thresh": 4, "always_true": "true", "__current_case__": 0}''' ) ] self.tool._command_line = "prog1 --thresh=${c.thresh} --test_param=${c.always_true}" self._set_compute_environment() command_line, extra_filenames = self.evaluator.build() self.assertEquals(command_line, "prog1 --thresh=4 --test_param=true")
def __test_arbitrary_path_rewriting(self): self.job.parameters = [ JobParameter(name="index_path", value="\"/old/path/human\"") ] xml = XML('''<param name="index_path" type="select"> <option value="/old/path/human">Human</option> <option value="/old/path/mouse">Mouse</option> </param>''') parameter = SelectToolParameter(self.tool, xml) def get_field_by_name_for_value(name, value, trans, other_values): assert value == "/old/path/human" assert name == "path" return ["/old/path/human"] parameter.options = Bunch( get_field_by_name_for_value=get_field_by_name_for_value) self.tool.set_params({"index_path": parameter}) self.tool._command_line = "prog1 $index_path.fields.path" def test_path_rewriter(v): if v: v = v.replace("/old", "/new") return v self._set_compute_environment(path_rewriter=test_path_rewriter) command_line, extra_filenames = self.evaluator.build() self.assertEquals(command_line, "prog1 /new/path/human")
def setUp(self): self.setup_app() self.tool = MockTool(self.app) self.job = Job() self.job.history = History() self.job.parameters = [JobParameter(name="thresh", value="4")] self.evaluator = ToolEvaluator(self.app, self.tool, self.job, self.test_directory)
def __test_arbitrary_path_rewriting(self): self.job.parameters = [ JobParameter(name="index_path", value="\"/old/path/human\"") ] xml = XML('''<param name="index_path" type="select"> <option value="/old/path/human">Human</option> <option value="/old/path/mouse">Mouse</option> </param>''') parameter = SelectToolParameter(self.tool, xml) def get_field_by_name_for_value(name, value, trans, other_values): assert value == "/old/path/human" assert name == "path" return ["/old/path/human"] def get_options(trans, other_values): return [["", "/old/path/human", ""]] parameter.options = Bunch( get_field_by_name_for_value=get_field_by_name_for_value, get_options=get_options) self.tool.set_params({"index_path": parameter}) self.tool._command_line = "prog1 $index_path.fields.path" self._set_compute_environment( unstructured_path_rewrites={"/old": "/new"}) command_line = self.evaluator.build()[0] self.assertEqual(command_line, "prog1 /new/path/human")
def test_repeat_evaluation(self): repeat = Repeat() repeat.name = "r" repeat.inputs = {"thresh": self.tool.test_thresh_param()} self.tool.set_params({"r": repeat}) self.job.parameters = [JobParameter(name="r", value='''[{"thresh": 4, "__index__": 0},{"thresh": 5, "__index__": 1}]''')] self.tool._command_line = "prog1 #for $r_i in $r # $r_i.thresh#end for#" self._set_compute_environment() command_line, extra_filenames, _ = self.evaluator.build() self.assertEqual(command_line, "prog1 4 5")
def test_evaluation_of_optional_datasets(self): # Make sure optional dataset don't cause evaluation to break and # evaluate in cheetah templates as 'None'. select_xml = XML('''<param name="input1" type="data" optional="true"></param>''') parameter = DataToolParameter(self.tool, select_xml) self.job.parameters = [JobParameter(name="input1", value=u'null')] self.tool.set_params({"input1": parameter}) self.tool._command_line = "prog1 --opt_input='${input1}'" self._set_compute_environment() command_line, extra_filenames, _ = self.evaluator.build() self.assertEqual(command_line, "prog1 --opt_input='None'")