Add offline workflow and coverage tests
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
"""Run pytest under coverage in this environment.
|
||||
|
||||
The plain ``coverage run -m pytest`` path reloads NumPy under the current VS Code
|
||||
Python startup environment, which breaks pandas/numpy reductions. Import NumPy
|
||||
before starting coverage so the measured test run uses one stable NumPy module.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
|
||||
import numpy # noqa: F401
|
||||
import coverage
|
||||
import pytest
|
||||
|
||||
|
||||
def main(argv: list[str]) -> int:
|
||||
pytest_args = argv or ["tests/", "-v"]
|
||||
|
||||
cov = coverage.Coverage(config_file=True)
|
||||
cov.erase()
|
||||
cov.start()
|
||||
test_status = pytest.main(pytest_args)
|
||||
cov.stop()
|
||||
cov.save()
|
||||
|
||||
if test_status != 0:
|
||||
return int(test_status)
|
||||
|
||||
total = cov.report()
|
||||
print(f"\nCoverage total: {total:.2f}%")
|
||||
fail_under = float(cov.config.fail_under)
|
||||
if total < fail_under:
|
||||
print(f"Coverage failure: total {total:.2f}% is below {fail_under:.2f}%")
|
||||
return 2
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main(sys.argv[1:]))
|
||||
Reference in New Issue
Block a user