Fix VectorHeader/pointer invalidation after buffer relocation #15
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: CI | |
| on: [push, pull_request] | |
| jobs: | |
| # Plain build + test on each supported host. Mirrors the workflow used by | |
| # the dallison/co repository so behavior stays consistent across | |
| # projects. | |
| test: | |
| name: Build & test (${{ matrix.os }}) | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 30 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-latest | |
| - os: ubuntu-24.04-arm | |
| - os: macos-latest | |
| bazel_flags: --config=apple_silicon | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Install Bazel | |
| uses: bazel-contrib/setup-bazel@0.18.0 | |
| with: | |
| # Avoid downloading Bazel every time. | |
| bazelisk-cache: true | |
| # Store the build cache per workflow. | |
| disk-cache: ${{ github.workflow }}-${{ matrix.os }} | |
| # Share the repository cache between workflows. | |
| repository-cache: true | |
| - name: Build all targets | |
| run: | | |
| bazel build //... \ | |
| --verbose_failures \ | |
| ${{ matrix.bazel_flags }} | |
| - name: Run tests | |
| run: | | |
| bazel test //... \ | |
| --verbose_failures \ | |
| --test_output=errors \ | |
| ${{ matrix.bazel_flags }} | |
| - name: Upload Bazel test logs | |
| uses: actions/upload-artifact@v7 | |
| if: failure() | |
| with: | |
| name: bazel-test-logs-${{ matrix.os }} | |
| path: bazel-testlogs | |
| # Run the test suite under AddressSanitizer and ThreadSanitizer. Linux | |
| # only because LSan + ASan, and TSan, behave most uniformly there. | |
| sanitizers: | |
| name: ${{ matrix.config }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| config: [asan, tsan] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Install Bazel | |
| uses: bazel-contrib/setup-bazel@0.18.0 | |
| with: | |
| bazelisk-cache: true | |
| disk-cache: ${{ github.workflow }}-${{ matrix.config }} | |
| repository-cache: true | |
| - name: Run tests under ${{ matrix.config }} | |
| run: | | |
| bazel test //... \ | |
| --config=${{ matrix.config }} \ | |
| --verbose_failures \ | |
| --test_output=errors | |
| - name: Upload Bazel test logs | |
| uses: actions/upload-artifact@v7 | |
| if: failure() | |
| with: | |
| name: bazel-test-logs-${{ matrix.config }} | |
| path: bazel-testlogs | |
| # Run the test suite under Valgrind's Memcheck. Valgrind is only | |
| # available on Linux/x86_64 in practice. | |
| valgrind: | |
| name: valgrind | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Install Valgrind | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y valgrind | |
| - name: Install Bazel | |
| uses: bazel-contrib/setup-bazel@0.18.0 | |
| with: | |
| bazelisk-cache: true | |
| disk-cache: ${{ github.workflow }}-valgrind | |
| repository-cache: true | |
| - name: Run tests under Valgrind | |
| run: | | |
| bazel test //... \ | |
| --config=valgrind \ | |
| --verbose_failures \ | |
| --test_output=errors | |
| - name: Upload Bazel test logs | |
| uses: actions/upload-artifact@v7 | |
| if: failure() | |
| with: | |
| name: bazel-test-logs-valgrind | |
| path: bazel-testlogs |