Пример #1
0
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=")
Пример #2
0
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"
    )
Пример #3
0
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)
Пример #4
0
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=")