name: Test Toolkits on: push: branches: - main pull_request: types: [opened, synchronize, reopened, ready_for_review] jobs: setup: runs-on: ubuntu-latest outputs: tool_matrix: ${{ steps.get-toolkits.outputs.toolkits }} steps: - name: Check out uses: actions/checkout@v4 - name: Get toolkits id: get-toolkits run: | # Find all directories in toolkits/ that have a pyproject.toml TOOLKITS=$(find toolkits -maxdepth 1 -type d -not -name "toolkits" -exec test -f {}/pyproject.toml \; -exec basename {} \; | jq -R -s -c 'split("\n")[:-1]') echo "Found toolkits: $TOOLKITS" echo "toolkits=$TOOLKITS" >> $GITHUB_OUTPUT test-toolkits: needs: setup runs-on: ubuntu-latest strategy: matrix: toolkit: ${{ fromJson(needs.setup.outputs.tool_matrix) }} fail-fast: true steps: - name: Check out uses: actions/checkout@v4 - name: Set up the environment uses: ./.github/actions/setup-uv-env - name: Install toolkit dependencies working-directory: toolkits/${{ matrix.toolkit }} run: uv pip install -e ".[dev]" - name: Check toolkit working-directory: toolkits/${{ matrix.toolkit }} run: | uv run --active pre-commit run -a uv run --active mypy --config-file=pyproject.toml - name: Test toolkit working-directory: toolkits/${{ matrix.toolkit }} run: uv run --active pytest -W ignore -v --cov=arcade_${{ matrix.toolkit }} --cov-report=xml