PunimTag Web Application - Major Feature Release #1
@ -374,7 +374,9 @@ jobs:
|
||||
- name: Run backend tests
|
||||
run: |
|
||||
export PYTHONPATH=$(pwd)
|
||||
export SKIP_DEEPFACE_IN_TESTS=1
|
||||
echo "🧪 Running all backend API tests..."
|
||||
echo "⚠️ DeepFace/TensorFlow disabled in tests to avoid CPU instruction errors"
|
||||
python -m pytest tests/ -v --tb=short --cov=backend --cov-report=term-missing --cov-report=xml --junit-xml=test-results.xml || true
|
||||
continue-on-error: true
|
||||
|
||||
|
||||
@ -14,11 +14,17 @@ from PIL import Image
|
||||
from sqlalchemy.orm import Session, joinedload
|
||||
from sqlalchemy import and_, func, case
|
||||
|
||||
try:
|
||||
from deepface import DeepFace
|
||||
DEEPFACE_AVAILABLE = True
|
||||
except ImportError:
|
||||
# Skip DeepFace import during tests to avoid illegal instruction errors
|
||||
if os.getenv("SKIP_DEEPFACE_IN_TESTS") == "1":
|
||||
DEEPFACE_AVAILABLE = False
|
||||
DeepFace = None
|
||||
else:
|
||||
try:
|
||||
from deepface import DeepFace
|
||||
DEEPFACE_AVAILABLE = True
|
||||
except ImportError:
|
||||
DEEPFACE_AVAILABLE = False
|
||||
DeepFace = None
|
||||
|
||||
from backend.config import (
|
||||
CONFIDENCE_CALIBRATION_METHOD,
|
||||
|
||||
27
pytest.ini
Normal file
27
pytest.ini
Normal file
@ -0,0 +1,27 @@
|
||||
[pytest]
|
||||
# Pytest configuration for PunimTag backend tests
|
||||
|
||||
# Test discovery patterns
|
||||
python_files = test_*.py
|
||||
python_classes = Test*
|
||||
python_functions = test_*
|
||||
|
||||
# Test paths
|
||||
testpaths = tests
|
||||
|
||||
# Output options
|
||||
addopts =
|
||||
-v
|
||||
--strict-markers
|
||||
--tb=short
|
||||
--disable-warnings
|
||||
|
||||
# Markers
|
||||
markers =
|
||||
slow: marks tests as slow (dummy marker for future use)
|
||||
integration: marks tests as integration tests (dummy marker for future use)
|
||||
|
||||
# Environment variables set before test collection
|
||||
# SKIP_DEEPFACE_IN_TESTS is set in conftest.py to prevent DeepFace/TensorFlow
|
||||
# from loading during tests (avoids illegal instruction errors on some CPUs)
|
||||
|
||||
@ -1,15 +1,21 @@
|
||||
"""Face pose detection (yaw, pitch, roll) using RetinaFace landmarks"""
|
||||
|
||||
import os
|
||||
import numpy as np
|
||||
from math import atan2, degrees
|
||||
from typing import Dict, Tuple, Optional, List
|
||||
|
||||
try:
|
||||
from retinaface import RetinaFace
|
||||
RETINAFACE_AVAILABLE = True
|
||||
except ImportError:
|
||||
# Skip RetinaFace import during tests to avoid illegal instruction errors
|
||||
if os.getenv("SKIP_DEEPFACE_IN_TESTS") == "1":
|
||||
RETINAFACE_AVAILABLE = False
|
||||
RetinaFace = None
|
||||
else:
|
||||
try:
|
||||
from retinaface import RetinaFace
|
||||
RETINAFACE_AVAILABLE = True
|
||||
except ImportError:
|
||||
RETINAFACE_AVAILABLE = False
|
||||
RetinaFace = None
|
||||
|
||||
|
||||
class PoseDetector:
|
||||
|
||||
@ -10,6 +10,10 @@ from fastapi.testclient import TestClient
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker, Session
|
||||
|
||||
# Prevent DeepFace/TensorFlow from loading during tests (causes illegal instruction on some CPUs)
|
||||
# Set environment variable BEFORE any backend imports that might trigger DeepFace/TensorFlow
|
||||
os.environ["SKIP_DEEPFACE_IN_TESTS"] = "1"
|
||||
|
||||
from backend.app import create_app
|
||||
from backend.db.base import Base
|
||||
from backend.db.session import get_db
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user