rspec/rspec-tools/tests/validation/test_asciidoc_sanitization.py

51 lines
1.7 KiB
Python

import re
from pathlib import Path
import pytest
from rspec_tools.validation.sanitize_asciidoc import sanitize_asciidoc
def relative_output(capsys, path: Path):
return capsys.readouterr().out.replace(str(path), "$PATH")
@pytest.mark.parametrize(
"invalid_file,expected_count",
[
("unbalanced_single_backquotes", 1),
("unbalanced_double_backquotes", 1),
("triple_backquotes", 1),
("unprotected_formatting", 4),
("unprotected_formatting_with_plusses", 1),
("wrong_constrained_passthrough", 1),
("unclosed_ifdef", 1),
("close_unopened_ifdef", 1),
("two_ifdef", 1),
("two_ifdef_unclosed", 1),
("vscode_ifdef", 2),
("wrong_ifdef", 1),
("wrong_endif", 1),
("include_stuck_before", 1),
("include_stuck_after", 1),
("two_stuck_includes", 2),
("unnamed_language", 2),
],
)
def test_need_sanitation(
mockinvalidasciidoc: Path, invalid_file, expected_count, capsys, snapshot
):
"""Check that we detect needs for sanitation."""
name_path = Path(invalid_file)
adoc = mockinvalidasciidoc / name_path.with_suffix(".adoc")
expected = mockinvalidasciidoc / "snapshots" / name_path.with_suffix(".txt")
assert sanitize_asciidoc(adoc) == expected_count
snapshot.snapshot_dir = mockinvalidasciidoc / "snapshots"
snapshot.assert_match(relative_output(capsys, mockinvalidasciidoc), expected)
def test_correctly_sanitized(mockasciidoc: Path):
"""Check that we raise no issue on correctly sanitized asciidoc"""
name_path = Path("valid")
adoc = mockasciidoc / name_path.with_suffix(".adoc")
assert sanitize_asciidoc(adoc) == 0