Skip to content

Commit

Permalink
Improve check script to allow running just some checks.
Browse files Browse the repository at this point in the history
  • Loading branch information
orium committed Nov 10, 2024
1 parent 799c9f1 commit aac8370
Show file tree
Hide file tree
Showing 12 changed files with 137 additions and 41 deletions.
19 changes: 17 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,15 @@ jobs:
- name: Install cargo plugins
run: |
cargo install cargo-rdme
cargo install cargo-machete
cargo install taplo-cli
cargo install cargo-deadlinks
- name: Checkout repository
uses: actions/checkout@v4

- name: Check everything
run: bash ./tools/check.sh
run: bash ./tools/check.sh basic doc_url_links unused_deps packaging fmt toml_fmt readme

- name: Code coverage
if: ${{ runner.os == 'Linux' }}
Expand All @@ -57,4 +59,17 @@ jobs:
uses: actions/checkout@v4

- name: Check the minimum supported rust version
run: cargo msrv verify
run: bash ./tools/check.sh msrv

clippy:
runs-on: ubuntu-latest

steps:
- name: Install rust
uses: dtolnay/rust-toolchain@stable

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

- name: Run clippy
run: bash ./tools/check.sh clippy
17 changes: 17 additions & 0 deletions .taplo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
include = ["**/*.toml"]
exclude = ["target/**"]

[formatting]
column_width = 100
indent_string = ' '
allowed_blank_lines = 1

[[rule]]
formatting = { reorder_keys = true }
keys = [
"workspace.dependencies",
"dependencies",
"dev-dependencies",
"build-dependencies",
"lints.clippy",
]
16 changes: 5 additions & 11 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,8 @@ repository = "https://github.com/orium/rpds"
documentation = "https://docs.rs/rpds"
readme = "README.md"

keywords = [
"data-structure",
"data-structures",
"persistent",
"immutable",
"no_std"
]
categories = [
"data-structures",
]
keywords = ["data-structure", "data-structures", "persistent", "immutable", "no_std"]
categories = ["data-structures"]

license = "MPL-2.0"

Expand Down Expand Up @@ -57,17 +49,19 @@ std = []

[lints.clippy]
all = { level = "warn", priority = -2 }
pedantic = { level = "warn", priority = -2 }
correctness = { level = "deny", priority = -1 }
pedantic = { level = "warn", priority = -2 }

enum-glob-use = "allow"
if-not-else = "allow"
match-bool = "allow"
match-same-arms = "allow"
missing-panics-doc = "allow"
module-name-repetitions = "allow"
multiple-bound-locations = "allow"
similar-names = "allow"
single-match-else = "allow"
struct-field-names = "allow"
type-complexity = "allow"
type-repetition-in-bounds = "allow"
unnested-or-patterns = "allow"
Expand Down
1 change: 1 addition & 0 deletions benches/std_btree_map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
*/

#![cfg_attr(feature = "fatal-warnings", deny(warnings))]
#![allow(clippy::cast_possible_wrap)]

use criterion::{criterion_group, criterion_main, Criterion};
use std::collections::BTreeMap;
Expand Down
1 change: 1 addition & 0 deletions benches/std_hash_map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
*/

#![cfg_attr(feature = "fatal-warnings", deny(warnings))]
#![allow(clippy::cast_possible_wrap)]

use criterion::{criterion_group, criterion_main, Criterion};
use std::collections::HashMap;
Expand Down
2 changes: 1 addition & 1 deletion src/list/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ where

pub fn drop_first_mut(&mut self) -> bool {
self.head.take().map_or(false, |h| {
self.head = h.next.clone();
self.head.clone_from(&h.next);
self.length -= 1;

if self.length == 0 {
Expand Down
3 changes: 2 additions & 1 deletion src/map/hash_trie_map/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ mod node_utils {
}

pub fn hash<T: ?Sized + Hash, H: BuildHasher>(v: &T, hasher_builder: &H) -> HashValue {
hasher_builder.hash_one(&v)
hasher_builder.hash_one(v)
}
}

Expand Down Expand Up @@ -873,6 +873,7 @@ where
self.size() == 0
}

#[allow(clippy::iter_without_into_iter)]
pub fn iter(&self) -> Iter<'_, K, V, P> {
self.iter_ptr().map(|e| (&e.key, &e.value))
}
Expand Down
4 changes: 4 additions & 0 deletions src/map/hash_trie_map/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

#![allow(clippy::cast_possible_truncation)]
#![allow(clippy::cast_possible_wrap)]
#![allow(clippy::cast_sign_loss)]

use super::*;
use pretty_assertions::assert_eq;
use static_assertions::assert_impl_all;
Expand Down
4 changes: 4 additions & 0 deletions src/map/red_black_tree_map/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

#![allow(clippy::cast_possible_truncation)]
#![allow(clippy::cast_possible_wrap)]
#![allow(clippy::cast_sign_loss)]

use super::*;
use alloc::vec::Vec;
use pretty_assertions::assert_eq;
Expand Down
1 change: 1 addition & 0 deletions src/set/hash_trie_set/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,7 @@ where
self.size() == 0
}

#[allow(clippy::iter_without_into_iter)]
pub fn iter(&self) -> Iter<'_, T, P> {
self.map.keys()
}
Expand Down
4 changes: 4 additions & 0 deletions src/vector/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

#![allow(clippy::cast_possible_truncation)]
#![allow(clippy::cast_possible_wrap)]
#![allow(clippy::cast_sign_loss)]

use super::*;
use alloc::string::String;
use pretty_assertions::assert_eq;
Expand Down
106 changes: 80 additions & 26 deletions tools/check.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,35 +20,89 @@ function on_failure {
echo -e "${RED}Whoopsie-daisy: something failed!$NC" >&2
}

assert_installed "cargo-deadlinks"
assert_installed "cargo-fmt"
assert_installed "cargo-rdme"
assert_installed "cargo"

trap on_failure ERR

echo 'Building:'
# Run check with no default features to check `no_std`.
cargo check --no-default-features --features fatal-warnings,serde --all-targets
cargo build --features fatal-warnings,serde --all-targets
echo 'Testing:'
cargo test --features fatal-warnings,serde --all-targets --benches
# Weirdly, the `cargo test ... --all-targets ...` above does not run the tests in the documentation, so we run the
# doc tests like this.
# See https://github.com/rust-lang/cargo/issues/6669.
echo 'Testing doc:'
cargo test --features fatal-warnings,serde --doc
echo 'Checking documentation:'
cargo doc --features fatal-warnings,serde --no-deps --document-private-items

echo 'Checking links:'
cargo deadlinks

echo 'Checking packaging:'
cargo package --allow-dirty
echo 'Checking code style:'
cargo fmt -- --check
echo 'Checking readme:'
cargo rdme --check
function check_basic {
echo 'Building:'
cargo build --features fatal-warnings --all-targets
echo 'Testing:'
cargo test --features fatal-warnings --all-targets
# Weirdly, the `cargo test ... --all-targets ...` above does not run the tests in the documentation, so we run the
# doc tests like this.
# See https://github.com/rust-lang/cargo/issues/6669.
echo 'Testing doc:'
cargo test --features fatal-warnings --doc
echo 'Checking the benchmarks:'
cargo bench --features fatal-warnings -- --test
echo 'Checking documentation:'
cargo doc --features fatal-warnings --no-deps
}

function check_doc_url_links {
assert_installed "cargo-deadlinks"

echo 'Checking doc url links:'
cargo deadlinks
}

function check_unused_deps {
assert_installed "cargo-machete"

echo 'Checking unused dependencies:'
cargo machete
}

function check_packaging {
echo 'Checking packaging:'
cargo package --allow-dirty
}

function check_fmt {
assert_installed "cargo-fmt"

echo 'Checking code format:'
cargo fmt -- --check
}

function check_toml_fmt {
assert_installed "taplo"

echo 'Checking toml format:'
taplo fmt --check
}

function check_readme {
assert_installed "cargo-rdme"

echo 'Checking readme:'
cargo rdme --check
}

function check_msrv {
assert_installed "cargo-msrv"

echo 'Checking the minimum supported rust version:'
cargo msrv verify
}

function check_clippy {
assert_installed "cargo-clippy"

echo 'Checking with clippy:'
cargo clippy --all-targets -- -D warnings
}

to_run=(basic doc_url_links unused_deps packaging fmt toml_fmt readme msrv clippy)

if [ $# -ge 1 ]; then
to_run=("$@")
fi

for check in "${to_run[@]}"; do
check_$check
done

echo
echo -e "${GREEN}Everything looks lovely!$NC"
Expand Down

0 comments on commit aac8370

Please sign in to comment.