update runtimelib and jupyter-protocol (#26) #271
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: Test Suite | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - kyoto | |
| pull_request: | |
| branches: | |
| - main | |
| - kyoto | |
| env: | |
| PANDOC_VERSION: "3.8.3" | |
| jobs: | |
| test-suite: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| runs-on: ${{ matrix.os }} | |
| name: Run test suite | |
| if: github.repository == 'quarto-dev/q2' | |
| steps: | |
| - name: Checkout Repo | |
| uses: actions/checkout@v4 | |
| # Fix mtimes IMMEDIATELY after checkout, before anything else | |
| - name: Restore file modification times | |
| shell: bash | |
| run: | | |
| git ls-files | while read file; do | |
| time=$(git log -1 --format='@%ct' -- "$file" 2>/dev/null || echo '@0') | |
| [ "$time" != "@0" ] && touch -d "$time" "$file" 2>/dev/null || true | |
| done | |
| - name: Set up Homebrew | |
| if: runner.os == 'macOS' | |
| id: set-up-homebrew | |
| uses: Homebrew/actions/setup-homebrew@main | |
| # Consistent Rust setup for both platforms | |
| - name: Set up Rust nightly | |
| uses: dtolnay/rust-toolchain@nightly | |
| - name: Output rust version | |
| shell: bash | |
| run: rustup --version | |
| # Cache Rust AFTER toolchain is set up | |
| - name: Cache Rust dependencies | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: true | |
| shared-key: "rust-test-suite" | |
| # Cache cargo-nextest and insta separately to avoid reinstalling | |
| - name: Install nextest | |
| uses: taiki-e/install-action@nextest | |
| - name: Install cargo-insta | |
| uses: taiki-e/install-action@v2 | |
| with: | |
| tool: cargo-insta | |
| # Pandoc setup (pinned to match Quarto 1.9) | |
| - name: Set up Pandoc (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| curl -LO "https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-amd64.deb" | |
| sudo dpkg -i "pandoc-${PANDOC_VERSION}-1-amd64.deb" | |
| shell: bash | |
| - name: Set up Pandoc (macOS) | |
| if: runner.os == 'macOS' | |
| run: | | |
| curl -LO "https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-arm64-macOS.pkg" | |
| sudo installer -pkg "pandoc-${PANDOC_VERSION}-arm64-macOS.pkg" -target / | |
| shell: bash | |
| # tree-sitter setup | |
| - name: Set up tree-sitter CLI (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libc6-dev gcc-multilib | |
| curl -LO https://github.com/tree-sitter/tree-sitter/releases/download/v0.25.8/tree-sitter-linux-x86.gz | |
| gunzip tree-sitter-linux-x86.gz | |
| chmod +x tree-sitter-linux-x86 | |
| sudo mv tree-sitter-linux-x86 /usr/local/bin/tree-sitter | |
| - name: Set up tree-sitter CLI (macOS) | |
| if: runner.os == 'macOS' | |
| run: brew install tree-sitter-cli | |
| # Custom lint checks (before build to fail fast) | |
| - name: Run custom lints | |
| shell: bash | |
| run: cargo xtask lint | |
| # TypeScript workspace build | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '24' | |
| cache: 'npm' | |
| - name: Install npm dependencies | |
| shell: bash | |
| run: npm ci | |
| # WASM build for hub-client (must happen before TypeScript build) | |
| - name: Set up Clang (Linux) | |
| if: runner.os == 'Linux' | |
| uses: egor-tensin/setup-clang@v1 | |
| with: | |
| version: latest | |
| platform: x64 | |
| - name: Set up LLVM (macOS) | |
| if: runner.os == 'macOS' | |
| run: brew install llvm | |
| shell: bash | |
| - name: Install wasm-pack | |
| shell: bash | |
| run: cargo install wasm-pack | |
| # - name: Build WASM module | |
| # shell: bash | |
| # run: | | |
| # cd crates/wasm-quarto-hub-client | |
| # if [ "$RUNNER_OS" = "macOS" ]; then | |
| # export PATH="/opt/homebrew/opt/llvm/bin:/usr/local/opt/llvm/bin:$PATH" | |
| # fi | |
| # export CFLAGS_wasm32_unknown_unknown="-I$(pwd)/wasm-sysroot -Wbad-function-cast -Wcast-function-type -fno-builtin -DHAVE_ENDIAN_H" | |
| # wasm-pack build --target web | |
| # - name: Build TypeScript packages | |
| # shell: bash | |
| # run: npm run build | |
| # Build and test | |
| # Deny warnings in CI so they don't accumulate silently | |
| - name: Build | |
| shell: bash | |
| run: cargo build | |
| env: | |
| RUSTFLAGS: "-D warnings" | |
| - name: Test block tree-sitter grammar | |
| shell: bash | |
| run: | | |
| cd crates/tree-sitter-qmd/tree-sitter-markdown | |
| tree-sitter test | |
| - name: Test Rust code | |
| shell: bash | |
| run: cargo nextest run | |
| env: | |
| RUSTFLAGS: "-D warnings" | |
| # - name: Run hub-client tests | |
| # shell: bash | |
| # run: | | |
| # cd hub-client | |
| # npm run test:ci |