Skip to content

Introduce new public Reporter trait that is used from CLI types to report file status #1265

Introduce new public Reporter trait that is used from CLI types to report file status

Introduce new public Reporter trait that is used from CLI types to report file status #1265

Workflow file for this run

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
# Do the new project test last, because it adds the crate in the current source
# folder, and that shouldn't influence other tests.
- name: Generate, build, and run new language project
run: |
cargo run --bin tree-sitter-stack-graphs --features cli -- init \
--language-name InitTest \
--language-id init_test \
--language-file-extension it \
--grammar-crate-name tree-sitter-python \
--grammar-crate-version 0.20.0 \
--internal \
--non-interactive
cargo check -p tree-sitter-stack-graphs-init_test --all-features
cargo test -p tree-sitter-stack-graphs-init_test
cargo run -p tree-sitter-stack-graphs-init_test --features cli -- help
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 }}