51 lines
1.1 KiB
Python
51 lines
1.1 KiB
Python
|
"""Validate coverage files."""
|
||
|
from pathlib import Path
|
||
|
from typing import Dict
|
||
|
|
||
|
from .model import Config, Integration
|
||
|
|
||
|
|
||
|
def validate(integrations: Dict[str, Integration], config: Config):
|
||
|
"""Validate coverage."""
|
||
|
coverage_path = config.root / ".coveragerc"
|
||
|
|
||
|
not_found = []
|
||
|
checking = False
|
||
|
|
||
|
with coverage_path.open("rt") as fp:
|
||
|
for line in fp:
|
||
|
line = line.strip()
|
||
|
|
||
|
if not line or line.startswith("#"):
|
||
|
continue
|
||
|
|
||
|
if not checking:
|
||
|
if line == "omit =":
|
||
|
checking = True
|
||
|
continue
|
||
|
|
||
|
# Finished
|
||
|
if line == "[report]":
|
||
|
break
|
||
|
|
||
|
path = Path(line)
|
||
|
|
||
|
# Discard wildcard
|
||
|
while "*" in path.name:
|
||
|
path = path.parent
|
||
|
|
||
|
if not path.exists():
|
||
|
not_found.append(line)
|
||
|
|
||
|
if not not_found:
|
||
|
return
|
||
|
|
||
|
errors = []
|
||
|
|
||
|
if not_found:
|
||
|
errors.append(
|
||
|
f".coveragerc references files that don't exist: {', '.join(not_found)}."
|
||
|
)
|
||
|
|
||
|
raise RuntimeError(" ".join(errors))
|