blob: 1cf941cfbaebd1115302dca67efce407215e9383 [file] [log] [blame] [edit]
#!/usr/bin/env python3
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
"""Measure unit test coverage of silicon creator code.
Given a directory `out_root_dir` the coverage artifacts will be saved in
`out_root_dir`/<HEAD_TIMESTAMP>-<HEAD_HASH>/unittest/`.
Typical usage:
util/coverage/coverage_off_target.py --print-text-report
"""
from pathlib import (
Path,
PurePath,
)
from typing import Dict
import typer
from common import (
CoverageParams,
CoverageType,
LogLevel,
measure_coverage,
)
from unittest_coverage import PARAMS as UNITTEST_PARAMS
from functest_coverage import PARAMS as FUNCTEST_PARAMS
app = typer.Typer(pretty_exceptions_enable=False, add_completion=False)
PARAMS: Dict[str, CoverageParams] = {
CoverageType.UNITTEST: UNITTEST_PARAMS,
CoverageType.FUNCTEST: FUNCTEST_PARAMS,
}
@app.command()
def measure(
coverage_type: CoverageType,
out_root_dir: Path = Path("coverage"),
log_level: LogLevel = LogLevel.NONE,
print_text_report: bool = False,
) -> None:
"""Measures coverage of silicon creator code."""
measure_coverage(
log_level=log_level,
out_root_dir=out_root_dir,
out_sub_dir=PurePath(coverage_type.value),
print_text_report=print_text_report,
**PARAMS[coverage_type]._asdict(),
)
if __name__ == "__main__":
app()