Merge rust-bitcoin/rust-bitcoin#1079: Run clippy from the test script

74f3a5aeda Run clippy from the test script (Tobin C. Harding)
aa8109a791 Use struct field short form (Tobin C. Harding)
d1a05401f4 Remove redundant calls to clone (Tobin C. Harding)
196492554d Use assert instead of assert_eq (Tobin C. Harding)
3173ef9dbb Remove unnecessary explicit reference (Tobin C. Harding)

Pull request description:

  Currently we run clippy in CI using a github action. The invocation has a couple of shortcomings

  1. it does not lint the tests (this requires `--all-targets`)
  2. it does not lint the examples

  I could not find a way to lint the examples without explicitly linting each example by name.

  **This PR does the following:**

  - Fix clippy issues (patch 1-4)
  - Move the clippy control to `test.sh`
  - Add an env var `DO_LINT` to control it
  - Remove the separate CI job
  - Run the linter during the `Test` job using the stable toolchain.
  - Run clippy with ` --all-features` AND `--all-targets` (only recently made possible).
  - Run each example explicitly

  Thanks to dunxen for noticing all the errors in my psbt example on review and prompting me to work out why clippy was not running :)

ACKs for top commit:
  apoelstra:
    ACK 74f3a5aeda
  Kixunil:
    ACK 74f3a5aeda

Tree-SHA512: 56dc6262144f4caa5efa6fdc46aeecf7bddc050ef134a639b31a34d4c5e01abcdeda18a00f4ded443866bbdfc982b4e5b67b0089639e0c253e207f0b54777f57
This commit is contained in:
Andrew Poelstra 2022-07-26 14:04:17 +00:00
commit 92b6211696
No known key found for this signature in database
GPG Key ID: C588D63CE41B97C1
6 changed files with 18 additions and 25 deletions

View File

@ -13,6 +13,7 @@ jobs:
- rust: stable - rust: stable
env: env:
DO_COV: true DO_COV: true
DO_LINT: true
AS_DEPENDENCY: true AS_DEPENDENCY: true
DO_NO_STD: true DO_NO_STD: true
- rust: beta - rust: beta
@ -106,19 +107,3 @@ jobs:
RUSTFLAGS: "-C link-arg=-Tlink.x" RUSTFLAGS: "-C link-arg=-Tlink.x"
CARGO_TARGET_THUMBV7M_NONE_EABI_RUNNER: "qemu-system-arm -cpu cortex-m3 -machine mps2-an385 -nographic -semihosting-config enable=on,target=native -kernel" CARGO_TARGET_THUMBV7M_NONE_EABI_RUNNER: "qemu-system-arm -cpu cortex-m3 -machine mps2-an385 -nographic -semihosting-config enable=on,target=native -kernel"
run: cd embedded && cargo run --target thumbv7m-none-eabi run: cd embedded && cargo run --target thumbv7m-none-eabi
Clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- run: rustup component add clippy
- uses: actions-rs/cargo@v1
with:
command: clippy
args: --all-features -- -D warnings

View File

@ -31,6 +31,14 @@ if [ "$duplicate_dependencies" -ne 0 ]; then
exit 1 exit 1
fi fi
if [ "$DO_LINT" = true ]
then
cargo clippy --all-features --all-targets -- -D warnings
cargo clippy --example bip32 -- -D warnings
cargo clippy --example handshake -- -D warnings
cargo clippy --example ecdsa-psbt --features=bitcoinconsensus -- -D warnings
fi
echo "********* Testing std *************" echo "********* Testing std *************"
# Test without any features other than std first # Test without any features other than std first
cargo test --verbose --no-default-features --features="std" cargo test --verbose --no-default-features --features="std"

View File

