name: Test on: [push, pull_request, workflow_dispatch] permissions: {} env: FORCE_COLOR: 1 jobs: test: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: python-version: ["pypy3.10", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] os: [windows-latest, macos-latest, ubuntu-latest] steps: - uses: actions/checkout@v4 with: persist-credentials: false - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} allow-prereleases: true - name: Install uv uses: astral-sh/setup-uv@v5 - name: Tox tests run: | uvx --with tox-uv tox -e py - name: Test CLI if: matrix.os == 'ubuntu-latest' run: | uvx --with tox-uv tox -e cli - name: Test emojis.json is up-to-date run: | # Install uv pip install --system -e . # Regenerate python scripts/despacify.py # Fail if different git diff --name-only --exit-code - name: Upload coverage uses: codecov/codecov-action@v5 with: flags: ${{ matrix.os }} name: ${{ matrix.os }} Python ${{ matrix.python-version }} success: needs: test runs-on: ubuntu-latest name: Test successful steps: - name: Success run: echo Test successful