Skip to content

feat: Add API caching and fix integration tests #19

feat: Add API caching and fix integration tests

feat: Add API caching and fix integration tests #19

Workflow file for this run

name: Test Suite
on:
push:
branches: [ main, master, 'feat/**', 'fix/**' ]
pull_request:
branches: [ main, master ]
jobs:
unit-tests:
name: Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
cache-dependency-path: scripts/requirements.txt
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r scripts/requirements.txt
pip install pytest pytest-cov pytest-mock
- name: Run unit tests
run: |
pytest tests/ -m unit -v --tb=short
- name: Run tests without API (mock-safe tests)
run: |
pytest tests/test_validator.py tests/test_v2_server.py -v --tb=short
# NOTE: Integration tests are run locally before merging.
# They require Tibco Scribe API access with IP whitelisting.
# Run locally with: .venv/bin/pytest tests/ -m integration -v
# Or use the pre-push hook: scripts/run-integration-tests.sh
coverage:
name: Test Coverage
runs-on: ubuntu-latest
needs: unit-tests
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
cache-dependency-path: scripts/requirements.txt
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r scripts/requirements.txt
pip install pytest pytest-cov pytest-mock
- name: Run tests with coverage
run: |
pytest tests/test_validator.py tests/test_v2_server.py \
--cov=scripts \
--cov-report=xml \
--cov-report=term-missing \
-v --tb=short
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
file: ./coverage.xml
fail_ci_if_error: false
verbose: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
lint:
name: Code Quality
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install linting tools
run: |
python -m pip install --upgrade pip
pip install ruff
- name: Run ruff linter
run: |
ruff check scripts/ tests/ --ignore=E501,F401 --exit-zero