Test suite #85
This file contains 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: | |
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 | |
if: github.event_name != 'schedule' | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
override: true | |
- name: Setup test with Rust nightly | |
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
override: true | |
- name: Cache dependencies | |
uses: Swatinem/[email protected] | |
- 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/[email protected] | |
- 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 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 all features | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --workspace --locked --release --all-features | |
- name: Run cargo test with all features | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: --workspace --locked --release --all-features | |
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/[email protected] | |
- 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.71.1 | |
override: true | |
components: clippy | |
- name: Cache dependencies | |
uses: Swatinem/[email protected] | |
- 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/[email protected] | |
- 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 |