def test_split_cmdline_args_with_expandable_tags(self): splitted = ToolSpecification.split_cmdline_args("@@optional_inputs@@") self.assertEqual(splitted, ["@@optional_inputs@@"]) splitted = ToolSpecification.split_cmdline_args( "@@url:database name with spaces@@") self.assertEqual(splitted, ["@@url:database name with spaces@@"]) splitted = ToolSpecification.split_cmdline_args( "@@url:spaced name@@ -a @@url:another spaced tag@@") self.assertEqual( splitted, ["@@url:spaced name@@", "-a", "@@url:another spaced tag@@"])
def test_find_optional_input_files_without_wildcards(self): with TemporaryDirectory() as temp_dir: optional_file = pathlib.Path(temp_dir, "1.txt") optional_file.touch() pathlib.Path(temp_dir, "should_not_be_found.txt").touch() logger = mock.MagicMock() optional_input_files = ["1.txt", "does_not_exist.dat"] tool_specification = ToolSpecification( "spec name", "Python", temp_dir, [], None, logger, inputfiles_opt=optional_input_files) executable = ExecutableItem( "executable name", work_dir=temp_dir, output_dir="", tool_specification=tool_specification, cmd_line_args=[], logger=logger, ) resources = [ ProjectItemResource(None, "file", optional_file.as_uri()) ] file_paths = executable._find_optional_input_files(resources) self.assertEqual(file_paths, {"1.txt": [str(optional_file)]})
def test_find_optional_input_files_in_sub_directory(self): with TemporaryDirectory() as temp_dir: pathlib.Path(temp_dir, "subdir").mkdir() optional_file1 = pathlib.Path(temp_dir, "subdir", "1.txt") optional_file1.touch() optional_file2 = pathlib.Path(temp_dir, "subdir", "data.dat") optional_file2.touch() pathlib.Path(temp_dir, "should_not_be_found.jpg").touch() logger = mock.MagicMock() optional_input_files = ["subdir/*.txt", "subdir/data.dat"] tool_specification = ToolSpecification( "spec name", "Python", temp_dir, [], None, logger, inputfiles_opt=optional_input_files) executable = ExecutableItem( "executable name", work_dir=temp_dir, output_dir="", tool_specification=tool_specification, cmd_line_args=[], logger=logger, ) resources = [ ProjectItemResource(None, "file", optional_file1.as_uri()), ProjectItemResource(None, "file", optional_file2.as_uri()), ] file_paths = executable._find_optional_input_files(resources) self.assertEqual( file_paths, { "subdir/*.txt": [str(optional_file1)], "subdir/data.dat": [str(optional_file2)] })
def test_get_cmdline_args_with_optional_inputs(self): specification = ToolSpecification("", "", "", [], None, None) specification.cmdline_args = ["@@optional_inputs@@"] args = specification.get_cmdline_args([], {}, {}) self.assertEqual(args, [""]) specification.cmdline_args = ["@@optional_inputs@@"] args = specification.get_cmdline_args(["file.dat", "table.csv"], {}, {}) self.assertEqual(args, ["file.dat", "table.csv"]) specification.cmdline_args = ["--inputs=@@optional_inputs@@"] args = specification.get_cmdline_args(["file.dat", "table.csv"], {}, {}) self.assertEqual(args, ["--inputs=file.dat", "table.csv"])
def test_get_cmdline_args_with_datastore_urls(self): specification = ToolSpecification("", "", "", [], None, None) specification.cmdline_args = ["@@url:ds1@@"] args = specification.get_cmdline_args( [], {"ds1": "sqlite:///Q:\\databases\\base.sqlite"}, {}) self.assertEqual(args, ["sqlite:///Q:\\databases\\base.sqlite"]) specification.cmdline_args = ["--url=@@url:ds1@@"] args = specification.get_cmdline_args( [], {}, {"ds1": "sqlite:///Q:\\databases\\base.sqlite"}) self.assertEqual(args, ["--url=sqlite:///Q:\\databases\\base.sqlite"])
def test_split_cmdline_args(self): splitted = ToolSpecification.split_cmdline_args("") self.assertFalse(bool(splitted)) splitted = ToolSpecification.split_cmdline_args("--version") self.assertEqual(splitted, ["--version"]) splitted = ToolSpecification.split_cmdline_args( "--input=data.dat -h 5") self.assertEqual(splitted, ["--input=data.dat", "-h", "5"]) splitted = ToolSpecification.split_cmdline_args( '--output="a long file name.txt"') self.assertEqual(splitted, ['--output=a long file name.txt']) splitted = ToolSpecification.split_cmdline_args( "--file='file name with spaces.dat' -i 3") self.assertEqual(splitted, ["--file=file name with spaces.dat", "-i", "3"]) splitted = ToolSpecification.split_cmdline_args( "'quotation \"within\" a quotation'") self.assertEqual(splitted, ['quotation \"within\" a quotation'])
def test_get_cmdline_args_without_expansion(self): specification = ToolSpecification("", "", "", [], None, None) self.assertFalse(specification.get_cmdline_args([], {}, {})) specification.cmdline_args = ["-a", "--version", "-xvf"] self.assertEqual(specification.get_cmdline_args([], {}, {}), ["-a", "--version", "-xvf"])
def test_split_cmdline_args_with_consecutive_tags(self): splitted = ToolSpecification.split_cmdline_args( "@@optional_inputs@@@@optional_inputs@@") self.assertEqual(splitted, ["@@optional_inputs@@@@optional_inputs@@"])