adding more tests, refactoring #66
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
| # .github/workflows/ci.yml | |
| name: TreeMapper CI | |
| on: | |
| pull_request: | |
| branches: [ '**' ] | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| # --- Задание для проверки качества кода --- | |
| lint-type-check: | |
| name: Lint & Type Check | |
| runs-on: ubuntu-latest # Достаточно одной ОС/версии Python | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v3 | |
| - name: Set up Python 3.11 # Используем одну из последних версий для проверок | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: '3.11' | |
| - name: Cache pip Dependencies | |
| uses: actions/cache@v3 | |
| with: | |
| # Используем setup.cfg для ключа кэша | |
| path: ~/.cache/pip | |
| key: ${{ runner.os }}-lint-pip-${{ hashFiles('**/setup.cfg') }} | |
| restore-keys: | | |
| ${{ runner.os }}-lint-pip- | |
| - name: Install Linters and Type Checker | |
| run: | | |
| python -m pip install --upgrade pip | |
| # Устанавливаем только dev-зависимости из setup.cfg | |
| pip install .[dev] | |
| # Если нужные пакеты не в [dev], добавьте: pip install flake8 black isort mypy types-PyYAML | |
| - name: Run Linters and Formatters Check | |
| run: | | |
| flake8 src tests | |
| black --check src tests | |
| - name: Run Type Checker (Mypy) | |
| run: | | |
| # Mypy может требовать установленных зависимостей для корректной проверки | |
| mypy src tests | |
| # --- Задание для тестов на CPython --- | |
| test: | |
| needs: lint-type-check # Запускаем тесты ПОСЛЕ проверки качества кода | |
| strategy: | |
| fail-fast: false # Не отменять другие тесты при падении одного | |
| matrix: | |
| os: [ ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, macos-latest, windows-latest ] | |
| python-version: [ 3.9, '3.10', '3.11', '3.12' ] | |
| runs-on: ${{ matrix.os }} | |
| # continue-on-error: ${{ matrix.experimental || false }} # Опционально для 3.13 | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v3 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Cache pip Dependencies | |
| uses: actions/cache@v3 | |
| with: | |
| path: ~/.cache/pip | |
| # Ключ кэша включает ОС, версию Python и хэш setup.cfg | |
| key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('**/setup.cfg') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pip-${{ matrix.python-version }}- | |
| ${{ runner.os }}-pip- | |
| - name: Install Dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| # Устанавливаем пакет и dev-зависимости из setup.cfg | |
| pip install -e .[dev] | |
| # --- Шаги сборки PyInstaller и build УДАЛЕНЫ --- | |
| - name: Run Tests with Coverage | |
| run: | | |
| # Запускаем pytest с генерацией отчета покрытия в формате XML | |
| pytest -v --cov=src/treemapper --cov-report=xml | |
| - name: Upload coverage reports to Codecov | |
| # Запускаем только для одной комбинации, чтобы не дублировать отчеты | |
| if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11' | |
| uses: codecov/codecov-action@v4 | |
| # Не требует токена для публичных репозиториев на github.com | |
| # env: | |
| # CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} # Для приватных репо | |
| with: | |
| files: ./coverage.xml # Файл отчета, созданный pytest-cov | |
| fail_ci_if_error: true | |
| verbose: true | |
| # --- Задание для тестов на PyPy --- | |
| test-pypy: | |
| needs: lint-type-check # Запускаем тесты ПОСЛЕ проверки качества кода | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # Добавлена версия PyPy 3.10 (проверьте доступность в actions/setup-python) | |
| python-version: [ pypy-3.9, pypy-3.10 ] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v3 | |
| - name: Set up PyPy ${{ matrix.python-version }} | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Cache pip Dependencies | |
| uses: actions/cache@v3 | |
| with: | |
| path: ~/.cache/pip | |
| key: pypy-${{ matrix.python-version }}-pip-${{ hashFiles('**/setup.cfg') }} | |
| restore-keys: | | |
| pypy-${{ matrix.python-version }}-pip- | |
| - name: Install Dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| # Устанавливаем с dev зависимостями из setup.cfg | |
| pip install -e .[dev] | |
| # build и pytest теперь должны быть в [dev] | |
| # --- Шаг сборки build УДАЛЕН --- | |
| - name: Run Tests | |
| run: | | |
| pytest -v # Запускаем тесты без покрытия для PyPy, если оно не настроено |