Bump tar from 7.5.10 to 7.5.11 in /tests/runner-fixtures/npm-tap #32
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: | |
| pull_request: | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - "v*" | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| pull-requests: read | |
| jobs: | |
| changes: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| rust_core: ${{ steps.filter.outputs.rust_core }} | |
| integration_rust_nextest: ${{ steps.filter.outputs.integration_rust_nextest }} | |
| integration_go: ${{ steps.filter.outputs.integration_go }} | |
| integration_npm_tap: ${{ steps.filter.outputs.integration_npm_tap }} | |
| integration_jest_json: ${{ steps.filter.outputs.integration_jest_json }} | |
| integration_vitest_json: ${{ steps.filter.outputs.integration_vitest_json }} | |
| integration_python_pytest: ${{ steps.filter.outputs.integration_python_pytest }} | |
| integration_python_unittest: ${{ steps.filter.outputs.integration_python_unittest }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Detect changed paths | |
| id: filter | |
| uses: dorny/paths-filter@v3 | |
| with: | |
| filters: | | |
| rust_core: | |
| - 'src/**' | |
| - 'tests/**' | |
| - 'Cargo.toml' | |
| - 'Cargo.lock' | |
| - '.github/workflows/**' | |
| - 'scripts/**' | |
| - 'README.md' | |
| - 'CONTRIBUTING.md' | |
| - 'docs/**' | |
| integration_rust_nextest: | |
| - 'src/**' | |
| - 'scripts/verify-nextest-integration.sh' | |
| - 'tests/runner-fixtures/rust-nextest/**' | |
| - '.github/workflows/**' | |
| integration_go: | |
| - 'src/**' | |
| - 'scripts/verify-go-integration.sh' | |
| - 'tests/runner-fixtures/go-sample/**' | |
| - '.github/workflows/**' | |
| integration_npm_tap: | |
| - 'src/**' | |
| - 'scripts/verify-npm-tap-integration.sh' | |
| - 'tests/runner-fixtures/npm-tap/**' | |
| - '.github/workflows/**' | |
| integration_jest_json: | |
| - 'src/**' | |
| - 'scripts/verify-jest-integration.sh' | |
| - 'tests/runner-fixtures/jest-json/**' | |
| - '.github/workflows/**' | |
| integration_vitest_json: | |
| - 'src/**' | |
| - 'scripts/verify-vitest-integration.sh' | |
| - 'tests/runner-fixtures/vitest-json/**' | |
| - '.github/workflows/**' | |
| integration_python_pytest: | |
| - 'src/**' | |
| - 'scripts/verify-pytest-integration.sh' | |
| - 'tests/runner-fixtures/python-pytest/**' | |
| - '.github/workflows/**' | |
| integration_python_unittest: | |
| - 'src/**' | |
| - 'scripts/verify-unittest-integration.sh' | |
| - 'tests/runner-fixtures/python-unittest/**' | |
| - '.github/workflows/**' | |
| build-tapcue-debug: | |
| needs: changes | |
| if: github.event_name != 'pull_request' || needs.changes.outputs.integration_rust_nextest == 'true' || needs.changes.outputs.integration_go == 'true' || needs.changes.outputs.integration_npm_tap == 'true' || needs.changes.outputs.integration_jest_json == 'true' || needs.changes.outputs.integration_vitest_json == 'true' || needs.changes.outputs.integration_python_pytest == 'true' || needs.changes.outputs.integration_python_unittest == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Build tapcue debug binary | |
| run: cargo build --locked | |
| - name: Upload tapcue debug binary | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: tapcue-debug-bin | |
| path: target/debug/tapcue | |
| test: | |
| needs: changes | |
| if: github.event_name != 'pull_request' || needs.changes.outputs.rust_core == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Format check | |
| run: cargo fmt --all --check | |
| - name: Cargo check (locked) | |
| run: cargo check --all-targets --all-features --locked | |
| - name: Clippy | |
| run: cargo clippy --all-targets --all-features -- -D warnings | |
| - name: Tests | |
| run: cargo test --all-features --locked | |
| - name: Stream format fixtures | |
| run: cargo test --test stream_formats --locked | |
| - name: Build docs | |
| env: | |
| RUSTDOCFLAGS: -D warnings | |
| run: cargo doc --no-deps --locked | |
| - name: Validate man page | |
| run: man -l docs/man/tapcue.1 >/dev/null | |
| - name: Validate TLDR page | |
| run: | | |
| python3 - <<'PY' | |
| from pathlib import Path | |
| page = Path("docs/tldr/tapcue.md") | |
| lines = page.read_text(encoding="utf-8").splitlines() | |
| assert lines and lines[0].startswith("# "), "TLDR page must start with a title" | |
| assert any(line.startswith("> ") for line in lines), "TLDR page must include a description" | |
| assert any(line.startswith("`") and line.endswith("`") for line in lines), "TLDR page must include at least one command example" | |
| PY | |
| - name: Shell script lint | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y shellcheck | |
| shellcheck scripts/*.sh | |
| - name: Validate docs script references | |
| run: ./scripts/check-doc-links.sh | |
| - name: Dependency audit | |
| uses: rustsec/audit-check@v2 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| integration-rust-nextest: | |
| needs: [changes, build-tapcue-debug] | |
| if: github.event_name != 'pull_request' || needs.changes.outputs.integration_rust_nextest == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Install cargo-nextest | |
| uses: taiki-e/install-action@v2 | |
| with: | |
| tool: cargo-nextest | |
| - name: Download tapcue debug binary | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: tapcue-debug-bin | |
| path: bin | |
| - name: Ensure tapcue binary is executable | |
| run: chmod +x bin/tapcue | |
| - name: Verify rust nextest integration | |
| env: | |
| TAPCUE_BIN: ${{ github.workspace }}/bin/tapcue | |
| run: ./scripts/verify-nextest-integration.sh | |
| integration-go: | |
| needs: [changes, build-tapcue-debug] | |
| if: github.event_name != 'pull_request' || needs.changes.outputs.integration_go == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Go | |
| uses: actions/setup-go@v6 | |
| with: | |
| go-version: stable | |
| - name: Download tapcue debug binary | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: tapcue-debug-bin | |
| path: bin | |
| - name: Ensure tapcue binary is executable | |
| run: chmod +x bin/tapcue | |
| - name: Verify go integration | |
| env: | |
| TAPCUE_BIN: ${{ github.workspace }}/bin/tapcue | |
| run: ./scripts/verify-go-integration.sh | |
| integration-npm-tap: | |
| needs: [changes, build-tapcue-debug] | |
| if: github.event_name != 'pull_request' || needs.changes.outputs.integration_npm_tap == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: "22" | |
| cache: npm | |
| cache-dependency-path: tests/runner-fixtures/npm-tap/package-lock.json | |
| - name: Download tapcue debug binary | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: tapcue-debug-bin | |
| path: bin | |
| - name: Ensure tapcue binary is executable | |
| run: chmod +x bin/tapcue | |
| - name: Verify npm TAP integration | |
| env: | |
| TAPCUE_BIN: ${{ github.workspace }}/bin/tapcue | |
| run: ./scripts/verify-npm-tap-integration.sh | |
| integration-jest-json: | |
| needs: [changes, build-tapcue-debug] | |
| if: github.event_name != 'pull_request' || needs.changes.outputs.integration_jest_json == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: "22" | |
| cache: npm | |
| cache-dependency-path: tests/runner-fixtures/jest-json/package-lock.json | |
| - name: Download tapcue debug binary | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: tapcue-debug-bin | |
| path: bin | |
| - name: Ensure tapcue binary is executable | |
| run: chmod +x bin/tapcue | |
| - name: Verify Jest JSON integration | |
| env: | |
| TAPCUE_BIN: ${{ github.workspace }}/bin/tapcue | |
| run: ./scripts/verify-jest-integration.sh | |
| integration-vitest-json: | |
| needs: [changes, build-tapcue-debug] | |
| if: github.event_name != 'pull_request' || needs.changes.outputs.integration_vitest_json == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: "22" | |
| cache: npm | |
| cache-dependency-path: tests/runner-fixtures/vitest-json/package-lock.json | |
| - name: Download tapcue debug binary | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: tapcue-debug-bin | |
| path: bin | |
| - name: Ensure tapcue binary is executable | |
| run: chmod +x bin/tapcue | |
| - name: Verify Vitest JSON integration | |
| env: | |
| TAPCUE_BIN: ${{ github.workspace }}/bin/tapcue | |
| run: ./scripts/verify-vitest-integration.sh | |
| integration-python-pytest: | |
| needs: [changes, build-tapcue-debug] | |
| if: github.event_name != 'pull_request' || needs.changes.outputs.integration_python_pytest == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.12' | |
| - name: Set up uv | |
| uses: astral-sh/setup-uv@v7 | |
| with: | |
| enable-cache: true | |
| - name: Download tapcue debug binary | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: tapcue-debug-bin | |
| path: bin | |
| - name: Ensure tapcue binary is executable | |
| run: chmod +x bin/tapcue | |
| - name: Verify pytest integration | |
| env: | |
| TAPCUE_BIN: ${{ github.workspace }}/bin/tapcue | |
| run: ./scripts/verify-pytest-integration.sh | |
| integration-python-unittest: | |
| needs: [changes, build-tapcue-debug] | |
| if: github.event_name != 'pull_request' || needs.changes.outputs.integration_python_unittest == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.12' | |
| - name: Set up uv | |
| uses: astral-sh/setup-uv@v7 | |
| with: | |
| enable-cache: true | |
| - name: Download tapcue debug binary | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: tapcue-debug-bin | |
| path: bin | |
| - name: Ensure tapcue binary is executable | |
| run: chmod +x bin/tapcue | |
| - name: Verify unittest integration | |
| env: | |
| TAPCUE_BIN: ${{ github.workspace }}/bin/tapcue | |
| run: ./scripts/verify-unittest-integration.sh | |
| build-release: | |
| if: github.event_name == 'push' | |
| runs-on: ubuntu-latest | |
| needs: | |
| - test | |
| - integration-rust-nextest | |
| - integration-go | |
| - integration-npm-tap | |
| - integration-jest-json | |
| - integration-vitest-json | |
| - integration-python-pytest | |
| - integration-python-unittest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Build release binary | |
| run: cargo build --release | |
| - name: Package release artifact | |
| run: | | |
| mkdir -p dist | |
| cp target/release/tapcue dist/tapcue | |
| tar -C dist -czf dist/tapcue-${{ runner.os }}-${{ github.sha }}.tar.gz tapcue | |
| - name: Publish prerelease from main | |
| if: startsWith(github.ref, 'refs/heads/main') | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: prerelease-${{ github.sha }} | |
| name: tapcue prerelease ${{ github.sha }} | |
| prerelease: true | |
| files: dist/tapcue-${{ runner.os }}-${{ github.sha }}.tar.gz | |
| - name: Publish tagged release | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ github.ref_name }} | |
| name: ${{ github.ref_name }} | |
| prerelease: false | |
| files: dist/tapcue-${{ runner.os }}-${{ github.sha }}.tar.gz |