implement puava_vector dynamic array #15
Workflow file for this run
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
| name: Puava CI | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| pull_request: | |
| branches: [ "main" ] | |
| jobs: | |
| # --- JOB 1: LINTING (The Style Police) --- | |
| # This runs fast. If it fails, we don't bother building. | |
| lint: | |
| name: Lint & Format | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install Poetry | |
| run: pip install poetry | |
| - name: Add Export Plugin to Poetry | |
| run: poetry self add "poetry-plugin-export" | |
| - name: Install pre-commit | |
| run: pip install pre-commit | |
| # Runs all hooks defined in .pre-commit-config.yaml | |
| # Checks every file in the repo. | |
| - name: Run pre-commit | |
| run: pre-commit run --all-files | |
| # --- JOB 2: BUILD & TEST --- | |
| test: | |
| name: Test (${{ matrix.os }}) | |
| needs: lint # Wait for lint to pass | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false # If Linux fails, let macOS finish so we see all errors | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Setup Bazel | |
| uses: bazel-contrib/setup-bazel@0.8.5 | |
| with: | |
| bazelisk-cache: true | |
| disk-cache: true | |
| repository-cache: true | |
| # 1. Standard Test Run | |
| # Runs all tests in standard mode. | |
| - name: Run All Tests (Standard) | |
| run: bazel test //... --test_output=errors | |
| # 2. Memory Safety Run (AddressSanitizer) - Linux Only | |
| # Catches buffer overflows and memory leaks. | |
| - name: Run Tests with AddressSanitizer (ASan) | |
| if: runner.os == 'Linux' | |
| run: | | |
| bazel test //... \ | |
| --test_output=errors \ | |
| --copt=-fsanitize=address \ | |
| --linkopt=-fsanitize=address \ | |
| --copt=-g \ | |
| --copt=-O1 \ | |
| --copt=-fno-omit-frame-pointer |