perf: fold no-op transform scans into parent on ASCII text #334
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 | |
| on: | |
| push: | |
| paths: | |
| - 'matcher_py/src/**' | |
| - 'matcher_py/test/**' | |
| - 'matcher_py/python/**' | |
| - 'matcher_py/build.rs' | |
| - 'matcher_py/Cargo.toml' | |
| - 'matcher_py/pyproject.toml' | |
| - 'matcher_rs/src/**' | |
| - 'matcher_rs/tests/**' | |
| - 'matcher_rs/process_map/**' | |
| - 'matcher_rs/build.rs' | |
| - 'matcher_rs/Cargo.toml' | |
| - 'matcher_c/src/**' | |
| - 'matcher_c/Cargo.toml' | |
| - 'matcher_java/rust_src/**' | |
| - 'matcher_java/src/**' | |
| - 'matcher_java/Cargo.toml' | |
| - 'matcher_java/pom.xml' | |
| - '.github/workflows/test.yml' | |
| - '.cargo/config.toml' | |
| pull_request: | |
| paths: | |
| - 'matcher_py/src/**' | |
| - 'matcher_py/test/**' | |
| - 'matcher_py/python/**' | |
| - 'matcher_py/build.rs' | |
| - 'matcher_py/Cargo.toml' | |
| - 'matcher_py/pyproject.toml' | |
| - 'matcher_rs/src/**' | |
| - 'matcher_rs/tests/**' | |
| - 'matcher_rs/process_map/**' | |
| - 'matcher_rs/build.rs' | |
| - 'matcher_rs/Cargo.toml' | |
| - 'matcher_c/src/**' | |
| - 'matcher_c/Cargo.toml' | |
| - 'matcher_java/rust_src/**' | |
| - 'matcher_java/src/**' | |
| - 'matcher_java/Cargo.toml' | |
| - 'matcher_java/pom.xml' | |
| - '.github/workflows/test.yml' | |
| - '.cargo/config.toml' | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| env: | |
| # Override .cargo/config.toml target-cpu=native which may emit | |
| # instructions unsupported by the CI runner. | |
| RUSTFLAGS: -Z threads=0 | |
| RUSTDOCFLAGS: --document-private-items | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: nightly | |
| components: rustfmt, clippy | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: true | |
| - uses: taiki-e/install-action@v2 | |
| with: | |
| tool: cargo-all-features | |
| - run: cargo fmt --all --check | |
| - run: cargo all-features clippy --workspace --all-targets -- -D warnings | |
| - run: cargo doc --workspace --all-features --no-deps | |
| semver: | |
| runs-on: ubuntu-latest | |
| env: | |
| RUSTFLAGS: -Z threads=0 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: nightly | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: true | |
| - name: Install cargo-semver-checks | |
| uses: taiki-e/install-action@v2 | |
| with: | |
| tool: cargo-semver-checks | |
| - name: Check semver compatibility | |
| run: cargo semver-checks -p matcher_rs | |
| build: | |
| runs-on: ${{ matrix.platform.runner }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| platform: | |
| - runner: ubuntu-latest | |
| target: x86_64-unknown-linux-gnu | |
| suffix: so | |
| prefix: lib | |
| - runner: ubuntu-24.04-arm | |
| target: aarch64-unknown-linux-gnu | |
| suffix: so | |
| prefix: lib | |
| - runner: macos-latest | |
| target: aarch64-apple-darwin | |
| suffix: dylib | |
| prefix: lib | |
| - runner: windows-latest | |
| target: x86_64-pc-windows-gnu | |
| suffix: dll | |
| prefix: "" | |
| - runner: windows-latest | |
| target: x86_64-pc-windows-msvc | |
| suffix: dll | |
| prefix: "" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: nightly | |
| target: ${{ matrix.platform.target }} | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: true | |
| - uses: taiki-e/install-action@v2 | |
| with: | |
| tool: cargo-all-features,cargo-nextest | |
| - name: Build | |
| run: cargo build --release -p matcher_c -p matcher_java -p matcher_py --target ${{ matrix.platform.target }} | |
| env: | |
| RUSTFLAGS: -Z threads=0 | |
| - name: Test | |
| run: | | |
| cargo all-features nextest run --profile ci --verbose | |
| cargo test --doc -- --show-output | |
| working-directory: matcher_rs | |
| env: | |
| RUST_BACKTRACE: 1 | |
| RUSTFLAGS: -Z threads=0 | |
| - name: Rename & move | |
| shell: bash | |
| run: | | |
| cp ./target/${{ matrix.platform.target }}/release/*matcher_c.${{ matrix.platform.suffix }} matcher_c/${{ matrix.platform.prefix }}matcher_c.${{ matrix.platform.suffix }} | |
| mkdir -p matcher_java/src/main/resources | |
| cp ./target/${{ matrix.platform.target }}/release/*matcher_java.${{ matrix.platform.suffix }} matcher_java/src/main/resources/${{ matrix.platform.prefix }}matcher_java.${{ matrix.platform.suffix }} | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| enable-cache: true | |
| - name: Python Test | |
| shell: bash | |
| run: | | |
| uv sync | |
| uv run pytest -v | |
| working-directory: matcher_py | |
| - name: Set up JDK 21 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '21' | |
| distribution: 'temurin' | |
| cache: 'maven' | |
| - name: Java Test | |
| run: mvn test -e | |
| working-directory: matcher_java |