Merge pull request #389 from github/missing_function_syntax_type #1479
This file contains 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: Continuous integration | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
schedule: | |
- cron: "0 0 1,15 * *" | |
# In the event that there is a new push to the ref, cancel any running jobs because there are now obsolete, and wasting resources. | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
test-rust: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
rust: [stable] | |
steps: | |
- name: Install Rust environment | |
uses: hecrj/setup-rust-action@v1 | |
with: | |
rust-version: ${{ matrix.rust }} | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Check formatting | |
run: cargo fmt --all -- --check | |
- name: Cache dependencies | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo | |
target | |
key: ${{ runner.OS }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.OS }}-cargo- | |
- name: Install cargo-valgrind | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y valgrind | |
cargo install cargo-valgrind | |
- name: Build library | |
run: cargo build | |
- name: Ensure C headers are up to date | |
run: | | |
script/cbindgen | |
test -z "$(git status --porcelain)" | |
- name: Run test suite | |
run: cargo test | |
- name: Run test suite under valgrind | |
# We only need to use valgrind to test the crates that have C bindings. | |
run: cargo valgrind test -p stack-graphs | |
- name: Run lsp-positions tests without tree-sitter | |
run: cargo test -p lsp-positions --no-default-features | |
- name: Run test suite with all features enabled | |
run: cargo test --all-features | |
- name: Run test suite with all optimizations | |
run: cargo test --release | |
test-init: | |
needs: [test-rust] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
rust: [stable] | |
steps: | |
- name: Install Rust environment | |
uses: hecrj/setup-rust-action@v1 | |
with: | |
rust-version: ${{ matrix.rust }} | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Cache dependencies | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo | |
target | |
key: ${{ runner.OS }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.OS }}-cargo- | |
- name: Generate, build, and run new language project | |
run: script/ci-test-init | |
list-languages: | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: languages | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: List languages | |
id: language-list | |
run: echo "languages=$(find -mindepth 1 -maxdepth 1 -type d -printf '%P\n' | jq -R -s -c 'split("\n")[:-1]')" >> $GITHUB_OUTPUT | |
outputs: | |
languages: ${{ steps.language-list.outputs.languages }} | |
test-languages: | |
needs: [list-languages] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
language: ${{ fromJson(needs.list-languages.outputs.languages) }} | |
rust: [stable] | |
steps: | |
- name: Install Rust environment | |
uses: hecrj/setup-rust-action@v1 | |
with: | |
rust-version: ${{ matrix.rust }} | |
- name: Cache dependencies | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo | |
target | |
key: ${{ runner.OS }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.OS }}-cargo- | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Build | |
run: cargo build -p ${{ matrix.language }} | |
- name: Test | |
run: cargo test -p ${{ matrix.language }} | |
test-cli: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
rust: [stable] | |
env: | |
TEST_NAME: typescript_minimal_project | |
TSSG_TS: tree-sitter-stack-graphs-typescript | |
steps: | |
- name: Install Rust environment | |
uses: hecrj/setup-rust-action@v1 | |
with: | |
rust-version: ${{ matrix.rust }} | |
- name: Cache dependencies | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo | |
target | |
key: ${{ runner.OS }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.OS }}-cargo- | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
lfs: true | |
- name: Build | |
run: cargo build --release -p ${{ env.TSSG_TS }} --features cli | |
- name: Checkout test code | |
run: unzip ${{ env.TEST_NAME }}.zip | |
working-directory: data | |
- name: Index | |
run: | | |
target/release/${{ env.TSSG_TS }} index \ | |
-D data/${{ env.TEST_NAME }}.sqlite \ | |
--verbose \ | |
--hide-error-details \ | |
data/${{ env.TEST_NAME }} | |
- name: Status | |
run: | | |
target/release/${{ env.TSSG_TS }} status \ | |
-D data/${{ env.TEST_NAME }}.sqlite \ | |
--all | |
- name: Query | |
run: | | |
target/release/${{ env.TSSG_TS }} query \ | |
-D data/${{ env.TEST_NAME }}.sqlite \ | |
definition \ | |
data/${{ env.TEST_NAME }}/index.ts:3:10 | |
- name: Index (forced) | |
run: | | |
target/release/${{ env.TSSG_TS }} index \ | |
-D data/${{ env.TEST_NAME }}.sqlite \ | |
--verbose \ | |
--hide-error-details \ | |
data/${{ env.TEST_NAME }} |