36 lines
1014 B
Python
36 lines
1014 B
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
PROJECT_ROOT = Path(__file__).resolve().parents[1]
|
|
FORBIDDEN_TOKEN = "ever" + "os"
|
|
SKIPPED_PARTS = {
|
|
".git",
|
|
".pytest_cache",
|
|
".venv",
|
|
"__pycache__",
|
|
"data",
|
|
}
|
|
|
|
|
|
def test_current_project_does_not_expose_upstream_product_name() -> None:
|
|
matches: list[str] = []
|
|
for path in PROJECT_ROOT.rglob("*"):
|
|
relative = path.relative_to(PROJECT_ROOT)
|
|
if any(part in SKIPPED_PARTS for part in relative.parts):
|
|
continue
|
|
if FORBIDDEN_TOKEN in path.name.lower():
|
|
matches.append(f"filename: {relative}")
|
|
if not path.is_file():
|
|
continue
|
|
try:
|
|
text = path.read_text(encoding="utf-8")
|
|
except UnicodeDecodeError:
|
|
continue
|
|
for line_number, line in enumerate(text.splitlines(), start=1):
|
|
if FORBIDDEN_TOKEN in line.lower():
|
|
matches.append(f"content: {relative}:{line_number}")
|
|
|
|
assert matches == []
|