def test_06_params(instance_path): """Test referencing input parameters in other fields.""" hello = Path(instance_path) / 'hello.tar' hello.touch() argv = ['tar', 'xf', 'hello.tar', 'goodbye.txt'] factory = CommandLineToolFactory( argv, directory=instance_path, ) assert factory.inputs[1].default == 'goodbye.txt' assert factory.inputs[1].type == 'string' assert factory.inputs[1].inputBinding.position == 2 goodbye_id = factory.inputs[1].id # simulate run output = Path(instance_path) / 'goodbye.txt' output.touch() parameters = list(factory.guess_outputs([output])) assert parameters[0][0].type == 'File' assert parameters[0][0].outputBinding.glob == \ '$(inputs.{0})'.format(goodbye_id) tool = factory.generate_tool() assert tool.to_argv() == argv
def test_input_directory(instance_path): """Test input directory.""" cwd = Path(instance_path) src = cwd / 'src' src.mkdir(parents=True) for i in range(5): (src / str(i)).touch() argv = ['tar', 'czvf', 'src.tar', 'src'] factory = CommandLineToolFactory( argv, directory=instance_path, working_dir=instance_path, ) src_tar = src / 'src.tar' src_tar.touch() tool = factory.generate_tool() assert tool.to_argv() == argv assert tool.inputs[0].type == 'string' assert tool.inputs[0].default == src_tar.name assert tool.inputs[1].type == 'Directory' assert tool.inputs[1].default.path.samefile(src)
def test_stdin_and_stdout(argv, instance_path): """Test stdout mapping.""" input_ = Path(instance_path) / 'input.txt' input_.touch() output = Path(instance_path) / 'output.txt' output.touch() factory = CommandLineToolFactory( argv, directory=instance_path, working_dir=instance_path, stdin='input.txt', stdout='output.txt', stderr='error.log', ) assert factory.stdin if len(argv) > 1: assert factory.arguments assert factory.stdout == 'output.txt' assert factory.outputs[0].type == 'stdout' tool = factory.generate_tool() assert tool.to_argv() == argv std_streams = ' < input.txt > output.txt 2> error.log' assert str(tool) == ' '.join(argv) + std_streams
def test_05_stdout(instance_path): """Test stdout mapping.""" output = Path(instance_path) / 'output.txt' output.touch() argv = ['echo', 'Hello world!'] factory = CommandLineToolFactory( argv, directory=instance_path, stdout='output.txt', ) assert factory.stdout == 'output.txt' assert factory.outputs[0].type == 'stdout' tool = factory.generate_tool() assert tool.to_argv() == argv
def test_stdout_with_conflicting_arg(instance_path): """Test stdout with conflicting argument value.""" output = Path(instance_path) / 'lalala' output.touch() argv = ['echo', 'lalala'] factory = CommandLineToolFactory( argv, directory=instance_path, stdout='lalala', ) assert factory.inputs[0].default == 'lalala' assert factory.inputs[0].type == 'string' assert factory.stdout == 'lalala' assert factory.outputs[0].type == 'stdout' tool = factory.generate_tool() assert tool.to_argv() == argv
def test_04_output(instance_path): """Test describtion of outputs from a command.""" hello = Path(instance_path) / 'hello.tar' hello.touch() argv = ['tar', 'xf', 'hello.tar'] factory = CommandLineToolFactory(argv, directory=instance_path) # simulate run output = Path(instance_path) / 'hello.txt' output.touch() parameters = list(factory.guess_outputs([output])) assert parameters[0][0].type == 'File' assert parameters[0][0].outputBinding.glob == 'hello.txt' tool = factory.generate_tool() assert tool.to_argv() == argv
def test_stdin_and_stdout(argv, instance_path): """Test stdout mapping.""" input_ = Path(instance_path) / 'input.txt' input_.touch() output = Path(instance_path) / 'output.txt' output.touch() factory = CommandLineToolFactory( argv, directory=instance_path, stdin='input.txt', stdout='output.txt', ) assert factory.stdin if len(argv) > 1: assert factory.arguments assert factory.stdout == 'output.txt' assert factory.outputs[0].type == 'stdout' tool = factory.generate_tool() assert tool.to_argv() == argv