api/routers/dev/tests/timetable_test.py
2025-07-11 13:52:19 +00:00

37 lines
1.5 KiB
Python

from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())
import os
from modules.logger_tool import initialise_logger
logger = initialise_logger(__name__, os.getenv("LOG_LEVEL"), os.getenv("LOG_PATH"), 'default', True)
from fastapi import APIRouter
router = APIRouter()
@router.post("/run-pytest-timetable")
async def run_pytest_timetable():
import subprocess
home_dir = os.environ['HOME_DIR']
backend_test_dir = os.environ['BACKEND_TEST_DIR']
logger.debug(f"original home_dir: {home_dir}")
logger.debug(f"original backend_test_dir: {backend_test_dir}")
if backend_test_dir[0] != '/':
backend_test_dir = '/' + backend_test_dir
# Convert backslashes to forward slashes for Windows compatibility
home_dir = home_dir.replace('\\', '/')
backend_test_dir = backend_test_dir.replace('\\', '/')
logger.debug(f"new home_dir: {home_dir}")
logger.debug(f"new backend_test_dir: {backend_test_dir}")
# Join and normalize the path
pytest_dir = os.path.normpath(os.path.join(home_dir, backend_test_dir.lstrip('/'), "pytest_timetable.py"))
pytest_dir = pytest_dir.replace('\\', '/') # Ensure forward slashes
f_string = f"pytest {pytest_dir} --maxfail=1 --disable-warnings -q"
logger.debug(f"f_string: {f_string}")
result = subprocess.run(f_string, capture_output=True, text=True, shell=True)
logger.debug(f"result: {result}")
return {"stdout": result.stdout, "stderr": result.stderr}