def _do_test_atomiccmd__pipes_out(temp_folder, stdout, stderr, kwargs): cmd = AtomicCmd(("bash", "-c", "echo -n 'STDERR!' > /dev/stderr; echo -n 'STDOUT!';"), **kwargs) cmd.run(temp_folder) assert_equal(cmd.join(), [0]) result_out = get_file_contents(os.path.join(temp_folder, stdout.format(id(cmd)))) result_err = get_file_contents(os.path.join(temp_folder, stderr.format(id(cmd)))) assert_equal(result_out, "STDOUT!") assert_equal(result_err, "STDERR!")
def test_copy_file__copy_to_different_folder(temp_folder): with SetWorkingDirectory(temp_folder): set_file_contents("file_1", "3") copy_file("file_1", "dst/file_1") assert_equal(set(os.listdir(".")), set(["file_1", "dst"])) assert_equal(os.listdir("dst"), ["file_1"]) assert_equal(get_file_contents("file_1"), "3") assert_equal(get_file_contents("dst/file_1"), "3")
def test_copy_file__overwrite(temp_folder): with SetWorkingDirectory(temp_folder): set_file_contents("file_1", "4") set_file_contents("file_2", "5") copy_file("file_1", "file_2") assert_equal(set(os.listdir(".")), set(["file_1", "file_2"])) assert_equal(get_file_contents("file_1"), "4") assert_equal(get_file_contents("file_2"), "4")
def test_copy_file__simple_copy_in_cwd(temp_folder): with SetWorkingDirectory(temp_folder): assert_equal(os.listdir("."), []) set_file_contents("file_1", "1") assert_equal(os.listdir("."), ["file_1"]) copy_file("file_1", "file_2") assert_equal(set(os.listdir(".")), set(["file_1", "file_2"])) assert_equal(get_file_contents("file_1"), "1") assert_equal(get_file_contents("file_2"), "1")
def test_copy_file__simple_copy(temp_folder): file_1 = os.path.join(temp_folder, "file_1") file_2 = os.path.join(temp_folder, "file_2") assert_equal(os.listdir(temp_folder), []) set_file_contents(file_1, "1") assert_equal(os.listdir(temp_folder), ["file_1"]) copy_file(file_1, file_2) assert_equal(set(os.listdir(temp_folder)), set(["file_1", "file_2"])) assert_equal(get_file_contents(file_1), "1") assert_equal(get_file_contents(file_2), "1")
def test_copy_file__copy_to_new_folder(temp_folder): assert make_dirs(os.path.join(temp_folder, "src")) file_1 = os.path.join(temp_folder, "src", "file_1") file_2 = os.path.join(temp_folder, "dst", "file_2") set_file_contents(file_1, "2") copy_file(file_1, file_2) assert_equal(os.listdir(os.path.dirname(file_1)), ["file_1"]) assert_equal(os.listdir(os.path.dirname(file_2)), ["file_2"]) assert_equal(get_file_contents(file_1), "2") assert_equal(get_file_contents(file_2), "2")
def test_atomiccmd__pipes_stdin(temp_folder): fname = os.path.join("tests", "data", "fasta_file.fasta") cmd = AtomicCmd("cat", IN_STDIN=fname, OUT_STDOUT="result.txt") assert_equal(cmd.input_files, frozenset([fname])) cmd.run(temp_folder) assert_equal(cmd.join(), [0]) result = get_file_contents(os.path.join(temp_folder, "result.txt")) assert_equal(result, ">This_is_FASTA!\nACGTN\n>This_is_ALSO_FASTA!\nCGTNA\n")
def test_move_file__simple_move(temp_folder): file_1 = os.path.join(temp_folder, "file_1") file_2 = os.path.join(temp_folder, "file_2") assert_equal(os.listdir(temp_folder), []) set_file_contents(file_1, "1") assert_equal(os.listdir(temp_folder), ["file_1"]) move_file(file_1, file_2) assert_equal(os.listdir(temp_folder), ["file_2"]) assert_equal(get_file_contents(file_2), "1")
def test_atomiccmd__pipes_stdin__temp_file(temp_folder): cmd = AtomicCmd("cat", TEMP_IN_STDIN = "infile.fasta", OUT_STDOUT = "result.txt") assert_equal(cmd.input_files, frozenset()) set_file_contents(os.path.join(temp_folder, "infile.fasta"), "a\nbc\nd") cmd.run(temp_folder) assert_equal(cmd.join(), [0]) result = get_file_contents(os.path.join(temp_folder, "infile.fasta")) assert_equal(result, "a\nbc\nd")
def test_atomiccmd__pipes_stdin(temp_folder): fname = os.path.join("tests", "data", "fasta_file.fasta") cmd = AtomicCmd("cat", IN_STDIN = fname, OUT_STDOUT = "result.txt") assert_equal(cmd.input_files, frozenset([fname])) cmd.run(temp_folder) assert_equal(cmd.join(), [0]) result = get_file_contents(os.path.join(temp_folder, "result.txt")) assert_equal(result, ">This_is_FASTA!\nACGTN\n>This_is_ALSO_FASTA!\nCGTNA\n")
def test_atomiccmd__pipes_stdin__temp_file(temp_folder): cmd = AtomicCmd("cat", TEMP_IN_STDIN="infile.fasta", OUT_STDOUT="result.txt") assert_equal(cmd.input_files, frozenset()) set_file_contents(os.path.join(temp_folder, "infile.fasta"), "a\nbc\nd") cmd.run(temp_folder) assert_equal(cmd.join(), [0]) result = get_file_contents(os.path.join(temp_folder, "infile.fasta")) assert_equal(result, "a\nbc\nd")
def test_move_file__move_to_existing_folder(temp_folder): assert make_dirs(os.path.join(temp_folder, "src")) assert make_dirs(os.path.join(temp_folder, "dst")) file_1 = os.path.join(temp_folder, "src", "file_1") file_2 = os.path.join(temp_folder, "dst", "file_2") set_file_contents(file_1, "2") move_file(file_1, file_2) assert_equal(os.listdir(os.path.dirname(file_1)), []) assert_equal(os.listdir(os.path.dirname(file_2)), ["file_2"]) assert_equal(get_file_contents(file_2), "2")
def _do_test_atomiccmd__paths_temp_in(temp_folder, set_cwd, kwargs): cmd = AtomicCmd(("echo", "-n", "%%(%s)s" % tuple(kwargs.keys())), TEMP_OUT_STDOUT = "result.txt", set_cwd = set_cwd, **kwargs) cmd.run(temp_folder) assert_equal(cmd.join(), [0]) expected = os.path.join("" if set_cwd else temp_folder, "test_file") result = get_file_contents(os.path.join(temp_folder, "result.txt")) assert_equal(os.path.abspath(expected), os.path.abspath(result))
def _do_test_atomiccmd__paths_temp_in(temp_folder, set_cwd, kwargs): cmd = AtomicCmd(("echo", "-n", "%%(%s)s" % tuple(kwargs.keys())), TEMP_OUT_STDOUT="result.txt", set_cwd=set_cwd, **kwargs) cmd.run(temp_folder) assert_equal(cmd.join(), [0]) expected = os.path.join("" if set_cwd else temp_folder, "test_file") result = get_file_contents(os.path.join(temp_folder, "result.txt")) assert_equal(os.path.abspath(expected), os.path.abspath(result))
def test_atomiccmd__piping_temp(temp_folder): cmd_1 = AtomicCmd(["echo", "-n", "#@!$^"], TEMP_OUT_STDOUT=AtomicCmd.PIPE) assert_equal(cmd_1.output_files, frozenset()) cmd_2 = AtomicCmd(["cat"], TEMP_IN_STDIN=cmd_1, OUT_STDOUT="piped.txt") assert_equal(cmd_2.input_files, frozenset()) cmd_1.run(temp_folder) cmd_2.run(temp_folder) assert_equal(cmd_1.join(), [0]) assert_equal(cmd_2.join(), [0]) result = get_file_contents(os.path.join(temp_folder, "piped.txt")) assert_equal(result, "#@!$^")
def _do_test_atomiccmd__set_cwd(temp_folder, set_cwd): cwd = os.getcwd() cmd = AtomicCmd(("bash", "-c", "echo -n ${PWD}"), TEMP_OUT_STDOUT = "result.txt", set_cwd = set_cwd) cmd.run(temp_folder) assert_equal(cmd.join(), [0]) assert_equal(cwd, os.getcwd()) expected = temp_folder if set_cwd else cwd result = get_file_contents(os.path.join(temp_folder, "result.txt")) assert os.path.samefile(expected, result), "%r != %r" % (expected, result)
def _do_test_run__error_log__node_error(temp_folder, exception): temp = os.path.join(temp_folder, "xTMPx") cfg_mock = flexmock(temp_root = temp_folder) node_mock = flexmock(Node()) node_mock.should_receive("_create_temp_dir").with_args(cfg_mock) \ .and_return(temp).ordered.once node_mock.should_receive("_run").and_raise(exception).ordered.once os.mkdir(temp) assert_raises(NodeError, node_mock.run, cfg_mock) # pylint: disable=E1103 log_file = os.path.join(temp_folder, "xTMPx", "pipe.errors") assert os.path.exists(log_file) assert_in("Errors =", get_file_contents(log_file))
def _do_test_run__error_log__node_error(temp_folder, exception): temp = os.path.join(temp_folder, "xTMPx") cfg_mock = flexmock(temp_root=temp_folder) node_mock = flexmock(Node()) node_mock.should_receive("_create_temp_dir").with_args(cfg_mock) \ .and_return(temp).ordered.once node_mock.should_receive("_run").and_raise(exception).ordered.once os.mkdir(temp) assert_raises(NodeError, node_mock.run, cfg_mock) # pylint: disable=E1103 log_file = os.path.join(temp_folder, "xTMPx", "pipe.errors") assert os.path.exists(log_file) assert_in("Errors =", get_file_contents(log_file))
def test_atomiccmd__piping_temp(temp_folder): cmd_1 = AtomicCmd(["echo", "-n", "#@!$^"], TEMP_OUT_STDOUT = AtomicCmd.PIPE) assert_equal(cmd_1.output_files, frozenset()) cmd_2 = AtomicCmd(["cat"], TEMP_IN_STDIN = cmd_1, OUT_STDOUT = "piped.txt") assert_equal(cmd_2.input_files, frozenset()) cmd_1.run(temp_folder) cmd_2.run(temp_folder) assert_equal(cmd_1.join(), [0]) assert_equal(cmd_2.join(), [0]) result = get_file_contents(os.path.join(temp_folder, "piped.txt")) assert_equal(result, "#@!$^")
def _do_test_run__error_log__node_error(temp_folder, exception): cfg_mock = flexmock(temp_root = temp_folder) node_mock = flexmock(Node()) node_mock.should_receive("_run").and_raise(exception).once try: os.mkdir(os.path.join(temp_folder, "xTMPx")) with MonkeypatchCreateTempDir(root = temp_folder, subfolder = "xTMPx"): # pylint: disable=E1103 node_mock.run(cfg_mock) # pragma: no coverage except NodeError: log_file = os.path.join(temp_folder, "xTMPx", "pipe.errors") assert os.path.exists(log_file) assert_in("Errors =", get_file_contents(log_file)) return assert False # pragma: no coverage