1
0
mirror of https://github.com/Llewellynvdm/starship.git synced 2024-11-16 10:05:13 +00:00
starship/.github/workflows/workflow.yml
Armando Pérez Marqués 566d95d81b
ci: Add jobs for cargo check with all features and no features (#3440)
* ci: Add jobs for `cargo check` with all features and no features

Augmenting #3435: These jobs will check that compilation still succeeds when no features are selected and with all features selected. So when in the future new features are added, these quick checks can prevent miss-compilation for users that like to tweak with feature sets.

* (fixup) More descriptive job names

* ci: Make the new `cargo_check_*` jobs depend on `cargo_check`
2022-01-16 20:29:28 +01:00

170 lines
4.4 KiB
YAML

name: Main workflow
on:
push:
paths-ignore:
- "docs/**"
- "**.md"
pull_request:
paths-ignore:
- "docs/**"
- "**.md"
jobs:
# Run the `rustfmt` code formatter
rustfmt:
name: Rustfmt [Formatter]
runs-on: ubuntu-latest
steps:
- name: Setup | Checkout
uses: actions/checkout@v2.4.0
- name: Setup | Rust
uses: actions-rs/toolchain@v1.0.7
with:
toolchain: stable
override: true
profile: minimal
components: rustfmt
- name: Setup | libdbus (ubuntu)
run: sudo apt-get install libdbus-1-dev
- name: Build | Format
run: cargo fmt --all -- --check
# Run the `clippy` linting tool
clippy:
name: Clippy [Linter]
strategy:
matrix:
os: [ubuntu-latest, macOS-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Setup | Checkout
uses: actions/checkout@v2.4.0
- name: Setup | Cache
uses: Swatinem/rust-cache@v1
- name: Setup | libdbus (ubuntu)
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get install libdbus-1-dev
- name: Setup | Rust
uses: actions-rs/toolchain@v1.0.7
with:
toolchain: stable
override: true
profile: minimal
components: clippy
- name: Build | Lint
uses: actions-rs/cargo@v1.0.3
with:
command: clippy
args: --workspace --locked --all-targets --all-features -- -D clippy::all
# Ensure that the project could be successfully compiled
cargo_check:
name: Compile
runs-on: ubuntu-latest
steps:
- name: Setup | Checkout
uses: actions/checkout@v2.4.0
- name: Setup | Cache
uses: Swatinem/rust-cache@v1
- name: Setup | Rust
uses: actions-rs/toolchain@v1.0.7
with:
toolchain: stable
profile: minimal
override: true
- name: Build | Check
run: cargo check --workspace --locked
# Ensure that the project could be successfully compiled with no features enabled
cargo_check_no_features:
name: Compile with no features enabled
needs: cargo_check
runs-on: ubuntu-latest
steps:
- name: Setup | Checkout
uses: actions/checkout@v2.4.0
- name: Setup | Cache
uses: Swatinem/rust-cache@v1
- name: Setup | Rust
uses: actions-rs/toolchain@v1.0.7
with:
toolchain: stable
profile: minimal
override: true
- name: Build | Check
run: cargo check --workspace --locked --no-default-features
# Ensure that the project could be successfully compiled with all features enabled
cargo_check_all_features:
name: Compile with all features enabled
needs: cargo_check
runs-on: ubuntu-latest
steps:
- name: Setup | Checkout
uses: actions/checkout@v2.4.0
- name: Setup | Cache
uses: Swatinem/rust-cache@v1
- name: Setup | Rust
uses: actions-rs/toolchain@v1.0.7
with:
toolchain: stable
profile: minimal
override: true
- name: Build | Check
run: cargo check --workspace --locked --all-features
# Run tests on Linux, macOS, and Windows
# On both Rust stable and Rust nightly
test:
name: Test Suite
runs-on: ${{ matrix.os }}
needs: cargo_check # First check then run expansive tests
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macOS-latest, windows-latest]
rust: [stable, nightly]
steps:
- name: Setup | Checkout
uses: actions/checkout@v2.4.0
- name: Setup | libdbus (ubuntu)
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get install libdbus-1-dev
- name: Setup | Cache
uses: Swatinem/rust-cache@v1
# Install all the required dependencies for testing
- name: Setup | Rust
uses: actions-rs/toolchain@v1.0.7
with:
toolchain: ${{ matrix.rust }}
profile: minimal
override: true
# Install Mercurial (pre-installed on Linux and windows)
- name: Setup | Mercurial (macos)
if: matrix.os == 'macOS-latest'
run: brew install mercurial
# Run the ignored tests that expect the above setup
- name: Build | Test
run: cargo test --workspace --locked --all-features -- -Z unstable-options --include-ignored