This repository was archived by the owner on Feb 11, 2026. It is now read-only.
Mark project as read-only and archived #71
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 runtime + test tools | |
| run: | | |
| python -m pip install --upgrade pip | |
| # Устанавливаем package (runtime deps) | |
| pip install -e "." | |
| # Явно ставим инструменты для тестов/линта, чтобы они были доступны в runner | |
| pip install pytest pytest-asyncio pytest-cov pytest-timeout flake8 mypy | |
| - 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 runtime + test tools (integration) | |
| 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 + quality tools | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e "." | |
| # black/isort/pylint используются только в этом job | |
| 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 |