# this workflow runs tests on pull request and push events targeting master branch # it also verify the generated code is up to date and valid name: Test on: pull_request: branches: - master push: branches: - master jobs: # setup is now handled by a composite action used by downstream jobs to keep # the workflow DRY. The composite action performs checkout, cache restore and # toolchain setup. verify-generated-code: # no need to depend on a separate setup job; the composite action runs in # this job and restores caches/toolchain here. runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 with: fetch-depth: 0 - name: Setup Rust, checkout and restore caches uses: ./.github/actions/setup-rust - name: generate entities from migration files run: | cd apps/cli cargo run -- db:migrate_and_generate --output-path ../../public/database/src/generated/entities - name: Check for uncommitted changes in /generated/ run: | if [[ -n $(git status --porcelain | grep '^ M .*\/generated\/') ]]; then echo "Generated code is not up to date. Please run the code generation locally and commit the changes." git status --porcelain | grep '^ M .*\/generated\/' exit 1 else echo "Generated code is up to date." fi test: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 with: fetch-depth: 0 - name: Setup Rust, checkout and restore caches uses: ./.github/actions/setup-rust - name: Run tests run: cargo test --all-features test-frontend: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 with: fetch-depth: 0 - uses: pnpm/action-setup@v4 name: Install pnpm with: version: 10 run_install: false - name: Install Node.js uses: actions/setup-node@v4 with: node-version: 22 cache: 'pnpm' cache-dependency-path: apps/frontend/pnpm-lock.yaml - name: Install frontend dependencies run: | cd apps/frontend pnpm install - name: Run frontend tests run: | cd apps/frontend pnpm test lint: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 with: fetch-depth: 0 - name: Setup Rust, checkout and restore caches uses: ./.github/actions/setup-rust with: components: clippy, rustfmt - name: Run clippy run: cargo clippy --all-features -- -D warnings - name: Check code formatting run: cargo fmt --all -- --check