mirror of
https://github.com/makeplane/plane.git
synced 2025-12-16 20:07:56 +01:00
91 lines
2.2 KiB
Python
91 lines
2.2 KiB
Python
|
|
#!/usr/bin/env python
|
||
|
|
import argparse
|
||
|
|
import subprocess
|
||
|
|
import sys
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
parser = argparse.ArgumentParser(description="Run Plane tests")
|
||
|
|
parser.add_argument(
|
||
|
|
"-u", "--unit",
|
||
|
|
action="store_true",
|
||
|
|
help="Run unit tests only"
|
||
|
|
)
|
||
|
|
parser.add_argument(
|
||
|
|
"-c", "--contract",
|
||
|
|
action="store_true",
|
||
|
|
help="Run contract tests only"
|
||
|
|
)
|
||
|
|
parser.add_argument(
|
||
|
|
"-s", "--smoke",
|
||
|
|
action="store_true",
|
||
|
|
help="Run smoke tests only"
|
||
|
|
)
|
||
|
|
parser.add_argument(
|
||
|
|
"-o", "--coverage",
|
||
|
|
action="store_true",
|
||
|
|
help="Generate coverage report"
|
||
|
|
)
|
||
|
|
parser.add_argument(
|
||
|
|
"-p", "--parallel",
|
||
|
|
action="store_true",
|
||
|
|
help="Run tests in parallel"
|
||
|
|
)
|
||
|
|
parser.add_argument(
|
||
|
|
"-v", "--verbose",
|
||
|
|
action="store_true",
|
||
|
|
help="Verbose output"
|
||
|
|
)
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
# Build command
|
||
|
|
cmd = ["python", "-m", "pytest"]
|
||
|
|
markers = []
|
||
|
|
|
||
|
|
# Add test markers
|
||
|
|
if args.unit:
|
||
|
|
markers.append("unit")
|
||
|
|
if args.contract:
|
||
|
|
markers.append("contract")
|
||
|
|
if args.smoke:
|
||
|
|
markers.append("smoke")
|
||
|
|
|
||
|
|
# Add markers filter
|
||
|
|
if markers:
|
||
|
|
cmd.extend(["-m", " or ".join(markers)])
|
||
|
|
|
||
|
|
# Add coverage
|
||
|
|
if args.coverage:
|
||
|
|
cmd.extend(["--cov=plane", "--cov-report=term", "--cov-report=html"])
|
||
|
|
|
||
|
|
# Add parallel
|
||
|
|
if args.parallel:
|
||
|
|
cmd.extend(["-n", "auto"])
|
||
|
|
|
||
|
|
# Add verbose
|
||
|
|
if args.verbose:
|
||
|
|
cmd.append("-v")
|
||
|
|
|
||
|
|
# Add common flags
|
||
|
|
cmd.extend(["--reuse-db", "--nomigrations"])
|
||
|
|
|
||
|
|
# Print command
|
||
|
|
print(f"Running: {' '.join(cmd)}")
|
||
|
|
|
||
|
|
# Execute command
|
||
|
|
result = subprocess.run(cmd)
|
||
|
|
|
||
|
|
# Check coverage thresholds if coverage is enabled
|
||
|
|
if args.coverage:
|
||
|
|
print("Checking coverage thresholds...")
|
||
|
|
coverage_cmd = ["python", "-m", "coverage", "report", "--fail-under=90"]
|
||
|
|
coverage_result = subprocess.run(coverage_cmd)
|
||
|
|
if coverage_result.returncode != 0:
|
||
|
|
print("Coverage below threshold (90%)")
|
||
|
|
sys.exit(coverage_result.returncode)
|
||
|
|
|
||
|
|
sys.exit(result.returncode)
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
main()
|