Skip to content

Add FirestoreStore backend (aio + generated sync) #777

Add FirestoreStore backend (aio + generated sync)

Add FirestoreStore backend (aio + generated sync) #777

Workflow file for this run

name: Run Tests
on:
pull_request:
branches:
- main
paths-ignore:
- '**/*.md'
- '.github/workflows/claude-*.yml'
push:
branches:
- main
paths-ignore:
- '**/*.md'
- '.github/workflows/claude-*.yml'
workflow_dispatch:
jobs:
markdown_lint:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: DavidAnson/markdownlint-cli2-action@v20
with:
config: '.markdownlint.jsonc'
globs: '**/*.md'
codegen_check:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: "Install uv"
uses: astral-sh/setup-uv@v6
- name: "Set up Python 3.10"
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: "Install Node.js"
uses: actions/setup-node@v4
with:
node-version: "20"
- name: "Install dependencies"
run: make sync
- name: "Run codegen"
run: make codegen
- name: "Run lint"
run: make lint
- name: "Check for uncommitted changes"
run: |
if ! git diff --exit-code; then
echo "Error: Modified files detected after running 'make codegen lint'."
echo "Please run 'make codegen lint' locally and commit the changes."
exit 1
fi
if [ -n "$(git ls-files --others --exclude-standard)" ]; then
echo "Error: Untracked files detected after running 'make codegen lint'."
echo "Untracked files:"
git ls-files --others --exclude-standard
echo "Please run 'make codegen lint' locally and commit the changes."
exit 1
fi
static_analysis:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
project:
- "key-value/key-value-aio"
- "key-value/key-value-shared"
- "key-value/key-value-sync"
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: "Install uv"
uses: astral-sh/setup-uv@v6
- name: "Install"
run: uv sync --locked --group dev
working-directory: ${{ matrix.project }}
- name: "Lint"
run: uv run ruff check --exit-non-zero-on-fix --fix .
working-directory: ${{ matrix.project }}
- name: "Format"
run: uv run ruff format --check .
working-directory: ${{ matrix.project }}
- name: "Type Check"
run: uv run basedpyright .
working-directory: ${{ matrix.project }}
test_quick:
needs:
- markdown_lint
- codegen_check
- static_analysis
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
python-version: ["3.10"]
platform:
[
ubuntu-22.04,
ubuntu-latest,
macos-14,
macos-latest,
windows-2022,
windows-latest,
]
project:
- "key-value/key-value-aio"
- "key-value/key-value-shared"
- "key-value/key-value-sync"
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: "Install uv"
uses: astral-sh/setup-uv@v6
- name: "Set pytest worker count"
id: pytest-workers
run: |
if [ "$RUNNER_OS" == "Windows" ]; then
echo "count=2" >> $GITHUB_OUTPUT
else
echo "count=auto" >> $GITHUB_OUTPUT
fi
shell: bash
- name: "Install latest dependencies"
run: uv sync --locked --group dev --python ${{ matrix.python-version }}
working-directory: ${{ matrix.project }}
- name: "Test with latest dependencies"
run: uv run pytest tests . -vv -n ${{ steps.pytest-workers.outputs.count }}
working-directory: ${{ matrix.project }}
- name: "Install oldest dependencies"
run: uv sync --group dev --python ${{ matrix.python-version }} --resolution lowest-direct
working-directory: ${{ matrix.project }}
- name: "Test with oldest dependencies"
run: uv run pytest tests . -vv -n ${{ steps.pytest-workers.outputs.count }}
working-directory: ${{ matrix.project }}
- name: "Build"
run: uv build .
working-directory: ${{ matrix.project }}
test_all:
needs:
- test_quick
timeout-minutes: 20
strategy:
matrix:
python-version: ["3.11", "3.12", "3.13"]
platform:
[
ubuntu-22.04,
ubuntu-latest,
macos-14,
macos-latest,
windows-2022,
windows-latest,
]
project:
- "key-value/key-value-aio"
- "key-value/key-value-shared"
- "key-value/key-value-sync"
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: "Install uv"
uses: astral-sh/setup-uv@v6
- name: "Set pytest worker count"
id: pytest-workers
run: |
if [ "$RUNNER_OS" == "Windows" ]; then
echo "count=2" >> $GITHUB_OUTPUT
else
echo "count=auto" >> $GITHUB_OUTPUT
fi
shell: bash
- name: "Install latest dependencies"
run: uv sync --locked --group dev --python ${{ matrix.python-version }}
working-directory: ${{ matrix.project }}
- name: "Test with latest dependencies"
run: uv run pytest tests . -vv -n ${{ steps.pytest-workers.outputs.count }}
working-directory: ${{ matrix.project }}
- name: "Install oldest dependencies"
run: uv sync --group dev --python ${{ matrix.python-version }} --resolution lowest-direct
working-directory: ${{ matrix.project }}
- name: "Test with oldest dependencies"
run: uv run pytest tests . -vv -n ${{ steps.pytest-workers.outputs.count }}
working-directory: ${{ matrix.project }}
- name: "Build"
run: uv build .
working-directory: ${{ matrix.project }}