Files
ETPlot/tests/run_pytest_coverage.py
T
2025-09-08 10:52:58 +02:00

79 lines
2.1 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Clean pytest-based coverage runner for container environment.
"""
import subprocess
import sys
import os
from pathlib import Path
def run_pytest_with_coverage():
"""Run pytest with coverage analysis."""
print("🧪 Running pytest with coverage...")
# Ensure we're in the right directory
if Path('/src').exists():
os.chdir('/src')
else:
os.chdir(Path(__file__).parent.parent)
# Clean previous coverage data
subprocess.run(['coverage', 'erase'], capture_output=True)
# Run pytest with coverage
cmd = [
'python3', '-m', 'pytest',
'tests/test_pytest_suite.py',
'--cov=.',
'--cov-report=term-missing',
'--cov-report=html:coverage_html_report',
'--cov-report=xml:coverage.xml',
'--cov-config=.coveragerc',
'-v'
]
print(f"Running: {' '.join(cmd)}")
result = subprocess.run(cmd)
if result.returncode == 0:
print("\n✅ Pytest coverage completed successfully!")
# Extract coverage percentage
try:
coverage_result = subprocess.run(
['coverage', 'report', '--format=total'],
capture_output=True, text=True
)
if coverage_result.returncode == 0:
coverage_pct = float(coverage_result.stdout.strip())
print(f"🎯 Total Coverage: {coverage_pct:.2f}%")
if coverage_pct >= 80:
print("✅ Coverage target met (≥80%)")
return True
else:
print("⚠️ Coverage below target (≥80%)")
except (ValueError, subprocess.SubprocessError):
print("⚠️ Could not extract coverage percentage")
return True
else:
print("❌ Pytest coverage failed!")
return False
def main():
"""Main entry point."""
print("=" * 60)
print("🔬 Gallery Generator - Pytest Coverage Testing")
print("=" * 60)
success = run_pytest_with_coverage()
sys.exit(0 if success else 1)
if __name__ == "__main__":
main()