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 _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__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__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_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_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_folder): fname = test_file("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__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 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, "result.txt")) assert_equal(result, "a\nbc\nd")
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 _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__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) 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_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]) expected_files = [] for (tmpl, text) in ((stdout, "STDOUT!"), (stderr, "STDERR!")): if tmpl is not None: fname = tmpl.format(id(cmd)) result = get_file_contents(os.path.join(temp_folder, fname)) assert_equal(result, text) expected_files.append(fname) assert_equal(set(os.listdir(temp_folder)), set(expected_files))
def _test_atomiccmd__pipes_out(temp_folder, stdout, stderr, kwargs): call = ("bash", "-c", "echo -n 'STDERR!' > /dev/stderr; echo -n 'STDOUT!';") cmd = AtomicCmd(call, **kwargs) cmd.run(temp_folder) assert_equal(cmd.join(), [0]) expected_files = [] for (tmpl, text) in ((stdout, "STDOUT!"), (stderr, "STDERR!")): if tmpl is not None: fname = tmpl.format(id(cmd)) result = get_file_contents(os.path.join(temp_folder, fname)) assert_equal(result, text) expected_files.append(fname) assert_equal(set(os.listdir(temp_folder)), set(expected_files))