name: CI on: push: branches: - master pull_request: branches: - master schedule: - cron: '00 01 * * *' jobs: test: name: Test strategy: fail-fast: false matrix: platform: # - { target: x86_64-pc-windows-gnu, os: windows-latest } - { target: x86_64-pc-windows-msvc, os: windows-latest } - { target: x86_64-unknown-linux-gnu, os: ubuntu-latest } - { target: x86_64-apple-darwin, os: macos-latest } runs-on: ${{ matrix.platform.os }} steps: - uses: actions/checkout@v2 # This has a matcher for test panics, so we use it even though elsewhere # we use actions-rs/toolchain. - uses: hecrj/setup-rust-action@v1 with: rust-version: stable targets: ${{ matrix.platform.target }} - uses: actions-rs/cargo@v1 with: command: build args: --features bundled --workspace --all-targets - uses: actions-rs/cargo@v1 with: command: test args: --features bundled --workspace --all-targets - name: "cargo test --features 'bundled-full session buildtime_bindgen'" # TODO: clang is installed on these -- but `bindgen` can't find it... if: matrix.platform.os != 'windows-latest' uses: actions-rs/cargo@v1 with: command: test args: --features 'bundled-full session buildtime_bindgen' --all-targets --workspace - name: "cargo test --features bundled-full" uses: actions-rs/cargo@v1 with: command: test args: --features bundled-full --all-targets --workspace - name: Static build if: matrix.platform.os == 'windows-latest' shell: cmd run: | set RUSTFLAGS=-Ctarget-feature=+crt-static cargo build --features bundled # Ensure clippy doesn't complain. clippy: name: Clippy strategy: fail-fast: false runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - run: rustup component add clippy - uses: actions-rs/cargo@v1 with: command: clippy # clippy with just bundled args: --all-targets --workspace --features bundled -- -D warnings - uses: actions-rs/cargo@v1 with: command: clippy # Clippy with all non-conflicting features args: --all-targets --workspace --features 'bundled-full session buildtime_bindgen' -- -D warnings # Ensure patch is formatted. fmt: name: Format runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 # This has a matcher for rustfmt errors, so we use it even though # elsewhere we use actions-rs/toolchain. - uses: hecrj/setup-rust-action@v1 with: rust-version: stable components: rustfmt - run: rustup component add rustfmt - uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check # Detect cases where documentation links don't resolve and such. doc: name: Docs runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal # Docs.rs uses nightly, which allows for easier syntax for linking to functions. toolchain: nightly override: true - uses: actions-rs/cargo@v1 with: # Need to use `cargo rustdoc` to actually get it to respect -D # warnings... Note: this also requires nightly. command: rustdoc args: --features 'bundled-full session buildtime_bindgen' -- -D warnings