diff --git a/.github/workflows/cont_integration.yml b/.github/workflows/cont_integration.yml index 3ff6feb6..1aee1299 100644 --- a/.github/workflows/cont_integration.yml +++ b/.github/workflows/cont_integration.yml @@ -46,7 +46,7 @@ jobs: - name: Build run: cargo build --features ${{ matrix.features }} --no-default-features - name: Clippy - run: cargo clippy --features ${{ matrix.features }} --no-default-features -- -D warnings + run: cargo clippy --all-targets --features ${{ matrix.features }} --no-default-features -- -D warnings - name: Test run: cargo test --features ${{ matrix.features }} --no-default-features @@ -151,7 +151,7 @@ jobs: run: rustup default 1.51.0 # STABLE - name: Set profile run: rustup set profile minimal - - name: Add clippy + - name: Add rustfmt run: rustup component add rustfmt - name: Update toolchain run: rustup update diff --git a/scripts/cargo-check.sh b/scripts/cargo-check.sh deleted file mode 100755 index 86508866..00000000 --- a/scripts/cargo-check.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -# -# Run various invocations of cargo check - -features=( "default" "compiler" "electrum" "esplora" "compact_filters" "key-value-db" "async-interface" "all-keys" "keys-bip39" ) -toolchains=( "+stable" "+1.46" "+nightly" ) - -main() { - check_src - check_all_targets -} - -# Check with all features, with various toolchains. -check_src() { - for toolchain in "${toolchains[@]}"; do - cmd="cargo $toolchain clippy --all-targets --no-default-features" - - for feature in "${features[@]}"; do - touch_files - $cmd --features "$feature" - done - done -} - -# Touch files to prevent cached warnings from not showing up. -touch_files() { - touch $(find . -name *.rs) -} - -main -exit 0 diff --git a/src/descriptor/policy.rs b/src/descriptor/policy.rs index 14e76e7f..f387fea8 100644 --- a/src/descriptor/policy.rs +++ b/src/descriptor/policy.rs @@ -870,7 +870,7 @@ impl ExtractPolicy for Miniscript .map(|n| n.extract_policy(signers, secp)) .collect::, _>>()? .into_iter() - .filter_map(|x| x) + .flatten() .collect(); if mapped.len() < nodes.len() { @@ -1023,8 +1023,8 @@ mod test { assert!( matches!(&policy.item, Multisig { keys, threshold } if threshold == &2usize - && &keys[0].fingerprint.unwrap() == &fingerprint0 - && &keys[1].fingerprint.unwrap() == &fingerprint1) + && keys[0].fingerprint.unwrap() == fingerprint0 + && keys[1].fingerprint.unwrap() == fingerprint1) ); // TODO should this be "Satisfaction::None" since we have no prv keys? // TODO should items and conditions not be empty? @@ -1054,8 +1054,8 @@ mod test { .unwrap(); assert!( matches!(&policy.item, Multisig { keys, threshold } if threshold == &2usize - && &keys[0].fingerprint.unwrap() == &fingerprint0 - && &keys[1].fingerprint.unwrap() == &fingerprint1) + && keys[0].fingerprint.unwrap() == fingerprint0 + && keys[1].fingerprint.unwrap() == fingerprint1) ); assert!( @@ -1429,7 +1429,7 @@ mod test { ) ); - let mut policy_clone = original_policy.clone(); + let mut policy_clone = original_policy; let psbt: PSBT = deserialize(&base64::decode(ALICE_BOB_SIGNED_PSBT).unwrap()).unwrap(); policy_clone .fill_satisfactions(&psbt, &wallet_desc, &secp) diff --git a/src/wallet/coin_selection.rs b/src/wallet/coin_selection.rs index 47ef2d99..5653662d 100644 --- a/src/wallet/coin_selection.rs +++ b/src/wallet/coin_selection.rs @@ -654,7 +654,7 @@ mod test { assert_eq!(result.selected.len(), 3); assert_eq!(result.selected_amount(), 300_010); - assert_eq!(result.fee_amount, 254.0); + assert!((result.fee_amount - 254.0).abs() < f32::EPSILON); } #[test] @@ -675,7 +675,7 @@ mod test { assert_eq!(result.selected.len(), 3); assert_eq!(result.selected_amount(), 300_010); - assert_eq!(result.fee_amount, 254.0); + assert!((result.fee_amount - 254.0).abs() < f32::EPSILON); } #[test] @@ -696,7 +696,7 @@ mod test { assert_eq!(result.selected.len(), 1); assert_eq!(result.selected_amount(), 200_000); - assert_eq!(result.fee_amount, 118.0); + assert!((result.fee_amount - 118.0).abs() < f32::EPSILON); } #[test] @@ -756,7 +756,7 @@ mod test { assert_eq!(result.selected.len(), 3); assert_eq!(result.selected_amount(), 300_000); - assert_eq!(result.fee_amount, 254.0); + assert!((result.fee_amount - 254.0).abs() < f32::EPSILON); } #[test] @@ -777,7 +777,7 @@ mod test { assert_eq!(result.selected.len(), 3); assert_eq!(result.selected_amount(), 300_010); - assert_eq!(result.fee_amount, 254.0); + assert!((result.fee_amount - 254.0).abs() < f32::EPSILON); } #[test] @@ -798,7 +798,7 @@ mod test { assert_eq!(result.selected.len(), 3); assert_eq!(result.selected_amount(), 300010); - assert_eq!(result.fee_amount, 254.0); + assert!((result.fee_amount - 254.0).abs() < f32::EPSILON); } #[test] @@ -968,7 +968,7 @@ mod test { cost_of_change, ) .unwrap(); - assert_eq!(result.fee_amount, 186.0); + assert!((result.fee_amount - 186.0).abs() < f32::EPSILON); assert_eq!(result.selected_amount(), 100_000); } @@ -1031,9 +1031,8 @@ mod test { ); assert!(result.selected_amount() > target_amount); - assert_eq!( - result.fee_amount, - 50.0 + result.selected.len() as f32 * 68.0 + assert!( + (result.fee_amount - (50.0 + result.selected.len() as f32 * 68.0)).abs() < f32::EPSILON ); } } diff --git a/src/wallet/mod.rs b/src/wallet/mod.rs index 3c9dcf01..c6facb1d 100644 --- a/src/wallet/mod.rs +++ b/src/wallet/mod.rs @@ -190,7 +190,7 @@ pub enum AddressIndex { /// then the returned address and subsequent addresses returned by calls to `AddressIndex::New` /// and `AddressIndex::LastUsed` may have already been used. Also if the index is reset to a /// value earlier than the [`crate::blockchain::Blockchain`] stop_gap (default is 20) then a - /// larger stop_gap should be used to monitor for all possibly used addresses. + /// larger stop_gap should be used to monitor for all possibly used addresses. Reset(u32), } @@ -1633,7 +1633,7 @@ mod test { .database .borrow_mut() .set_script_pubkey( - &bitcoin::Address::from_str(&tx_meta.output.iter().next().unwrap().to_address) + &bitcoin::Address::from_str(&tx_meta.output.get(0).unwrap().to_address) .unwrap() .script_pubkey(), KeychainKind::External, @@ -2431,8 +2431,7 @@ mod test { .unsigned_tx .input .iter() - .find(|input| input.previous_output == utxo.outpoint) - .is_some(), + .any(|input| input.previous_output == utxo.outpoint), "foreign_utxo should be in there" ); @@ -3616,7 +3615,7 @@ mod test { #[test] fn test_unused_address() { let db = MemoryDatabase::new(); - let wallet = Wallet::new_offline("wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)", + let wallet = Wallet::new_offline("wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)", None, Network::Testnet, db).unwrap(); assert_eq!(