def test_cli_remove_stdin_outfile(input_args, mocker): runner = CliRunner() output = remove_lines_from_string(INPUT, "^foo=") with runner.isolated_filesystem(): Path("-").touch() remove_lines_file_mock = mocker.patch( "lineinfile.__main__.remove_lines_from_file", ) remove_lines_str_mock = mocker.patch( "lineinfile.__main__.remove_lines_from_string", return_value=output, ) r = runner.invoke( main, ["remove", "-oout.txt", "^foo="] + input_args, input=INPUT, standalone_mode=False, ) assert r.exit_code == 0, show_result(r) assert r.output == "" assert sorted(os.listdir()) == ["-", "out.txt"] assert Path("-").read_text() == "" assert Path("out.txt").read_text() == output remove_lines_file_mock.assert_not_called() remove_lines_str_mock.assert_called_once_with(INPUT, "^foo=")
def test_remove_lines_from_file_encoding(mocker, tmp_path): thefile = tmp_path / "file.txt" thefile.write_text(INPUT, encoding="utf-16") remove_lines_str_spy = mocker.spy(lineinfile, "remove_lines_from_string") assert remove_lines_from_file(thefile, "^foo", encoding="utf-16") remove_lines_str_spy.assert_called_once_with(INPUT, "^foo") assert listdir(tmp_path) == ["file.txt"] assert thefile.read_text(encoding="utf-16") == remove_lines_from_string( INPUT, "^foo" )
def test_cli_remove_regexp_opt_stdin(input_args, regexp, mocker): runner = CliRunner() output = remove_lines_from_string(INPUT, regexp) with runner.isolated_filesystem(): Path("file.txt").touch() remove_lines_file_mock = mocker.patch( "lineinfile.__main__.remove_lines_from_file", return_value=INPUT != output, ) remove_lines_str_mock = mocker.patch( "lineinfile.__main__.remove_lines_from_string", return_value=output, ) r = runner.invoke( main, ["remove", "-e", regexp] + input_args, input=INPUT, standalone_mode=False, ) assert r.exit_code == 0, show_result(r) assert r.output == output remove_lines_file_mock.assert_not_called() remove_lines_str_mock.assert_called_once_with(INPUT, regexp)
def test_cli_remove_outfile_is_infile(mocker): runner = CliRunner() output = remove_lines_from_string(INPUT, "^foo=") with runner.isolated_filesystem(): thefile = Path("file.txt") thefile.write_text(INPUT) remove_lines_file_mock = mocker.patch( "lineinfile.__main__.remove_lines_from_file", ) remove_lines_str_mock = mocker.patch( "lineinfile.__main__.remove_lines_from_string", return_value=output, ) r = runner.invoke( main, ["remove", "--outfile=file.txt", "^foo=", "file.txt"], standalone_mode=False, ) assert r.exit_code == 0, show_result(r) assert r.output == "" assert os.listdir() == ["file.txt"] assert thefile.read_text() == output remove_lines_file_mock.assert_not_called() remove_lines_str_mock.assert_called_once_with(INPUT, "^foo=")