Skip to content

Add DSL integration test runner #136

Add DSL integration test runner

Add DSL integration test runner #136

Workflow file for this run

# GitHub Actions: rustfmt, clippy, doc, and feature-flag combination checks.
#
# SPDX-License-Identifier: MIT
#
# This workflow runs whenever a PR is opened or updated, or a commit is pushed to main. It runs
# several checks:
# - fmt: checks that the code is formatted according to rustfmt
# - clippy: checks that the code does not contain any clippy warnings
# - doc: checks that the code can be documented without errors
# - hack: check combinations of feature flags
permissions:
contents: read
# This configuration allows maintainers of this repo to create a branch and pull request based on
# the new branch. Restricting the push trigger to the main branch ensures that the PR only gets
# built once.
on:
push:
branches: [main]
pull_request:
# If new code is pushed to a PR branch, then cancel in progress workflows for that PR. Ensures that
# we don't waste CI time, and returns results quicker https://github.com/jonhoo/rust-ci-conf/pull/5
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
name: check
jobs:
fmt:
runs-on: ubuntu-latest
name: stable / fmt
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install stable
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: cargo fmt --check
run: cargo fmt --check
working-directory: ec
# Enable once we have a released crate
# semver:
# runs-on: ubuntu-latest
# name: semver
# strategy:
# fail-fast: false
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - name: Install stable
# uses: dtolnay/rust-toolchain@stable
# with:
# components: rustfmt
# - name: cargo-semver-checks
# uses: obi1kenobi/cargo-semver-checks-action@v2
doc:
# run docs generation on nightly rather than stable. This enables features like
# https://doc.rust-lang.org/beta/unstable-book/language-features/doc-cfg.html which allows an
# API be documented as only available in some specific platforms.
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
name: nightly / doc
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install nightly
uses: dtolnay/rust-toolchain@nightly
- name: Install system dependencies
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y libudev-dev
- name: cargo doc
run: cargo doc --all-features --no-deps --locked
working-directory: ec
env:
RUSTDOCFLAGS: --cfg docsrs
hack-clippy:
# cargo-hack checks combinations of feature flags to ensure that features are all additive
# which is required for feature unification
runs-on: ${{ matrix.os }}
name: ${{ matrix.toolchain }} / ${{ matrix.crate }} / clippy
strategy:
fail-fast: false
matrix:
# Get early warning of new lints which are regularly introduced in beta channels.
toolchain: [stable, beta]
crate: [ec-test-cli, ec-test-lib, ec-test-script, ec-test-tui]
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install system dependencies
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y libudev-dev
- name: Install ${{ matrix.toolchain }}
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.toolchain }}
components: clippy
- name: cargo install cargo-hack
uses: taiki-e/install-action@cargo-hack
# --feature-powerset runs for every combination of features
- name: cargo hack
run: cargo hack --feature-powerset clippy --locked -p ${{ matrix.crate }} -- -Dwarnings -D clippy::suspicious -D clippy::correctness -D clippy::perf -D clippy::style
working-directory: ec
deny:
# cargo-deny checks licenses, advisories, sources, and bans for
# our dependencies.
runs-on: ubuntu-latest
name: ubuntu / stable / deny
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install stable
uses: dtolnay/rust-toolchain@stable
- name: cargo install cargo-deny
uses: EmbarkStudios/cargo-deny-action@v2
with:
log-level: warn
command: check
arguments: --locked
manifest-path: ec/Cargo.toml
machete:
# cargo-machete checks for unused dependencies in Cargo.toml files
runs-on: ubuntu-latest
name: ubuntu / stable / machete
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install stable
uses: dtolnay/rust-toolchain@stable
- name: cargo install cargo-machete
uses: taiki-e/install-action@cargo-machete
- name: cargo machete
run: cargo machete
working-directory: ec
test-script:
# Run the ec-test-script unit tests (parser) and Mock smoke tests
# (every bundled .test file parses and executes against the in-process
# Mock source).
runs-on: ${{ matrix.os }}
name: ${{ matrix.os }} / stable / test-script
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install system dependencies
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y libudev-dev
- name: Install stable
uses: dtolnay/rust-toolchain@stable
- name: cargo test -p ec-test-script
run: cargo test -p ec-test-script --locked
working-directory: ec