| name: CI |
| |
| on: |
| pull_request: |
| push: |
| branches: |
| - master |
| - staging |
| - trying |
| schedule: |
| - cron: '00 01 * * *' |
| |
| env: |
| RUSTFLAGS: -Dwarnings |
| RUST_BACKTRACE: 1 |
| |
| defaults: |
| run: |
| shell: bash |
| |
| jobs: |
| test: |
| name: test |
| strategy: |
| matrix: |
| rust: |
| # This is the minimum supported Rust version of this crate. |
| # When updating this, the reminder to update the minimum supported Rust version in README.md. |
| - 1.34.0 |
| - 1.36.0 |
| - 1.37.0 |
| - stable |
| - beta |
| include: |
| - os: ubuntu |
| rust: nightly |
| # pin-project itself has no platform-dependent implementation. |
| # macOS is only used to check that pin-project can interoperate |
| # correctly with `#[cfg()]`. |
| - os: macos |
| rust: nightly |
| runs-on: ${{ matrix.os || 'ubuntu' }}-latest |
| steps: |
| - uses: actions/checkout@master |
| - name: Install Rust |
| run: | |
| . ./ci/install-rust.sh ${{ matrix.rust }} |
| - name: Install cargo-hack |
| if: matrix.rust == 'nightly' |
| run: | |
| cargo install cargo-hack |
| - name: Add targets |
| if: matrix.rust == 'nightly' |
| run: | |
| rustup target add thumbv7m-none-eabi |
| - name: cargo test |
| run: | |
| cargo test --all --all-features --exclude expandtest |
| - name: cargo test (compiletest) |
| if: matrix.rust == 'nightly' |
| run: | |
| cargo test -p pin-project --all-features --test compiletest -- --ignored |
| - name: cargo check (no-std) |
| if: matrix.rust == 'nightly' |
| run: | |
| cargo check --target thumbv7m-none-eabi --manifest-path tests/no-std/Cargo.toml |
| - name: cargo check (minimal versions) |
| if: matrix.rust == 'nightly' |
| run: | |
| . ./ci/check-minimal-versions.sh |
| |
| expandtest: |
| name: expandtest |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@master |
| - name: Install Rust |
| run: | |
| . ./ci/install-rust.sh |
| - name: Install cargo-expand |
| run: | |
| cargo install cargo-expand |
| - name: cargo test (expandtest) |
| run: | |
| cargo test --all-features --manifest-path tests/expand/Cargo.toml |
| |
| style: |
| name: style |
| strategy: |
| fail-fast: false |
| matrix: |
| component: |
| - clippy |
| - rustfmt |
| - rustdoc |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@master |
| - name: Install Rust |
| run: | |
| . ./ci/install-rust.sh |
| - name: Install component |
| run: | |
| . ./ci/install-component.sh ${{ matrix.component }} |
| - name: cargo clippy |
| if: matrix.component == 'clippy' |
| run: | |
| cargo clippy --all --all-features --all-targets |
| - name: cargo fmt -- --check |
| if: matrix.component == 'rustfmt' |
| run: | |
| cargo fmt --all -- --check |
| - name: cargo doc |
| if: matrix.component == 'rustdoc' |
| env: |
| RUSTDOCFLAGS: -Dwarnings |
| run: | |
| cargo doc --no-deps --all --all-features |
| |
| # These jobs don't actually test anything, but they're used to tell bors the |
| # build completed, as there is no practical way to detect when a workflow is |
| # successful listening to webhooks only. |
| # |
| # ALL THE PREVIOUS JOBS NEEDS TO BE ADDED TO THE `needs` SECTION OF THIS JOB! |
| |
| ci-success: |
| name: ci |
| if: github.event_name == 'push' && success() |
| needs: |
| - style |
| - test |
| - expandtest |
| runs-on: ubuntu-latest |
| steps: |
| - name: Mark the job as a success |
| run: exit 0 |
| ci-failure: |
| name: ci |
| if: github.event_name == 'push' && !success() |
| needs: |
| - style |
| - test |
| - expandtest |
| runs-on: ubuntu-latest |
| steps: |
| - name: Mark the job as a failure |
| run: exit 1 |