name: Test suite on: workflow_dispatch: schedule: # Everyday at 5:00am - cron: '0 5 * * *' pull_request: push: # trying and staging branches are for Bors config branches: - trying - staging env: CARGO_TERM_COLOR: always RUST_BACKTRACE: 1 RUSTFLAGS: "-D warnings" jobs: test-linux: name: Tests on ubuntu-18.04 runs-on: ubuntu-latest container: # Use ubuntu-18.04 to compile with glibc 2.27, which are the production expectations image: ubuntu:18.04 steps: - uses: actions/checkout@v3 - name: Install needed dependencies run: | apt-get update && apt-get install -y curl apt-get install build-essential -y - name: Setup test with Rust stable uses: actions-rs/toolchain@v1 with: toolchain: stable override: true - name: Cache dependencies uses: Swatinem/rust-cache@v2.7.1 - name: Run cargo check without any default features uses: actions-rs/cargo@v1 with: command: build args: --locked --release --no-default-features --all - name: Run cargo test uses: actions-rs/cargo@v1 with: command: test args: --locked --release --all test-others: name: Tests on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-12, windows-2022] steps: - uses: actions/checkout@v3 - name: Cache dependencies uses: Swatinem/rust-cache@v2.7.1 - uses: actions-rs/toolchain@v1 with: toolchain: stable override: true - name: Run cargo check without any default features uses: actions-rs/cargo@v1 with: command: build args: --locked --release --no-default-features --all - name: Run cargo test uses: actions-rs/cargo@v1 with: command: test args: --locked --release --all test-all-features: name: Tests almost all features runs-on: ubuntu-latest container: # Use ubuntu-18.04 to compile with glibc 2.27, which are the production expectations image: ubuntu:18.04 if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' steps: - uses: actions/checkout@v3 - name: Install needed dependencies run: | apt-get update apt-get install --assume-yes build-essential curl - uses: actions-rs/toolchain@v1 with: toolchain: stable override: true - name: Run cargo build with almost all features run: | cargo build --workspace --locked --release --features "$(cargo xtask list-features --exclude-feature cuda)" - name: Run cargo test with almost all features run: | cargo test --workspace --locked --release --features "$(cargo xtask list-features --exclude-feature cuda)" test-disabled-tokenization: name: Test disabled tokenization runs-on: ubuntu-latest container: image: ubuntu:18.04 if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' steps: - uses: actions/checkout@v3 - name: Install needed dependencies run: | apt-get update apt-get install --assume-yes build-essential curl - uses: actions-rs/toolchain@v1 with: toolchain: stable override: true - name: Run cargo tree without default features and check lindera is not present run: | if cargo tree -f '{p} {f}' -e normal --no-default-features | grep -vqz lindera; then echo "lindera has been found in the sources and it shouldn't" exit 1 fi - name: Run cargo tree with default features and check lindera is pressent run: | cargo tree -f '{p} {f}' -e normal | grep lindera -qz # We run tests in debug also, to make sure that the debug_assertions are hit test-debug: name: Run tests in debug runs-on: ubuntu-latest container: # Use ubuntu-18.04 to compile with glibc 2.27, which are the production expectations image: ubuntu:18.04 steps: - uses: actions/checkout@v3 - name: Install needed dependencies run: | apt-get update && apt-get install -y curl apt-get install build-essential -y - uses: actions-rs/toolchain@v1 with: toolchain: stable override: true - name: Cache dependencies uses: Swatinem/rust-cache@v2.7.1 - name: Run tests in debug uses: actions-rs/cargo@v1 with: command: test args: --locked --all clippy: name: Run Clippy runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: 1.75.0 override: true components: clippy - name: Cache dependencies uses: Swatinem/rust-cache@v2.7.1 - name: Run cargo clippy uses: actions-rs/cargo@v1 with: command: clippy args: --all-targets -- --deny warnings fmt: name: Run Rustfmt runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly override: true components: rustfmt - name: Cache dependencies uses: Swatinem/rust-cache@v2.7.1 - name: Run cargo fmt # Since we never ran the `build.rs` script in the benchmark directory we are missing one auto-generated import file. # Since we want to trigger (and fail) this action as fast as possible, instead of building the benchmark crate # we are going to create an empty file where rustfmt expects it. run: | echo -ne "\n" > benchmarks/benches/datasets_paths.rs cargo fmt --all -- --check