Skip to content
This repository was archived by the owner on Mar 11, 2025. It is now read-only.

Commit d584463

Browse files
authored
CI: Update clippy to use --all-features, fix issues (#7395)
* CI: Update clippy to use `--all-features`, fix issues #### Problem Clippy isn't run with `--all-features`, and there are some pieces that are broken with all features enabled. #### Summary of changes Add `--all-features` to clippy steps, and fix existing issues. * Fixup tests
1 parent bd51bfc commit d584463

File tree

8 files changed

+35
-48
lines changed

8 files changed

+35
-48
lines changed

.github/workflows/publish-rust.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ jobs:
8484
run: ./ci/install-build-deps.sh
8585

8686
- name: Run clippy
87-
run: ./cargo-nightly clippy -Zunstable-options --workspace --all-targets --features test-sbf -- --deny=warnings --deny=clippy::arithmetic_side_effects
87+
run: ./cargo-nightly clippy -Zunstable-options --workspace --all-targets --all-features -- --deny=warnings --deny=clippy::arithmetic_side_effects
8888

8989
cargo-build-test:
9090
runs-on: ubuntu-latest

.github/workflows/pull-request.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ jobs:
7171
run: ./ci/install-build-deps.sh
7272

7373
- name: Run clippy
74-
run: ./cargo-nightly clippy -Zunstable-options --workspace --all-targets --features test-sbf -- --deny=warnings --deny=clippy::arithmetic_side_effects
74+
run: ./cargo-nightly clippy -Zunstable-options --workspace --all-targets --all-features -- --deny=warnings --deny=clippy::arithmetic_side_effects
7575

7676
audit:
7777
runs-on: ubuntu-latest

libraries/discriminator/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,15 +130,15 @@ mod tests {
130130

131131
#[cfg(all(test, feature = "borsh"))]
132132
mod borsh_test {
133-
use super::*;
133+
use {super::*, borsh::BorshDeserialize};
134134

135135
#[test]
136136
fn borsh_test() {
137137
let my_discrim = ArrayDiscriminator::new_with_hash_input("my_discrim");
138138
let mut buffer = [0u8; 8];
139-
my_discrim.serialize(&mut buffer[..]).unwrap();
139+
borsh::to_writer(&mut buffer[..], &my_discrim).unwrap();
140140
let my_discrim_again = ArrayDiscriminator::try_from_slice(&buffer).unwrap();
141141
assert_eq!(my_discrim, my_discrim_again);
142-
assert_eq!(buf, my_discrim.into());
142+
assert_eq!(buffer, <[u8; 8]>::from(my_discrim));
143143
}
144144
}

libraries/pod/src/optional_keys.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ impl<'de> Visitor<'de> for OptionalNonZeroPubkeyVisitor {
101101
where
102102
E: Error,
103103
{
104-
let pkey = Pubkey::from_str(&v)
104+
let pkey = Pubkey::from_str(v)
105105
.map_err(|_| Error::invalid_value(Unexpected::Str(v), &"value string"))?;
106106

107107
OptionalNonZeroPubkey::try_from(Some(pkey))

token-swap/program/src/constraints.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! Various constraints as required for production environments
22
33
#[cfg(feature = "production")]
4-
use std::env;
4+
use std::option_env;
55
use {
66
crate::{
77
curve::{
@@ -21,7 +21,7 @@ use {
2121
/// cannot be used, so we have to split the curves based on their types.
2222
pub struct SwapConstraints<'a> {
2323
/// Owner of the program
24-
pub owner_key: &'a str,
24+
pub owner_key: Option<&'a str>,
2525
/// Valid curve types
2626
pub valid_curve_types: &'a [CurveType],
2727
/// Valid fees
@@ -61,7 +61,7 @@ impl<'a> SwapConstraints<'a> {
6161
}
6262

6363
#[cfg(feature = "production")]
64-
const OWNER_KEY: &str = env!("SWAP_PROGRAM_OWNER_FEE_ADDRESS");
64+
const OWNER_KEY: Option<&str> = option_env!("SWAP_PROGRAM_OWNER_FEE_ADDRESS");
6565
#[cfg(feature = "production")]
6666
const FEES: &Fees = &Fees {
6767
trade_fee_numerator: 0,
@@ -115,7 +115,7 @@ mod tests {
115115
let owner_withdraw_fee_denominator = 10;
116116
let host_fee_numerator = 10;
117117
let host_fee_denominator = 100;
118-
let owner_key = "";
118+
let owner_key = Some("");
119119
let curve_type = CurveType::ConstantProduct;
120120
let valid_fees = Fees {
121121
trade_fee_numerator,

token-swap/program/src/processor.rs

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,7 @@ impl Processor {
338338
if let Some(swap_constraints) = swap_constraints {
339339
let owner_key = swap_constraints
340340
.owner_key
341+
.unwrap()
341342
.parse::<Pubkey>()
342343
.map_err(|_| SwapError::InvalidOwner)?;
343344
if fee_account.owner != owner_key {
@@ -3109,10 +3110,10 @@ mod tests {
31093110
curve_type: CurveType::ConstantProduct,
31103111
calculator: Arc::new(curve),
31113112
};
3112-
let owner_key = &new_key.to_string();
3113+
let owner_key = new_key.to_string();
31133114
let valid_curve_types = &[CurveType::ConstantProduct];
31143115
let constraints = Some(SwapConstraints {
3115-
owner_key,
3116+
owner_key: Some(owner_key.as_ref()),
31163117
valid_curve_types,
31173118
fees: &fees,
31183119
});
@@ -3182,10 +3183,10 @@ mod tests {
31823183
curve_type: CurveType::ConstantProduct,
31833184
calculator: Arc::new(curve),
31843185
};
3185-
let owner_key = &user_key.to_string();
3186+
let owner_key = user_key.to_string();
31863187
let valid_curve_types = &[CurveType::ConstantProduct];
31873188
let constraints = Some(SwapConstraints {
3188-
owner_key,
3189+
owner_key: Some(owner_key.as_ref()),
31893190
valid_curve_types,
31903191
fees: &fees,
31913192
});
@@ -3257,10 +3258,10 @@ mod tests {
32573258
curve_type: CurveType::ConstantProduct,
32583259
calculator: Arc::new(curve),
32593260
};
3260-
let owner_key = &user_key.to_string();
3261+
let owner_key = user_key.to_string();
32613262
let valid_curve_types = &[CurveType::ConstantProduct];
32623263
let constraints = Some(SwapConstraints {
3263-
owner_key,
3264+
owner_key: Some(owner_key.as_ref()),
32643265
valid_curve_types,
32653266
fees: &fees,
32663267
});
@@ -6481,10 +6482,10 @@ mod tests {
64816482
calculator: Arc::new(curve),
64826483
};
64836484

6484-
let owner_key_str = &owner_key.to_string();
6485+
let owner_key_str = owner_key.to_string();
64856486
let valid_curve_types = &[CurveType::ConstantProduct];
64866487
let constraints = Some(SwapConstraints {
6487-
owner_key: owner_key_str,
6488+
owner_key: Some(owner_key_str.as_ref()),
64886489
valid_curve_types,
64896490
fees: &fees,
64906491
});
@@ -7184,7 +7185,7 @@ mod tests {
71847185
_pool_key,
71857186
_pool_account,
71867187
) = accounts.setup_token_accounts(&user_key, &authority_key, initial_a, initial_b, 0);
7187-
let owner_key = &swapper_key.to_string();
7188+
let owner_key = swapper_key.to_string();
71887189
let fees = Fees {
71897190
trade_fee_numerator,
71907191
trade_fee_denominator,
@@ -7196,7 +7197,7 @@ mod tests {
71967197
host_fee_denominator,
71977198
};
71987199
let constraints = Some(SwapConstraints {
7199-
owner_key,
7200+
owner_key: Some(owner_key.as_ref()),
72007201
valid_curve_types: &[],
72017202
fees: &fees,
72027203
});
@@ -7264,7 +7265,7 @@ mod tests {
72647265
_pool_key,
72657266
_pool_account,
72667267
) = accounts.setup_token_accounts(&user_key, &authority_key, initial_a, initial_b, 0);
7267-
let owner_key = &swapper_key.to_string();
7268+
let owner_key = swapper_key.to_string();
72687269
let fees = Fees {
72697270
trade_fee_numerator,
72707271
trade_fee_denominator,
@@ -7276,7 +7277,7 @@ mod tests {
72767277
host_fee_denominator,
72777278
};
72787279
let constraints = Some(SwapConstraints {
7279-
owner_key,
7280+
owner_key: Some(owner_key.as_ref()),
72807281
valid_curve_types: &[],
72817282
fees: &fees,
72827283
});
@@ -8188,9 +8189,9 @@ mod tests {
81888189
calculator: Arc::new(ConstantProductCurve {}),
81898190
};
81908191

8191-
let owner_key_str = &owner_key.to_string();
8192+
let owner_key_str = owner_key.to_string();
81928193
let constraints = Some(SwapConstraints {
8193-
owner_key: owner_key_str,
8194+
owner_key: Some(owner_key_str.as_ref()),
81948195
valid_curve_types: &[CurveType::ConstantProduct],
81958196
fees: &fees,
81968197
});

token/program-2022/src/serialization.rs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
//! serialization module - contains helpers for serde types from other crates,
22
//! deserialization visitors
33
4-
use {
5-
base64::{prelude::BASE64_STANDARD, Engine},
6-
serde::de::Error,
7-
};
8-
94
/// helper function to ser/deser COption wrapped values
105
pub mod coption_fromstr {
116
use {
@@ -77,9 +72,7 @@ pub mod coption_fromstr {
7772
D: Deserializer<'de>,
7873
T: FromStr,
7974
{
80-
d.deserialize_option(COptionVisitor {
81-
s: PhantomData::default(),
82-
})
75+
d.deserialize_option(COptionVisitor { s: PhantomData })
8376
}
8477
}
8578

token/program-2022/tests/serialization.rs

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,7 @@ use {
55
solana_program::program_option::COption,
66
solana_sdk::pubkey::Pubkey,
77
spl_pod::optional_keys::{OptionalNonZeroElGamalPubkey, OptionalNonZeroPubkey},
8-
spl_token_2022::{
9-
extension::confidential_transfer,
10-
instruction,
11-
solana_zk_sdk::encryption::pod::{
12-
auth_encryption::PodAeCiphertext, elgamal::PodElGamalPubkey,
13-
},
14-
},
8+
spl_token_2022::{extension::confidential_transfer, instruction},
159
std::str::FromStr,
1610
};
1711

@@ -70,7 +64,7 @@ fn serde_instruction_optional_nonzero_pubkeys_podbool() {
7064
};
7165

7266
let serialized = serde_json::to_string(&inst).unwrap();
73-
let serialized_expected = &format!("{{\"authority\":\"4uQeVj5tqViQh7yWWGStvkEG1Zmhx6uasJtWCJziofM\",\"autoApproveNewAccounts\":false,\"auditorElgamalPubkey\":\"ohdsJIKPEtvEhvKRszHlwUpAA55E63xY95Ck/uQMrVU=\"}}");
67+
let serialized_expected = &"{\"authority\":\"4uQeVj5tqViQh7yWWGStvkEG1Zmhx6uasJtWCJziofM\",\"autoApproveNewAccounts\":false,\"auditorElgamalPubkey\":\"ohdsJIKPEtvEhvKRszHlwUpAA55E63xY95Ck/uQMrVU=\"}";
7468
assert_eq!(&serialized, serialized_expected);
7569

7670
let deserialized =
@@ -95,14 +89,13 @@ fn serde_instruction_optional_nonzero_pubkeys_podbool_with_none() {
9589
};
9690

9791
let serialized = serde_json::to_string(&inst).unwrap();
98-
let serialized_expected = &format!(
99-
"{{\"authority\":null,\"autoApproveNewAccounts\":false,\"auditorElgamalPubkey\":null}}"
100-
);
92+
let serialized_expected =
93+
&"{\"authority\":null,\"autoApproveNewAccounts\":false,\"auditorElgamalPubkey\":null}";
10194
assert_eq!(&serialized, serialized_expected);
10295

10396
let deserialized =
10497
serde_json::from_str::<confidential_transfer::instruction::InitializeMintData>(
105-
&serialized_expected,
98+
serialized_expected,
10699
)
107100
.unwrap();
108101
assert_eq!(inst, deserialized);
@@ -123,12 +116,12 @@ fn serde_instruction_decryptable_balance_podu64() {
123116
};
124117

125118
let serialized = serde_json::to_string(&inst).unwrap();
126-
let serialized_expected = &format!("{{\"decryptableZeroBalance\":\"OBZmMHBqOhkZ9MLZSYlJJhgaJBnr6kS1C1Kqo1nNcaA3ECOX\",\"maximumPendingBalanceCreditCounter\":1099,\"proofInstructionOffset\":100}}");
119+
let serialized_expected = &"{\"decryptableZeroBalance\":\"OBZmMHBqOhkZ9MLZSYlJJhgaJBnr6kS1C1Kqo1nNcaA3ECOX\",\"maximumPendingBalanceCreditCounter\":1099,\"proofInstructionOffset\":100}";
127120
assert_eq!(&serialized, serialized_expected);
128121

129122
let deserialized = serde_json::from_str::<
130123
confidential_transfer::instruction::ConfigureAccountInstructionData,
131-
>(&serialized_expected)
124+
>(serialized_expected)
132125
.unwrap();
133126
assert_eq!(inst, deserialized);
134127
}
@@ -153,7 +146,7 @@ fn serde_instruction_elgamal_pubkey() {
153146
assert_eq!(&serialized, serialized_expected);
154147

155148
let deserialized =
156-
serde_json::from_str::<InitializeConfidentialTransferFeeConfigData>(&serialized_expected)
149+
serde_json::from_str::<InitializeConfidentialTransferFeeConfigData>(serialized_expected)
157150
.unwrap();
158151
assert_eq!(inst, deserialized);
159152
}
@@ -171,5 +164,5 @@ fn serde_instruction_basis_points() {
171164
let serialized_expected = "{\"rateAuthority\":null,\"rate\":127}";
172165
assert_eq!(&serialized, serialized_expected);
173166

174-
serde_json::from_str::<InitializeInstructionData>(&serialized_expected).unwrap();
167+
serde_json::from_str::<InitializeInstructionData>(serialized_expected).unwrap();
175168
}

0 commit comments

Comments
 (0)