name: CI on: pull_request: push: branches: - main schedule: - cron: '0 1 * * *' jobs: main: name: Main runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v2 - name: Install Rust uses: actions-rs/toolchain@v1 with: toolchain: nightly profile: minimal override: true components: clippy # Do *not* use `--all-features` here, as the optional dependencies take a # long time to build, and will be tested in the "examples" job anyway - name: Run tests run: cargo test --workspace --all-targets - name: Check Clippy run: cargo clippy --workspace --all-targets -- -D warnings # Please keep this in sync with `publish-docs.yml` documentation: name: Documentation runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v2 with: # Documentation build uses `git describe` which requires history fetch-depth: 0 - name: Install Rust uses: actions-rs/toolchain@v1 with: toolchain: nightly profile: minimal override: true components: clippy - name: Build documentation run: cd docs && make -j$(nproc) - name: Check Clippy run: cd docs && cargo clippy --all-targets -- -D warnings doctest: name: Doctest runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v2 - name: Install Rust uses: actions-rs/toolchain@v1 with: toolchain: nightly profile: minimal override: true - name: Doctest run: cd doctest && cargo test rustfmt: name: Rustfmt runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v2 - name: Install Rust uses: actions-rs/toolchain@v1 with: # Nightly rustfmt is needed for the `imports_granularity` option toolchain: nightly profile: minimal override: true components: rustfmt - name: Check formatting run: | cargo fmt -- --check (cd docs && cargo fmt -- --check) # trybuild harnesses are technically not part of the Cargo project, so # need to be checked separately rustfmt --check maud/tests/warnings/*.rs