commit
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
"""Regression tests for validate-tokens.cjs.
|
||||
|
||||
The validator used to skip any line containing ``var(--`` outright, so a
|
||||
hardcoded value sharing a line with a token reference (extremely common in
|
||||
real CSS, and universal in minified CSS where everything is one line) went
|
||||
undetected. These tests drive the CLI via ``node`` and assert it flags such
|
||||
cases. They are pytest-based so the repository's existing pytest CI runs them.
|
||||
"""
|
||||
|
||||
import shutil
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
SCRIPT = Path(__file__).resolve().parent.parent / "validate-tokens.cjs"
|
||||
|
||||
|
||||
def _run(tmp_path: Path, css: str) -> subprocess.CompletedProcess:
|
||||
node = shutil.which("node")
|
||||
if not node:
|
||||
pytest.skip("node not available")
|
||||
(tmp_path / "sample.css").write_text(css)
|
||||
return subprocess.run(
|
||||
[node, str(SCRIPT), "--dir", str(tmp_path)],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
|
||||
|
||||
def test_flags_hardcoded_hex_sharing_line_with_token(tmp_path):
|
||||
"""A hardcoded hex on the same line as a var() token is still a violation."""
|
||||
result = _run(
|
||||
tmp_path,
|
||||
".btn { background: #FF6B6B; color: var(--color-primary); }\n",
|
||||
)
|
||||
assert "#FF6B6B" in result.stdout, result.stdout
|
||||
assert result.returncode == 1
|
||||
|
||||
|
||||
def test_token_only_line_reports_no_violation(tmp_path):
|
||||
"""A line that references only tokens produces no false positives."""
|
||||
result = _run(
|
||||
tmp_path,
|
||||
".btn { background: var(--color-bg); color: var(--color-primary); }\n",
|
||||
)
|
||||
assert "No token violations" in result.stdout, result.stdout
|
||||
assert result.returncode == 0
|
||||
Reference in New Issue
Block a user