@ -2033,10 +2033,10 @@ mod tests {
let json = "{\"amt\": 21000000.00000001, \ let json = "{\"amt\": 21000000.00000001, \
\"samt\": -21000000.00000001}"; \"samt\": -21000000.00000001}";
let t: T = serde_json::from_str(&json).unwrap(); let t: T = serde_json::from_str(json).unwrap();
assert_eq!(t, orig); assert_eq!(t, orig);
let value: serde_json::Value = serde_json::from_str(&json).unwrap(); let value: serde_json::Value = serde_json::from_str(json).unwrap();
assert_eq!(t, serde_json::from_value(value).unwrap()); assert_eq!(t, serde_json::from_value(value).unwrap());
// errors // errors

View File

@ -638,7 +638,7 @@ mod tests {
]; ];
let s = Secp256k1::new(); let s = Secp256k1::new();
let sk = PrivateKey::from_str(&KEY_WIF).unwrap(); let sk = PrivateKey::from_str(KEY_WIF).unwrap();
let pk = PublicKey::from_private_key(&s, &sk); let pk = PublicKey::from_private_key(&s, &sk);
let pk_u = PublicKey { let pk_u = PublicKey {
inner: pk.inner, inner: pk.inner,

View File

@ -317,7 +317,7 @@ mod tests {
let secp = secp256k1::Secp256k1::new(); let secp = secp256k1::Secp256k1::new();
let message = "rust-bitcoin MessageSignature test"; let message = "rust-bitcoin MessageSignature test";
let msg_hash = super::signed_msg_hash(&message); let msg_hash = super::signed_msg_hash(message);
let msg = secp256k1::Message::from(msg_hash); let msg = secp256k1::Message::from(msg_hash);
@ -331,7 +331,7 @@ mod tests {
assert_eq!(signature.to_base64(), signature.to_string()); assert_eq!(signature.to_base64(), signature.to_string());
let signature2 = super::MessageSignature::from_str(&signature.to_string()).unwrap(); let signature2 = super::MessageSignature::from_str(&signature.to_string()).unwrap();
let pubkey = signature2.recover_pubkey(&secp, msg_hash).unwrap(); let pubkey = signature2.recover_pubkey(&secp, msg_hash).unwrap();
assert_eq!(pubkey.compressed, true); assert!(pubkey.compressed);
assert_eq!(pubkey.inner, secp256k1::PublicKey::from_secret_key(&secp, &privkey)); assert_eq!(pubkey.inner, secp256k1::PublicKey::from_secret_key(&secp, &privkey));
let p2pkh = Address::p2pkh(&pubkey, Network::Bitcoin); let p2pkh = Address::p2pkh(&pubkey, Network::Bitcoin);
@ -357,7 +357,7 @@ mod tests {
let secp = secp256k1::Secp256k1::new(); let secp = secp256k1::Secp256k1::new();
let message = "a different message from what was signed"; let message = "a different message from what was signed";
let msg_hash = super::signed_msg_hash(&message); let msg_hash = super::signed_msg_hash(message);
// Signature of msg = "rust-bitcoin MessageSignature test" // Signature of msg = "rust-bitcoin MessageSignature test"
// Signed with pk "UuOGDsfLPr4HIMKQX0ipjJeRaj1geCq3yPUF2COP5ME=" // Signed with pk "UuOGDsfLPr4HIMKQX0ipjJeRaj1geCq3yPUF2COP5ME="

View File

@ -543,7 +543,7 @@ mod tests {
let xpub: ExtendedPubKey = let xpub: ExtendedPubKey =
"xpub661MyMwAqRbcGoRVtwfvzZsq2VBJR1LAHfQstHUoxqDorV89vRoMxUZ27kLrraAj6MPi\ "xpub661MyMwAqRbcGoRVtwfvzZsq2VBJR1LAHfQstHUoxqDorV89vRoMxUZ27kLrraAj6MPi\
QfrDb27gigC1VS1dBXi5jGpxmMeBXEkKkcXUTg4".parse().unwrap(); QfrDb27gigC1VS1dBXi5jGpxmMeBXEkKkcXUTg4".parse().unwrap();
vec![(xpub, key_source.clone())].into_iter().collect() vec![(xpub, key_source)].into_iter().collect()
}, },
unsigned_tx: { unsigned_tx: {
let mut unsigned = tx.clone(); let mut unsigned = tx.clone();
@ -579,8 +579,8 @@ mod tests {
}], }],
outputs: vec![Output { outputs: vec![Output {
bip32_derivation: keypaths, bip32_derivation: keypaths,
proprietary: proprietary.clone(), proprietary,
unknown: unknown.clone(), unknown,
..Default::default() ..Default::default()
}], }],
}; };