Dev/1.2.2 #3
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Tests | |
| on: | |
| push: | |
| branches: [ main, develop ] | |
| pull_request: | |
| branches: [ main, develop ] | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ['3.10', '3.11', '3.12', '3.13'] | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Cache pip packages | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.cache/pip | |
| key: ${{ runner.os }}-pip-${{ hashFiles('**/pyproject.toml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pip- | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e ".[test]" | |
| - name: Lint with flake8 | |
| run: | | |
| flake8 src/pymax tests \ | |
| --count \ | |
| --select=E9,F63,F7,F82 \ | |
| --show-source \ | |
| --statistics | |
| flake8 src/pymax tests \ | |
| --count \ | |
| --exit-zero \ | |
| --max-complexity=10 \ | |
| --max-line-length=79 \ | |
| --statistics | |
| continue-on-error: true | |
| - name: Type check with mypy | |
| run: | | |
| mypy src/pymax \ | |
| --ignore-missing-imports \ | |
| --no-error-summary | |
| continue-on-error: true | |
| - name: Run unit tests | |
| run: | | |
| pytest -m "not mockserver" \ | |
| --cov=src/pymax \ | |
| --cov-report=xml \ | |
| --cov-report=term-missing | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| files: coverage.xml | |
| flags: unittests | |
| name: codecov-umbrella | |
| fail_ci_if_error: false | |
| - name: Archive pytest cache | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: pytest-cache-${{ matrix.python-version }} | |
| path: .pytest_cache/ | |
| retention-days: 5 | |
| integration-tests: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository (with submodules) | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.13' | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e "." | |
| pip install pytest pytest-asyncio pytest-cov pytest-timeout flake8 mypy | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.22' | |
| - name: Start MockServer | |
| run: | | |
| git clone https://github.com/fresh-milkshake/gomax-prerelease.git | |
| cd gomax-prerelease/mockserver | |
| go mod download | |
| go run cmd/server/main.go & | |
| sleep 3 | |
| - name: Run integration tests | |
| run: | | |
| pytest -m mockserver -v --tb=short | |
| continue-on-error: true | |
| env: | |
| MOCKSERVER_WS_URL: ws://localhost:8080/ | |
| MOCKSERVER_HTTP_URL: http://localhost:8080 | |
| code-quality: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.13' | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e ".[test]" | |
| pip install black isort pylint | |
| - name: Check code formatting with black | |
| run: black --check src/pymax tests | |
| continue-on-error: true | |
| - name: Check import sorting with isort | |
| run: isort --check-only src/pymax tests | |
| continue-on-error: true |