adding more tests, refactoring #60
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 }}-pip-${{ hashFiles('**/setup.cfg') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pip- | |
| - name: Install Linters and Type Checker | |
| run: | | |
| python -m pip install --upgrade pip | |
| # Устанавливаем только dev-зависимости (включая линтеры, mypy) | |
| # Предполагается, что они в extras_require [dev] в setup.cfg | |
| pip install .[dev] | |
| # Если линтеров нет в setup.cfg, установите их отдельно: | |
| # pip install flake8 black isort mypy types-PyYAML types-pathspec | |
| - name: Run Linters and Formatters Check | |
| run: | | |
| flake8 src tests | |
| black --check src tests | |
| isort --check-only src tests | |
| - name: Run Type Checker (Mypy) | |
| run: | | |
| mypy src tests # Проверяем и исходники, и тесты | |
| # --- Обновленное задание для тестов --- | |
| test: | |
| needs: lint-type-check # Запускаем тесты ПОСЛЕ проверки качества кода | |
| strategy: | |
| fail-fast: false # Не отменять другие тесты при падении одного | |
| matrix: | |
| # Оставим 3 версии Ubuntu для надежности, можно сократить до latest и 20.04 | |
| os: [ ubuntu-latest, ubuntu-20.04, ubuntu-22.04, macos-latest, windows-latest ] | |
| python-version: [ 3.9, '3.10', '3.11' ] | |
| runs-on: ${{ matrix.os }} | |
| 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: | |
| # Путь к кэшу pip (работает для Linux/macOS, должно работать и для Windows в actions/cache@v3) | |
| path: ~/.cache/pip | |
| # Ключ кэша по 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 | |
| # Устанавливаем пакет в editable режиме + dev зависимости (pytest, pytest-cov) | |
| # Предполагает наличие extras_require [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 # Используем v4 | |
| # Не требует токена для публичных репозиториев на github.com | |
| # env: | |
| # CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} # Для приватных репо или других платформ | |
| with: | |
| files: ./coverage.xml # Путь к файлу отчета | |
| fail_ci_if_error: true # Завалить сборку, если выгрузка не удалась | |
| verbose: true # Для отладки | |
| # --- Обновленное задание для PyPy --- | |
| test-pypy: | |
| needs: lint-type-check | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| 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 зависимостями | |
| pip install -e .[dev] | |
| - name: Run Tests | |
| run: | | |
| pytest -v |