37 lines
1.5 KiB
Python
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} |