84 lines
2.0 KiB
Python
Executable File
84 lines
2.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Run script for the sim-search API tests.
|
|
|
|
This script runs the API tests and provides a clear output of the test results.
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
import argparse
|
|
import subprocess
|
|
import time
|
|
|
|
def parse_args():
|
|
"""Parse command line arguments."""
|
|
parser = argparse.ArgumentParser(description="Run the sim-search API tests")
|
|
parser.add_argument(
|
|
"--test-file",
|
|
type=str,
|
|
default="tests/test_api.py",
|
|
help="Test file to run",
|
|
)
|
|
parser.add_argument(
|
|
"--verbose",
|
|
action="store_true",
|
|
help="Enable verbose output",
|
|
)
|
|
parser.add_argument(
|
|
"--xvs",
|
|
action="store_true",
|
|
help="Run tests with -xvs flag (exit on first failure, verbose, show output)",
|
|
)
|
|
parser.add_argument(
|
|
"--coverage",
|
|
action="store_true",
|
|
help="Run tests with coverage",
|
|
)
|
|
return parser.parse_args()
|
|
|
|
def run_tests(args):
|
|
"""Run the tests."""
|
|
print(f"Running tests from {args.test_file}...")
|
|
|
|
# Build the command
|
|
command = ["pytest"]
|
|
|
|
if args.xvs:
|
|
command.append("-xvs")
|
|
elif args.verbose:
|
|
command.append("-v")
|
|
|
|
if args.coverage:
|
|
command.extend(["--cov=app", "--cov-report=term", "--cov-report=html"])
|
|
|
|
command.append(args.test_file)
|
|
|
|
# Run the tests
|
|
start_time = time.time()
|
|
result = subprocess.run(command)
|
|
end_time = time.time()
|
|
|
|
# Print the results
|
|
if result.returncode == 0:
|
|
print(f"\n✅ Tests passed in {end_time - start_time:.2f} seconds")
|
|
else:
|
|
print(f"\n❌ Tests failed in {end_time - start_time:.2f} seconds")
|
|
|
|
return result.returncode
|
|
|
|
def main():
|
|
"""Main function."""
|
|
args = parse_args()
|
|
|
|
# Check if the test file exists
|
|
if not os.path.exists(args.test_file):
|
|
print(f"Error: Test file {args.test_file} does not exist")
|
|
return 1
|
|
|
|
# Run the tests
|
|
return run_tests(args)
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|