1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
"""Test print logic."""
import freezegun
import pytest
CHANGELOG_HEADER = """\
1.2 - 2020-02-25
================
"""
FRAG = """\
Fixed
-----
- Launching missiles no longer targets ourselves.
"""
@pytest.mark.parametrize("newline", ("\r\n", "\n"))
def test_print_fragment(newline, cli_invoke, changelog_d, temp_dir, capsys):
fragment = FRAG.replace("\n", newline).encode("utf-8")
(changelog_d / "20170616_nedbat.rst").write_bytes(fragment)
with freezegun.freeze_time("2020-02-25T15:18:19"):
cli_invoke(["print"])
std = capsys.readouterr()
assert std.out == FRAG
@pytest.mark.parametrize("newline", ("\r\n", "\n"))
def test_print_fragment_output(
newline, cli_invoke, changelog_d, temp_dir, capsys
):
fragment = FRAG.replace("\n", newline).encode("utf-8")
(changelog_d / "20170616_nedbat.rst").write_bytes(fragment)
output_file = temp_dir / "output.txt"
with freezegun.freeze_time("2020-02-25T15:18:19"):
cli_invoke(["print", "--output", output_file])
std = capsys.readouterr()
assert std.out == ""
assert output_file.read_text().strip() == FRAG.strip()
@pytest.mark.parametrize("newline", ("\r\n", "\n"))
def test_print_changelog(newline, cli_invoke, changelog_d, temp_dir, capsys):
changelog = (CHANGELOG_HEADER + FRAG).replace("\n", newline).encode("utf-8")
(temp_dir / "CHANGELOG.rst").write_bytes(changelog)
with freezegun.freeze_time("2020-02-25T15:18:19"):
cli_invoke(["print", "--version", "1.2"])
std = capsys.readouterr()
assert std.out == FRAG
@pytest.mark.parametrize("newline", ("\r\n", "\n"))
def test_print_changelog_output(
newline, cli_invoke, changelog_d, temp_dir, capsys
):
changelog = (CHANGELOG_HEADER + FRAG).replace("\n", newline).encode("utf-8")
(temp_dir / "CHANGELOG.rst").write_bytes(changelog)
output_file = temp_dir / "output.txt"
with freezegun.freeze_time("2020-02-25T15:18:19"):
cli_invoke(["print", "--version", "1.2", "--output", output_file])
std = capsys.readouterr()
assert std.out == ""
assert output_file.read_bytes().decode() == FRAG.strip().replace(
"\n", newline
)
def test_print_no_fragments(cli_invoke):
result = cli_invoke(["print"], expect_ok=False)
assert result.exit_code == 2
assert "No changelog fragments to collect" in result.stderr
def test_print_version_not_in_changelog(cli_invoke, changelog_d, temp_dir):
(temp_dir / "CHANGELOG.rst").write_bytes(b"BOGUS\n=====\n\n1.0\n===")
result = cli_invoke(["print", "--version", "123.456"], expect_ok=False)
assert result.exit_code == 2
assert "Unable to find version 123.456 in the changelog" in result.stderr
|