mirror of
https://git.meli.delivery/meli/meli
synced 2024-11-09 01:10:33 +00:00
99 lines
3.4 KiB
YAML
99 lines
3.4 KiB
YAML
name: Tests
|
|
|
|
env:
|
|
RUST_BACKTRACE: 1
|
|
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches:
|
|
- '**'
|
|
paths:
|
|
- '.gitea/**'
|
|
- 'melib/src/**'
|
|
- 'melib/Cargo.toml'
|
|
- 'meli/src/**'
|
|
- 'Cargo.toml'
|
|
- 'Cargo.lock'
|
|
|
|
jobs:
|
|
test:
|
|
name: Test on ${{ matrix.build }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
build: [linux-amd64, ]
|
|
include:
|
|
- build: linux-amd64
|
|
os: ubuntu-latest
|
|
rust: stable
|
|
target: x86_64-unknown-linux-gnu
|
|
steps:
|
|
- uses: https://github.com/actions/checkout@v2
|
|
- id: os-deps
|
|
name: install OS dependencies
|
|
run: |
|
|
apt-get update
|
|
apt-get install -y libdbus-1-dev pkg-config mandoc libssl-dev
|
|
- id: cache-rustup
|
|
name: Cache Rust toolchain
|
|
uses: https://github.com/actions/cache@v3
|
|
with:
|
|
path: ~/.rustup
|
|
key: toolchain-${{ matrix.os }}-${{ matrix.rust }}
|
|
- if: ${{ steps.cache-rustup.outputs.cache-hit != 'true' }}
|
|
name: Install Rust ${{ matrix.rust }}
|
|
uses: https://github.com/actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: ${{ matrix.rust }}
|
|
components: clippy, rustfmt
|
|
target: ${{ matrix.target }}
|
|
override: true
|
|
- name: Configure cargo data directory
|
|
# After this point, all cargo registry and crate data is stored in
|
|
# $GITHUB_WORKSPACE/.cargo_home. This allows us to cache only the files
|
|
# that are needed during the build process. Additionally, this works
|
|
# around a bug in the 'cache' action that causes directories outside of
|
|
# the workspace dir to be saved/restored incorrectly.
|
|
run: echo "CARGO_HOME=$(pwd)/.cargo_home" >> $GITHUB_ENV
|
|
- id: cache-cargo
|
|
name: Cache cargo configuration and installations
|
|
uses: https://github.com/actions/cache@v3
|
|
with:
|
|
path: ${{ env.CARGO_HOME }}
|
|
key: cargo-${{ matrix.os }}-${{ matrix.rust }}
|
|
- if: ${{ steps.cache-cargo.outputs.cache-hit != 'true' }} && matrix.target
|
|
name: Setup Rust target
|
|
run: |
|
|
mkdir -p "${{ env.CARGO_HOME }}"
|
|
cat << EOF > "${{ env.CARGO_HOME }}"/config.toml
|
|
[build]
|
|
target = "${{ matrix.target }}"
|
|
EOF
|
|
- if: ${{ steps.cache-cargo.outputs.cache-hit != 'true' }} && matrix.target
|
|
name: Add lint dependencies
|
|
run: |
|
|
cargo install --target "${{ matrix.target }}" cargo-sort
|
|
- name: cargo-check
|
|
run: |
|
|
cargo check --all-features --all --tests --examples --benches --bins
|
|
- name: cargo test
|
|
if: success() || failure() # always run even if other steps fail, except when cancelled <https://stackoverflow.com/questions/58858429/how-to-run-a-github-actions-step-even-if-the-previous-step-fails-while-still-f>
|
|
run: |
|
|
cargo test --all --no-fail-fast --all-features
|
|
- name: cargo-sort
|
|
if: success() || failure()
|
|
run: |
|
|
cargo sort --check
|
|
- name: rustfmt
|
|
if: success() || failure()
|
|
run: |
|
|
cargo fmt --check --all
|
|
- name: clippy
|
|
if: success() || failure()
|
|
run: |
|
|
cargo clippy --no-deps --all-features --all --tests --examples --benches --bins
|