ci: cache fixtures
Only generate fixtures if any grammar from any parser or the parser generation itself has changed.
This commit is contained in:
parent
48a1f12ca3
commit
d4067a6ae6
3 changed files with 36 additions and 8 deletions
25
.github/actions/cache/action.yml
vendored
Normal file
25
.github/actions/cache/action.yml
vendored
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
name: 'Cache'
|
||||
description: "This action caches fixtures"
|
||||
outputs:
|
||||
cache-hit:
|
||||
description: 'Cache hit'
|
||||
value: ${{ steps.cache_output.outputs.cache-hit }}
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- uses: actions/cache@v4
|
||||
id: cache_fixtures
|
||||
with:
|
||||
path: |
|
||||
test/fixtures/grammars
|
||||
target/release/tree-sitter-*.wasm
|
||||
key: fixtures-${{ join(matrix.*, '_') }}-${{ hashFiles(
|
||||
'.github/workflows/builds.yml',
|
||||
'.github/workflows/sanitize.yml',
|
||||
'cli/src/generate/**',
|
||||
'script/generate-fixtures*',
|
||||
'test/fixtures/grammars/*/**/src/*.c') }}
|
||||
|
||||
- run: echo "cache-hit=${{ steps.cache_fixtures.outputs.cache-hit }}" >> $GITHUB_OUTPUT
|
||||
shell: bash
|
||||
id: cache_output
|
||||
11
.github/workflows/build.yml
vendored
11
.github/workflows/build.yml
vendored
|
|
@ -156,16 +156,17 @@ jobs:
|
|||
- name: Build CLI
|
||||
run: $BUILD_CMD build --release --target=${{ matrix.target }} --features=${CLI_FEATURES}
|
||||
|
||||
- name: Fetch fixtures
|
||||
if: ${{ !matrix.cli-only && inputs.run_test }} # Don't fetch fixtures for only CLI building targets
|
||||
run: script/fetch-fixtures
|
||||
- run: script/fetch-fixtures
|
||||
|
||||
- uses: ./.github/actions/cache
|
||||
id: cache
|
||||
|
||||
- name: Generate fixtures
|
||||
if: ${{ !matrix.cli-only && inputs.run_test }} # Can't natively run CLI on Github runner's host
|
||||
if: ${{ !matrix.cli-only && inputs.run_test && steps.cache.outputs.cache-hit != 'true' }} # Can't natively run CLI on Github runner's host
|
||||
run: script/generate-fixtures
|
||||
|
||||
- name: Generate WASM fixtures
|
||||
if: ${{ !matrix.cli-only && !matrix.use-cross && inputs.run_test }} # See comment for the "Build wasm library" step
|
||||
if: ${{ !matrix.cli-only && !matrix.use-cross && inputs.run_test && steps.cache.outputs.cache-hit != 'true' }} # See comment for the "Build wasm library" step
|
||||
run: script/generate-fixtures-wasm
|
||||
|
||||
- name: Run main tests
|
||||
|
|
|
|||
8
.github/workflows/sanitize.yml
vendored
8
.github/workflows/sanitize.yml
vendored
|
|
@ -27,10 +27,12 @@ jobs:
|
|||
- name: Build CLI
|
||||
run: cargo build --release
|
||||
|
||||
- name: Fetch fixtures
|
||||
run: script/fetch-fixtures
|
||||
- run: script/fetch-fixtures
|
||||
|
||||
- name: Generate fixtures
|
||||
- uses: ./.github/actions/cache
|
||||
id: cache
|
||||
|
||||
- if: ${{ steps.cache.outputs.cache-hit != 'true' }}
|
||||
run: script/generate-fixtures
|
||||
|
||||
- name: Run main tests with undefined behaviour sanitizer (UBSAN)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue