From 7f7393f10a666a70c5afa512faa480317cdaa622 Mon Sep 17 00:00:00 2001 From: Fabio Valentini Date: Wed, 22 Jan 2025 14:43:26 +0100 Subject: [PATCH 1/4] update dependencies and drop obsolete clippy usage clippy has been is shipped as part of the Rust toolchain instead of as a separate crate for a long time. --- Cargo.toml | 12 ++++-------- src/lib.rs | 2 -- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index b7b7c597..4787b534 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,7 @@ name = "rspec" description = "Write Rspec-like tests with stable rust" version = "1.0.0" +edition = "2015" readme = "README.md" repository = "https://github.com/rust-rspec/rspec" @@ -23,17 +24,12 @@ categories = [ "development-tools::testing" ] - -[build-dependencies.clippy] -optional = true -version = "0.0.153" - [dependencies] colored = "2.0" -derive-new = "0.5" -derive_builder = "0.9" +derive-new = "0.6" +derive_builder = "0.20" rayon = "1.5" -time = "0.2" +time = "0.3" [dependencies.expectest] optional = true diff --git a/src/lib.rs b/src/lib.rs index f353a224..74743cc9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,4 @@ #![doc(html_root_url = "https://mackwic.github.io/rspec")] -#![cfg_attr(feature = "clippy", feature(plugin))] -#![cfg_attr(feature = "clippy", plugin(clippy))] #![allow(dead_code)] #[macro_use] From cd8b9face0b8b8c461cbefda4ab8807690d86a16 Mon Sep 17 00:00:00 2001 From: Fabio Valentini Date: Wed, 22 Jan 2025 15:06:17 +0100 Subject: [PATCH 2/4] port from deprecated time::Instant to std::time::Instant --- Cargo.toml | 1 - src/lib.rs | 1 - src/logger/serial.rs | 4 ++-- src/report/context.rs | 3 ++- src/report/example.rs | 3 +-- src/report/mod.rs | 2 +- src/report/suite.rs | 2 +- src/runner/mod.rs | 3 +-- 8 files changed, 8 insertions(+), 11 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 4787b534..7df6652d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,7 +29,6 @@ colored = "2.0" derive-new = "0.6" derive_builder = "0.20" rayon = "1.5" -time = "0.3" [dependencies.expectest] optional = true diff --git a/src/lib.rs b/src/lib.rs index 74743cc9..5ac5328b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,7 +11,6 @@ extern crate colored; #[cfg(feature = "expectest_compat")] extern crate expectest; extern crate rayon; -extern crate time; pub mod block; pub mod header; diff --git a/src/logger/serial.rs b/src/logger/serial.rs index bea103c5..3890a4d5 100644 --- a/src/logger/serial.rs +++ b/src/logger/serial.rs @@ -2,7 +2,7 @@ use std::io; use std::ops::DerefMut; use std::sync::Mutex; -use time::Duration; +use std::time::Duration; use colored::*; @@ -162,7 +162,7 @@ impl SerialLogger { let minute = 60 * second; let hour = 60 * minute; - let remainder = duration.whole_milliseconds(); + let remainder = duration.subsec_millis(); let hours = remainder / hour; let remainder = remainder % hour; diff --git a/src/report/context.rs b/src/report/context.rs index 71835e90..05fdfdbf 100644 --- a/src/report/context.rs +++ b/src/report/context.rs @@ -1,5 +1,6 @@ +use std::time::Duration; + use report::{BlockReport, Report}; -use time::Duration; /// `ContextReport` holds the results of a context's test execution. #[derive(PartialEq, Eq, Clone, Debug, new)] diff --git a/src/report/example.rs b/src/report/example.rs index 5f382062..89652036 100644 --- a/src/report/example.rs +++ b/src/report/example.rs @@ -1,6 +1,5 @@ use std::convert::From; - -use time::Duration; +use std::time::Duration; use report::Report; diff --git a/src/report/mod.rs b/src/report/mod.rs index ad771f88..3b5ba999 100644 --- a/src/report/mod.rs +++ b/src/report/mod.rs @@ -4,7 +4,7 @@ mod context; mod example; mod suite; -pub use time::Duration; +use std::time::Duration; pub use report::context::*; pub use report::example::*; diff --git a/src/report/suite.rs b/src/report/suite.rs index 7eb2b219..3ad7a56f 100644 --- a/src/report/suite.rs +++ b/src/report/suite.rs @@ -1,4 +1,4 @@ -use time::Duration; +use std::time::Duration; use header::SuiteHeader; use report::{ContextReport, Report}; diff --git a/src/runner/mod.rs b/src/runner/mod.rs index a67d1a69..a2e069d3 100644 --- a/src/runner/mod.rs +++ b/src/runner/mod.rs @@ -13,8 +13,7 @@ use std::panic; #[cfg(not(test))] use std::process; use std::sync::{Arc, Mutex}; - -use time::Instant; +use std::time::Instant; use rayon::prelude::*; From 8a0e217bf0f3091549d87c2b29695f4ba3f2df9d Mon Sep 17 00:00:00 2001 From: Fabio Valentini Date: Wed, 22 Jan 2025 15:09:42 +0100 Subject: [PATCH 3/4] fix compiler warnings --- src/header/context.rs | 6 ++++-- src/header/example.rs | 6 ++++-- src/header/suite.rs | 6 ++++-- src/lib.rs | 4 ++-- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/header/context.rs b/src/header/context.rs index 65494cfe..ae9c89dc 100644 --- a/src/header/context.rs +++ b/src/header/context.rs @@ -39,7 +39,8 @@ mod tests { fn label_fmt() { fn subject(label: ContextLabel) -> String { format!("{}", label) - }; + } + assert_eq!(subject(ContextLabel::Context), "Context".to_owned()); assert_eq!(subject(ContextLabel::Specify), "Specify".to_owned()); assert_eq!(subject(ContextLabel::When), "When".to_owned()); @@ -49,7 +50,8 @@ mod tests { fn header_fmt() { fn subject(label: ContextLabel) -> String { format!("{}", ContextHeader::new(label, "Test")) - }; + } + assert_eq!( subject(ContextLabel::Context), "Context \"Test\"".to_owned() diff --git a/src/header/example.rs b/src/header/example.rs index 705932d3..d395e70c 100644 --- a/src/header/example.rs +++ b/src/header/example.rs @@ -47,7 +47,8 @@ mod tests { fn label_fmt() { fn subject(label: ExampleLabel) -> String { format!("{}", label) - }; + } + assert_eq!(subject(ExampleLabel::Example), "Example".to_owned()); assert_eq!(subject(ExampleLabel::It), "It".to_owned()); assert_eq!(subject(ExampleLabel::Then), "Then".to_owned()); @@ -57,7 +58,8 @@ mod tests { fn header_fmt() { fn subject(label: ExampleLabel) -> String { format!("{}", ExampleHeader::new(label, "Test")) - }; + } + assert_eq!( subject(ExampleLabel::Example), "Example \"Test\"".to_owned() diff --git a/src/header/suite.rs b/src/header/suite.rs index 7d1615fb..37faaf51 100644 --- a/src/header/suite.rs +++ b/src/header/suite.rs @@ -39,7 +39,8 @@ mod tests { fn label_fmt() { fn subject(label: SuiteLabel) -> String { format!("{}", label) - }; + } + assert_eq!(subject(SuiteLabel::Suite), "Suite".to_owned()); assert_eq!(subject(SuiteLabel::Describe), "Describe".to_owned()); assert_eq!(subject(SuiteLabel::Given), "Given".to_owned()); @@ -49,7 +50,8 @@ mod tests { fn header_fmt() { fn subject(label: SuiteLabel) -> String { format!("{}", SuiteHeader::new(label, "Test")) - }; + } + assert_eq!(subject(SuiteLabel::Suite), "Suite \"Test\"".to_owned()); assert_eq!( subject(SuiteLabel::Describe), diff --git a/src/lib.rs b/src/lib.rs index 5ac5328b..e24898d1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -61,8 +61,8 @@ where #[cfg(test)] mod tests { - pub use super::*; - pub use block::*; + //pub use super::*; + //pub use block::*; // Test list: // x check that tests can call `assert_eq!` From 6e4e3b5e0cf0b5d68fbd2a527e087936a3c42b9d Mon Sep 17 00:00:00 2001 From: Fabio Valentini Date: Wed, 22 Jan 2025 15:14:35 +0100 Subject: [PATCH 4/4] fix clippy warnings and errors --- src/block/context.rs | 3 ++- src/block/suite.rs | 12 ++++-------- src/runner/configuration.rs | 16 ++++++++-------- src/runner/mod.rs | 26 +++++++++++++------------- 4 files changed, 27 insertions(+), 30 deletions(-) diff --git a/src/block/context.rs b/src/block/context.rs index 98e33761..70178eb7 100644 --- a/src/block/context.rs +++ b/src/block/context.rs @@ -13,6 +13,7 @@ use header::{ContextHeader, ContextLabel, ExampleHeader, ExampleLabel}; use report::ExampleResult; /// Test contexts are a convenient tool for adding structure and code sharing to a test suite. +#[allow(clippy::type_complexity)] pub struct Context { pub(crate) header: Option, pub(crate) blocks: Vec>, @@ -285,7 +286,7 @@ where use std::panic::{catch_unwind, AssertUnwindSafe}; let example = Example::new(header, move |environment| { - let result = catch_unwind(AssertUnwindSafe(|| body(&environment).into())); + let result = catch_unwind(AssertUnwindSafe(|| body(environment).into())); match result { Ok(result) => result, Err(error) => { diff --git a/src/block/suite.rs b/src/block/suite.rs index 25f7159a..02b4072e 100644 --- a/src/block/suite.rs +++ b/src/block/suite.rs @@ -124,8 +124,7 @@ mod tests { let suite = suite("name", (), |_| {}); assert_eq!(suite.header.label, SuiteLabel::Suite); assert_eq!(suite.header.name, "name"); - assert_eq!(suite.environment, ()); - assert_eq!(suite.is_empty(), true); + assert!(suite.is_empty()); assert_eq!(suite.num_examples(), 0); } @@ -134,8 +133,7 @@ mod tests { let describe = describe("name", (), |_| {}); assert_eq!(describe.header.label, SuiteLabel::Describe); assert_eq!(describe.header.name, "name"); - assert_eq!(describe.environment, ()); - assert_eq!(describe.is_empty(), true); + assert!(describe.is_empty()); assert_eq!(describe.num_examples(), 0); } @@ -144,8 +142,7 @@ mod tests { let given = given("name", (), |_| {}); assert_eq!(given.header.label, SuiteLabel::Given); assert_eq!(given.header.name, "name"); - assert_eq!(given.environment, ()); - assert_eq!(given.is_empty(), true); + assert!(given.is_empty()); assert_eq!(given.num_examples(), 0); } @@ -156,8 +153,7 @@ mod tests { }); assert_eq!(suite.header.label, SuiteLabel::Suite); assert_eq!(suite.header.name, "suite"); - assert_eq!(suite.environment, ()); - assert_eq!(suite.is_empty(), false); + assert!(!suite.is_empty()); assert_eq!(suite.num_examples(), 0); } } diff --git a/src/runner/configuration.rs b/src/runner/configuration.rs index b86574f6..d34d0c68 100644 --- a/src/runner/configuration.rs +++ b/src/runner/configuration.rs @@ -25,8 +25,8 @@ mod tests { #[test] fn default_with_builder() { let config = ConfigurationBuilder::default().build().unwrap(); - assert_eq!(config.parallel, true); - assert_eq!(config.exit_on_failure, true); + assert!(config.parallel); + assert!(config.exit_on_failure); } #[test] @@ -43,21 +43,21 @@ mod tests { #[test] fn builder() { let config = ConfigurationBuilder::default().build().unwrap(); - assert_eq!(config.parallel, true); - assert_eq!(config.exit_on_failure, true); + assert!(config.parallel); + assert!(config.exit_on_failure); let config = ConfigurationBuilder::default() .parallel(false) .build() .unwrap(); - assert_eq!(config.parallel, false); - assert_eq!(config.exit_on_failure, true); + assert!(!config.parallel); + assert!(config.exit_on_failure); let config = ConfigurationBuilder::default() .exit_on_failure(false) .build() .unwrap(); - assert_eq!(config.parallel, true); - assert_eq!(config.exit_on_failure, false); + assert!(config.parallel); + assert!(!config.exit_on_failure); } } diff --git a/src/runner/mod.rs b/src/runner/mod.rs index a2e069d3..fbdeb7a1 100644 --- a/src/runner/mod.rs +++ b/src/runner/mod.rs @@ -227,7 +227,7 @@ where fn visit(&self, context: &Context, environment: &mut Self::Environment) -> Self::Output { if let Some(ref header) = context.header { - self.broadcast(|handler| handler.enter_context(self, &header)); + self.broadcast(|handler| handler.enter_context(self, header)); } let start_time = Instant::now(); let reports: Vec<_> = self.wrap_all(context, environment, |environment| { @@ -241,7 +241,7 @@ where let elapsed_time = end_time - start_time; let report = ContextReport::new(reports, elapsed_time); if let Some(ref header) = context.header { - self.broadcast(|handler| handler.exit_context(self, &header, &report)); + self.broadcast(|handler| handler.exit_context(self, header, &report)); } report } @@ -299,7 +299,7 @@ mod tests { // act runner.broadcast(|_| has_been_called.store(true, Ordering::SeqCst)); // assert - assert_eq!(true, has_been_called.load(Ordering::SeqCst)); + assert!(has_been_called.load(Ordering::SeqCst)); } #[test] @@ -346,7 +346,7 @@ mod tests { runner.broadcast(|observer| observer.enter_suite(&runner, &expected.clone())); // assert let lock = spy1.events.lock().expect("no dangling threads"); - let res = (*lock).get(0).expect("to have been called once"); + let res = (*lock).first().expect("to have been called once"); assert_eq!(&("enter_suite", expected), res); } } @@ -375,7 +375,7 @@ mod tests { has_been_called.store(true, Ordering::SeqCst) }); // assert - assert_eq!(true, has_been_called.load(Ordering::SeqCst)); + assert!(has_been_called.load(Ordering::SeqCst)); } #[test] @@ -389,7 +389,7 @@ mod tests { context.before_each(move |_| closure_bool_handler.store(true, Ordering::SeqCst)); runner.wrap_each(&context, &mut (), |_| ()); // assert - assert_eq!(true, has_been_called.load(Ordering::SeqCst)); + assert!(has_been_called.load(Ordering::SeqCst)); } #[test] @@ -403,7 +403,7 @@ mod tests { context.after_each(move |_| closure_bool_handler.store(true, Ordering::SeqCst)); runner.wrap_each(&context, &mut (), |_| ()); // assert - assert_eq!(true, has_been_called.load(Ordering::SeqCst)); + assert!(has_been_called.load(Ordering::SeqCst)); } #[test] @@ -509,7 +509,7 @@ mod tests { has_been_called.store(true, Ordering::SeqCst) }); // assert - assert_eq!(true, has_been_called.load(Ordering::SeqCst)); + assert!(has_been_called.load(Ordering::SeqCst)); } #[test] @@ -523,7 +523,7 @@ mod tests { context.before_all(move |_| closure_bool_handler.store(true, Ordering::SeqCst)); runner.wrap_all(&context, &mut (), |_| ()); // assert - assert_eq!(true, has_been_called.load(Ordering::SeqCst)); + assert!(has_been_called.load(Ordering::SeqCst)); } #[test] @@ -537,7 +537,7 @@ mod tests { context.after_all(move |_| closure_bool_handler.store(true, Ordering::SeqCst)); runner.wrap_all(&context, &mut (), |_| ()); // assert - assert_eq!(true, has_been_called.load(Ordering::SeqCst)); + assert!(has_been_called.load(Ordering::SeqCst)); } #[test] @@ -687,8 +687,8 @@ mod tests { // act runner.visit(&example, &mut ()); // assert - assert_eq!(true, spy.enter_example.load(Ordering::SeqCst)); - assert_eq!(true, spy.exit_example.load(Ordering::SeqCst)) + assert!(spy.enter_example.load(Ordering::SeqCst)); + assert!(spy.exit_example.load(Ordering::SeqCst)) } #[test] @@ -703,7 +703,7 @@ mod tests { }); runner.visit(&example, &mut environment); // assert - assert_eq!(true, environment.load(Ordering::SeqCst)); + assert!(environment.load(Ordering::SeqCst)); } }