Skip to content

chore(deps-dev): update hypothesis requirement from >=6.165.0 to >=6.165.9 #417

chore(deps-dev): update hypothesis requirement from >=6.165.0 to >=6.165.9

chore(deps-dev): update hypothesis requirement from >=6.165.0 to >=6.165.9 #417

Workflow file for this run

name: CI
on:
push:
branches: [master]
paths-ignore:
- 'docs/**'
pull_request:
branches: [master]
permissions:
contents: read
jobs:
lint:
name: Lint & Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- run: pip install ruff
- name: Ruff lint
run: ruff check mcp_server/ tests/
- name: Ruff format check
run: ruff format --check mcp_server/ tests/
test:
name: Test (Python ${{ matrix.python-version }}, ${{ matrix.os }})
needs: lint
runs-on: ${{ matrix.os }}
# Pillar 4 (Versatility): 3 OS x 3 Python = 9 combos, all required.
# All cells were green for two consecutive Quality Gate cycles
# (Onda 3 + Onda 4) on macOS and Python 3.13 — promoted from
# experimental to required at v3.9.0.
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ["3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pytest pytest-cov pytest-rerunfailures hypothesis psutil numpy pyyaml
- name: Run tests with coverage
# Force bash on Windows too — the default pwsh shell propagates ANY
# stderr write as a non-zero exit code through its $LASTEXITCODE
# handling in some configurations, even when pytest itself exited
# cleanly. Bash inherits pytest's actual return code.
shell: bash
env:
# Forbid any HuggingFace network call. Tests must mock TextEmbedding
# / TextCrossEncoder. A leaked real download (race condition spawning
# a daemon thread, missing mock, etc.) would otherwise hang on slow
# Windows runners and produce "ValueError: I/O operation on closed
# file" during interpreter shutdown. With OFFLINE=1, any leak fails
# fast and visibly.
HF_HUB_OFFLINE: "1"
TRANSFORMERS_OFFLINE: "1"
# Disable HF Hub download progress bars (they spawn worker threads
# that race against pytest's interpreter shutdown).
HF_HUB_DISABLE_PROGRESS_BARS: "1"
# --reruns=1 retries flaky tests once (Pillar 2: Stability). When
# any test had to rerun, the job still passes but pytest annotates
# the rerun in the JUnit report — we surface that via a follow-up
# step in quality-gate.yml so flakes do not silently accumulate.
run: pytest tests/ -v --cov=mcp_server --cov-report=xml --cov-report=term-missing --reruns=1 --junit-xml=junit.xml
- name: Upload coverage
if: matrix.python-version == '3.12' && matrix.os == 'ubuntu-latest'
uses: codecov/codecov-action@v7
with:
file: coverage.xml
fail_ci_if_error: false
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}