Skip to content

Commit

Permalink
chore: adds clippy, cargo-fmt, cargo-deny to builds
Browse files Browse the repository at this point in the history
  • Loading branch information
Dylan Ross committed Oct 30, 2024
1 parent ccd7c53 commit 5b7e7df
Show file tree
Hide file tree
Showing 4 changed files with 182 additions and 3 deletions.
Binary file removed .DS_Store
Binary file not shown.
174 changes: 174 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
name: CI

on:
pull_request:
types:
- opened
- reopened
- synchronize
- labeled
push:
branches:
- main

jobs:
tests:
name: Unit tests

if: |
github.event_name != 'pull_request' ||
github.event.pull_request.author_association == 'COLLABORATOR' ||
github.event.pull_request.author_association == 'MEMBER' ||
github.event.pull_request.user.login == 'dependabot[bot]' ||
contains(github.event.pull_request.labels.*.name, 'safe to test')
runs-on: ${{ matrix.os }}

strategy:
fail-fast: false
matrix:
os: [ windows-latest, macos-latest, ubuntu-latest ]
rust_version: [ stable, 1.76.0 ]

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust_version }}
components: llvm-tools-preview

- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v2

clippy_check:
name: Clippy
runs-on: ubuntu-latest

if: |
github.event_name != 'pull_request' ||
github.event.pull_request.author_association == 'COLLABORATOR' ||
github.event.pull_request.author_association == 'MEMBER' ||
github.event.pull_request.user.login == 'dependabot[bot]' ||
contains(github.event.pull_request.labels.*.name, 'safe to test')
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy

- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v2

- name: Run Clippy
run: cargo clippy --all-features --all-targets -- -Dwarnings

cargo_fmt:
name: Enforce Rust code format

runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install nightly toolchain
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt

- name: Check format
run: cargo +nightly fmt --all -- --check

docs_rs:
name: Preflight docs.rs build

if: |
github.event_name != 'pull_request' ||
github.event.pull_request.author_association == 'COLLABORATOR' ||
github.event.pull_request.author_association == 'MEMBER' ||
github.event.pull_request.user.login == 'dependabot[bot]' ||
contains(github.event.pull_request.labels.*.name, 'safe to test')
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install nightly Rust toolchain
# Nightly is used here because the docs.rs build
# uses nightly and we use doc_cfg features that are
# not in stable Rust as of this writing (Rust 1.76).
uses: dtolnay/rust-toolchain@nightly

- name: Run cargo docs
# This is intended to mimic the docs.rs build
# environment. The goal is to fail PR validation
# if the subsequent release would result in a failed
# documentation build on docs.rs.
run: cargo +nightly doc --workspace --all-features --no-deps
env:
RUSTDOCFLAGS: --cfg docsrs
DOCS_RS: 1
cargo-deny:
name: License / vulnerability audit

if: |
github.event_name != 'pull_request' ||
github.event.pull_request.author_association == 'COLLABORATOR' ||
github.event.pull_request.author_association == 'MEMBER' ||
github.event.pull_request.user.login == 'dependabot[bot]' ||
contains(github.event.pull_request.labels.*.name, 'safe to test')
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
checks:
- advisories
- bans licenses sources

# Prevent sudden announcement of a new advisory from failing CI:
continue-on-error: ${{ matrix.checks == 'advisories' }}

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Audit crate dependencies
uses: EmbarkStudios/cargo-deny-action@v2
with:
command: check ${{ matrix.checks }}

unused_deps:
name: Check for unused dependencies

if: |
github.event_name != 'pull_request' ||
github.event.pull_request.author_association == 'COLLABORATOR' ||
github.event.pull_request.author_association == 'MEMBER' ||
github.event.pull_request.user.login == 'dependabot[bot]' ||
contains(github.event.pull_request.labels.*.name, 'safe to test')
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install nightly Rust toolchain
uses: dtolnay/rust-toolchain@nightly

- name: Run cargo-udeps
uses: aig787/cargo-udeps-action@v1
with:
version: latest
args: --all-targets --all-features
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ Cargo.lock
**/*.rs.bk
.DS_Store

__pycache__/
__pycache__/
/.idea
8 changes: 6 additions & 2 deletions src/manifest_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,9 @@ mod tests {
builder
.from_json(MANIFEST_JSON)
.expect("Failed to load manifest Json");
builder.add_resource("thumbnail", &IMAGE.to_vec()).expect("Failed to add thumbnail stream");
builder
.add_resource("thumbnail", &IMAGE.to_vec())
.expect("Failed to add thumbnail stream");
let mut input = TestStream::from_memory(IMAGE.to_vec());
let mut input = StreamAdapter::from_stream_mut(&mut input);
//let mut output = Cursor::new(Vec::new());
Expand All @@ -165,7 +167,9 @@ mod tests {
builder
.from_json(MANIFEST_JSON)
.expect("Failed to load manifest Json");
builder.add_resource("thumbnail", &IMAGE.to_vec()).expect("Failed to add thumbnail stream");
builder
.add_resource("thumbnail", &IMAGE.to_vec())
.expect("Failed to add thumbnail stream");
let mut input = TestStream::from_memory(IMAGE.to_vec());
let mut output = TestStream::new();
let test_signer = Box::new(TestSigner::new());
Expand Down

0 comments on commit 5b7e7df

Please sign in to comment.