"""The section 5.2 comparison: an unmodified copy, plus added @font-face rules.""" from mews import css CANONICAL = ( __import__("pathlib").Path(__file__).resolve().parent.parent / "mews-0.1.css" ).read_text() FONT_FACE = """@font-face { font-family: "Atkinson Hyperlegible"; src: url(/fonts/atkinson.woff2) format("woff2"); } """ def test_an_unmodified_copy_passes(): assert css.compare(CANONICAL).equal def test_line_endings_and_trailing_spaces_do_not_matter(): mangled = CANONICAL.replace("\n", " \r\n") + "\n\n\n" assert css.compare(mangled).equal def test_an_added_font_face_passes_and_is_read(): result = css.compare(FONT_FACE + CANONICAL) assert result.equal assert result.font_urls == ["/fonts/atkinson.woff2"] def test_a_font_face_at_the_end_also_passes(): assert css.compare(CANONICAL + "\n" + FONT_FACE).equal def test_a_changed_rule_fails_with_a_line_number(): result = css.compare(CANONICAL.replace("#faf8f3", "#ffffff")) assert not result.equal assert result.diff_line == 5 assert "background-color" in result.diff def test_a_reordered_rule_fails(): lines = CANONICAL.split("\n") swapped = "\n".join([*lines[:4], lines[5], lines[4], *lines[6:]]) assert not css.compare(swapped).equal def test_a_removed_rule_fails(): assert not css.compare(CANONICAL.replace("hr {", "hr-off {")).equal def test_an_import_is_noticed(): assert css.compare('@import url("x.css");\n' + CANONICAL).has_import def test_a_font_face_inside_a_media_query_is_not_stripped(): inner = "@media screen {\n" + FONT_FACE + "}\n" result = css.compare(CANONICAL + inner) assert not result.equal