diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5a27b2a..7f0c15a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,11 +48,18 @@ jobs: pip cache purge || true # Use binary wheels to avoid build issues with Python 3.12+ # numpy>=1.26.0 required for Python 3.12 support - pip install --only-binary=:all: numpy scipy - python -m pip install pytest pytest-cov - python -m pip install -r requirements.txt + # Force reinstall numpy/scipy with --prefer-binary and --no-cache-dir to avoid ABI mismatches + pip install --prefer-binary --no-cache-dir --force-reinstall --only-binary=:all: numpy scipy + python -m pip install --prefer-binary --no-cache-dir pytest pytest-cov + python -m pip install --prefer-binary --no-cache-dir -r requirements.txt # If segfaults persist, consider switching to conda-forge for numpy/scipy. + - name: Run single test for reproduction + run: | + # Run a single test first to verify the environment is working + python -X faulthandler -m pytest tests/test_audio_processor.py::TestEqualizerBand::test_initialization -v + continue-on-error: false + - name: Run tests run: | python -X faulthandler -m pytest tests/ -v --maxfail=1 --cov=python-equalizer --cov-report=xml --cov-report=term @@ -83,8 +90,8 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip setuptools wheel - pip install black flake8 pylint mypy isort - pip install --only-binary=:all: numpy scipy PyQt5 + pip install --prefer-binary --no-cache-dir black flake8 pylint mypy isort + pip install --prefer-binary --no-cache-dir --only-binary=:all: numpy scipy PyQt5 - name: Check code formatting with Black run: | @@ -127,7 +134,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip setuptools wheel - pip install --only-binary=:all: numpy scipy PyQt5 + pip install --prefer-binary --no-cache-dir --only-binary=:all: numpy scipy PyQt5 - name: Run examples run: |