From ab62729f1d1ccf7c22c9046c60f35ecfc1ae913a Mon Sep 17 00:00:00 2001 From: Kaur Kuut Date: Thu, 16 Apr 2020 01:48:43 +0300 Subject: [PATCH 1/4] Add clippy checks for examples and tests. --- .github/workflows/ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 006318776c..ceb0fc8473 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -82,19 +82,19 @@ jobs: uses: actions-rs/cargo@v1 with: command: clippy - args: --manifest-path=druid/Cargo.toml --features=svg,image -- -D warnings + args: --manifest-path=druid/Cargo.toml --all-targets --features=svg,image -- -D warnings - name: cargo clippy (druid-shell) uses: actions-rs/cargo@v1 with: command: clippy - args: --manifest-path=druid-shell/Cargo.toml -- -D warnings + args: --manifest-path=druid-shell/Cargo.toml --all-targets -- -D warnings - name: cargo clippy (druid-derive) uses: actions-rs/cargo@v1 with: command: clippy - args: --manifest-path=druid-derive/Cargo.toml -- -D warnings + args: --manifest-path=druid-derive/Cargo.toml --all-targets -- -D warnings - name: cargo test (druid) uses: actions-rs/cargo@v1 @@ -220,7 +220,7 @@ jobs: uses: actions-rs/cargo@v1 with: command: clippy - args: --manifest-path=druid-shell/Cargo.toml --features=x11 -- -D warnings + args: --manifest-path=druid-shell/Cargo.toml --all-targets --features=x11 -- -D warnings - name: cargo test druid-shell uses: actions-rs/cargo@v1 @@ -276,7 +276,7 @@ jobs: uses: actions-rs/cargo@v1 with: command: clippy - args: --all --target wasm32-unknown-unknown -- -D warnings + args: --all --all-targets --target wasm32-unknown-unknown -- -D warnings - name: cargo test compile druid-shell (wasm32) uses: actions-rs/cargo@v1 From 9e8598aa4673b04253870ec1b3be324216a5b5e7 Mon Sep 17 00:00:00 2001 From: Kaur Kuut Date: Thu, 16 Apr 2020 02:35:49 +0300 Subject: [PATCH 2/4] Fix clippy errors in examples and tests. --- Cargo.lock | 11 ++++++++ druid-derive/Cargo.toml | 1 + druid-derive/tests/with_lens.rs | 47 ++++++++++++++++++--------------- druid-derive/tests/with_same.rs | 2 +- druid/Cargo.toml | 3 +++ druid/examples/ext_event.rs | 5 +++- druid/examples/timer.rs | 2 +- druid/src/localization.rs | 10 +++---- druid/src/tests/helpers.rs | 2 +- druid/src/tests/layout_tests.rs | 5 +++- druid/src/tests/mod.rs | 1 + druid/src/text/editable_text.rs | 2 +- druid/src/widget/flex.rs | 1 + 13 files changed, 59 insertions(+), 33 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b3f959cf4a..1323461e58 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -346,6 +346,7 @@ dependencies = [ "console_log 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "druid-derive 0.4.0", "druid-shell 0.6.0", + "float-cmp 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "fluent-bundle 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "fluent-langneg 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "fluent-syntax 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -365,6 +366,7 @@ name = "druid-derive" version = "0.4.0" dependencies = [ "druid 0.6.0", + "float-cmp 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "syn 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", @@ -444,6 +446,14 @@ name = "float-cmp" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "float-cmp" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "fluent-bundle" version = "0.11.0" @@ -1730,6 +1740,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" "checksum flate2 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "2cfff41391129e0a856d6d822600b8d71179d46879e310417eb9c762eb178b42" "checksum float-cmp 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "75224bec9bfe1a65e2d34132933f2de7fe79900c96a0174307554244ece8150e" +"checksum float-cmp 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "da62c4f1b81918835a8c6a484a397775fff5953fe83529afd51b05f5c6a6617d" "checksum fluent-bundle 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "27ade33328521266c81cc0924523988f43ccd7359f64689a1b6e818afca3a646" "checksum fluent-langneg 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fe5815efd5542e40841cd34ef9003822352b04c67a70c595c6758597c72e1f56" "checksum fluent-syntax 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ac0f7e83d14cccbf26e165d8881dcac5891af0d85a88543c09dd72ebd31d91ba" diff --git a/druid-derive/Cargo.toml b/druid-derive/Cargo.toml index f3c04f8364..3bdd200d0b 100644 --- a/druid-derive/Cargo.toml +++ b/druid-derive/Cargo.toml @@ -17,3 +17,4 @@ proc-macro2 = "1.0.9" [dev-dependencies] druid = { path = "../druid", version = "0.6.0" } +float-cmp = "0.6.0" diff --git a/druid-derive/tests/with_lens.rs b/druid-derive/tests/with_lens.rs index aa95bc9922..9fe5aab08c 100644 --- a/druid-derive/tests/with_lens.rs +++ b/druid-derive/tests/with_lens.rs @@ -1,37 +1,39 @@ +use float_cmp::approx_eq; + use druid::Data; use druid::Lens; #[test] fn derive_lens() { #[derive(Lens)] - struct Foo { + struct State { text: String, #[lens(name = "lens_number")] number: f64, } - let mut foo = Foo { + let mut state = State { text: "1.0".into(), number: 1.0, }; - let text_lens = Foo::text; - let number_lens = Foo::lens_number; //named lens for number + let text_lens = State::text; + let number_lens = State::lens_number; //named lens for number - text_lens.with(&foo, |data| assert_eq!(data, "1.0")); - number_lens.with(&foo, |data| assert_eq!(*data, 1.0)); + text_lens.with(&state, |data| assert_eq!(data, "1.0")); + number_lens.with(&state, |data| approx_eq!(f64, *data, 1.0)); - text_lens.with_mut(&mut foo, |data| *data = "2.0".into()); - number_lens.with_mut(&mut foo, |data| *data = 2.0); + text_lens.with_mut(&mut state, |data| *data = "2.0".into()); + number_lens.with_mut(&mut state, |data| *data = 2.0); - assert_eq!(foo.text, "2.0"); - assert_eq!(foo.number, 2.0); + assert_eq!(state.text, "2.0"); + approx_eq!(f64, state.number, 2.0); } #[test] fn mix_with_data_lens() { #[derive(Clone, Lens, Data)] - struct Foo { + struct State { #[data(ignore)] text: String, #[data(same_fn = "same_sign")] @@ -40,29 +42,30 @@ fn mix_with_data_lens() { } //test lens - let mut foo = Foo { + let mut state = State { text: "1.0".into(), number: 1.0, }; - let text_lens = Foo::text; - let number_lens = Foo::lens_number; //named lens for number + let text_lens = State::text; + let number_lens = State::lens_number; //named lens for number - text_lens.with(&foo, |data| assert_eq!(data, "1.0")); - number_lens.with(&foo, |data| assert_eq!(*data, 1.0)); + text_lens.with(&state, |data| assert_eq!(data, "1.0")); + number_lens.with(&state, |data| approx_eq!(f64, *data, 1.0)); - text_lens.with_mut(&mut foo, |data| *data = "2.0".into()); - number_lens.with_mut(&mut foo, |data| *data = 2.0); + text_lens.with_mut(&mut state, |data| *data = "2.0".into()); + number_lens.with_mut(&mut state, |data| *data = 2.0); - assert_eq!(foo.text, "2.0"); - assert_eq!(foo.number, 2.0); + assert_eq!(state.text, "2.0"); + approx_eq!(f64, state.number, 2.0); //test data - let two = Foo { + let two = State { text: "666".into(), number: 200.0, }; - assert!(foo.same(&two)) + assert!(state.same(&two)) } +#[allow(clippy::trivially_copy_pass_by_ref)] fn same_sign(one: &f64, two: &f64) -> bool { one.signum() == two.signum() } diff --git a/druid-derive/tests/with_same.rs b/druid-derive/tests/with_same.rs index e8f472a2f0..d36f6eb46d 100644 --- a/druid-derive/tests/with_same.rs +++ b/druid-derive/tests/with_same.rs @@ -66,7 +66,7 @@ fn enums() { let tritwo = Hi::Tri(-1.); assert!(!trione.same(&tritwo)); } - +#[allow(clippy::trivially_copy_pass_by_ref)] fn same_sign(one: &f64, two: &f64) -> bool { one.signum() == two.signum() } diff --git a/druid/Cargo.toml b/druid/Cargo.toml index 833e0609c4..092f55f4cc 100644 --- a/druid/Cargo.toml +++ b/druid/Cargo.toml @@ -47,3 +47,6 @@ version = "0.4.0" [target.'cfg(target_arch="wasm32")'.dependencies] console_log = "0.1.2" + +[dev-dependencies] +float-cmp = "0.6.0" diff --git a/druid/examples/ext_event.rs b/druid/examples/ext_event.rs index 0c048cc84b..6ef2c9450a 100644 --- a/druid/examples/ext_event.rs +++ b/druid/examples/ext_event.rs @@ -108,7 +108,10 @@ pub fn main() { last_color = new_color.clone(); // if this fails we're shutting down - if let Err(_) = event_sink.submit_command(SET_COLOR, new_color, None) { + if event_sink + .submit_command(SET_COLOR, new_color, None) + .is_err() + { break; } thread::sleep(Duration::from_millis(150)); diff --git a/druid/examples/timer.rs b/druid/examples/timer.rs index 7a692b03fa..49bba1d6e3 100644 --- a/druid/examples/timer.rs +++ b/druid/examples/timer.rs @@ -89,7 +89,7 @@ impl Widget for SimpleBox { fn event(&mut self, _ctx: &mut EventCtx, _event: &Event, _data: &mut u32, _env: &Env) {} fn lifecycle(&mut self, ctx: &mut LifeCycleCtx, event: &LifeCycle, _data: &u32, _env: &Env) { - if matches!(event, LifeCycle::HotChanged(_)) { + if let LifeCycle::HotChanged(_) = event { ctx.request_paint(); } } diff --git a/druid/src/localization.rs b/druid/src/localization.rs index 4b39f1d58a..9633c9fc41 100644 --- a/druid/src/localization.rs +++ b/druid/src/localization.rs @@ -411,18 +411,18 @@ mod tests { vec![en_ca.clone(), en_us.clone(), en_gb.clone()] ); assert_eq!( - resmgr.resolve_locales(en_za.clone()), - vec![en_gb.clone(), en_us.clone(), en_ca.clone()] + resmgr.resolve_locales(en_za), + vec![en_gb, en_us.clone(), en_ca] ); assert_eq!( - resmgr.resolve_locales(fr_ca.clone()), + resmgr.resolve_locales(fr_ca), vec![fr_fr.clone(), en_us.clone()] ); assert_eq!( resmgr.resolve_locales(fr_fr.clone()), - vec![fr_fr.clone(), en_us.clone()] + vec![fr_fr, en_us.clone()] ); assert_eq!(resmgr.resolve_locales(cn_hk), vec![en_us.clone()]); - assert_eq!(resmgr.resolve_locales(pt_pt), vec![en_us.clone()]); + assert_eq!(resmgr.resolve_locales(pt_pt), vec![en_us]); } } diff --git a/druid/src/tests/helpers.rs b/druid/src/tests/helpers.rs index 3c2e6f6762..348e697dc6 100644 --- a/druid/src/tests/helpers.rs +++ b/druid/src/tests/helpers.rs @@ -190,7 +190,7 @@ impl Widget for ModularWidget { layout .as_mut() .map(|f| f(state, ctx, bc, data, env)) - .unwrap_or(Size::new(100., 100.)) + .unwrap_or_else(|| Size::new(100., 100.)) } fn paint(&mut self, ctx: &mut PaintCtx, data: &T, env: &Env) { diff --git a/druid/src/tests/layout_tests.rs b/druid/src/tests/layout_tests.rs index ff71492ae0..f0f402d877 100644 --- a/druid/src/tests/layout_tests.rs +++ b/druid/src/tests/layout_tests.rs @@ -14,6 +14,8 @@ //! Tests related to layout. +use float_cmp::approx_eq; + use super::*; #[test] @@ -33,7 +35,8 @@ fn simple_layout() { harness.send_initial_events(); harness.just_layout(); let state = harness.get_state(id_1); - assert_eq!( + approx_eq!( + f64, state.layout_rect().x0, ((DEFAULT_SIZE.width - BOX_WIDTH) / 2.) - PADDING ); diff --git a/druid/src/tests/mod.rs b/druid/src/tests/mod.rs index b78af2c07a..e7655d3b8d 100644 --- a/druid/src/tests/mod.rs +++ b/druid/src/tests/mod.rs @@ -57,6 +57,7 @@ fn propogate_hot() { button: MouseButton::Left, } } + #[allow(clippy::cognitive_complexity)] Harness::create((), widget, |harness| { harness.send_initial_events(); harness.just_layout(); diff --git a/druid/src/text/editable_text.rs b/druid/src/text/editable_text.rs index 9338548cae..18225753d6 100644 --- a/druid/src/text/editable_text.rs +++ b/druid/src/text/editable_text.rs @@ -258,7 +258,7 @@ mod tests { fn replace() { let mut a = String::from("hello world"); a.edit(1..9, "era"); - assert_eq!("herald", String::from(a)); + assert_eq!("herald", a); } #[test] diff --git a/druid/src/widget/flex.rs b/druid/src/widget/flex.rs index 8e960edef3..44382fc24e 100644 --- a/druid/src/widget/flex.rs +++ b/druid/src/widget/flex.rs @@ -785,6 +785,7 @@ mod tests { use super::*; #[test] + #[allow(clippy::cognitive_complexity)] fn test_main_axis_alignment_spacing() { // The following alignment strategy is based on how // Chrome 80 handles it with CSS flex. From 849f27cb09966d4fa99ac92dc7b302dea6f2ff58 Mon Sep 17 00:00:00 2001 From: Kaur Kuut Date: Thu, 16 Apr 2020 02:55:54 +0300 Subject: [PATCH 3/4] Fix dead code warning for wasm. --- druid/src/core.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/druid/src/core.rs b/druid/src/core.rs index 3e9bdff764..7a043abd2a 100644 --- a/druid/src/core.rs +++ b/druid/src/core.rs @@ -783,6 +783,7 @@ impl BaseState { } #[cfg(test)] + #[allow(dead_code)] pub(crate) fn layout_rect(&self) -> Rect { self.layout_rect.unwrap_or_default() } From fd8dd85f4b175082d233ec81cae376df85c7355a Mon Sep 17 00:00:00 2001 From: Kaur Kuut Date: Thu, 16 Apr 2020 15:02:24 +0300 Subject: [PATCH 4/4] Import only the bare minimum of float-cmp. --- Cargo.lock | 3 --- druid-derive/Cargo.toml | 2 +- druid/Cargo.toml | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1323461e58..06309357df 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -450,9 +450,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "float-cmp" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "fluent-bundle" diff --git a/druid-derive/Cargo.toml b/druid-derive/Cargo.toml index 3bdd200d0b..c79aca2355 100644 --- a/druid-derive/Cargo.toml +++ b/druid-derive/Cargo.toml @@ -17,4 +17,4 @@ proc-macro2 = "1.0.9" [dev-dependencies] druid = { path = "../druid", version = "0.6.0" } -float-cmp = "0.6.0" +float-cmp = { version = "0.6.0", default-features = false } diff --git a/druid/Cargo.toml b/druid/Cargo.toml index 092f55f4cc..5f5e0087d8 100644 --- a/druid/Cargo.toml +++ b/druid/Cargo.toml @@ -49,4 +49,4 @@ version = "0.4.0" console_log = "0.1.2" [dev-dependencies] -float-cmp = "0.6.0" +float-cmp = { version = "0.6.0", default-features = false }