Skip to content

Commit aa581e6

Browse files
mattssegrandizzyDaniPopes
authored andcommitted
test: enhance tests (foundry-rs#9334)
* test: enhance tests * update ws url * Assert json unordered * Update crates/test-utils/src/util.rs Co-authored-by: DaniPopes <[email protected]> * Changes after review * Fix rpc url test --------- Co-authored-by: grandizzy <[email protected]> Co-authored-by: grandizzy <[email protected]> Co-authored-by: DaniPopes <[email protected]>
1 parent 4e2a971 commit aa581e6

File tree

4 files changed

+18
-9
lines changed

4 files changed

+18
-9
lines changed

crates/cast/tests/cli/main.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -650,8 +650,7 @@ casttest!(rpc_with_args, |_prj, cmd| {
650650

651651
// Call `cast rpc eth_getBlockByNumber 0x123 false`
652652
cmd.args(["rpc", "--rpc-url", eth_rpc_url.as_str(), "eth_getBlockByNumber", "0x123", "false"])
653-
.assert_success()
654-
.stdout_eq(str![[r#"
653+
.assert_json_stdout(str![[r#"
655654
{"number":"0x123","hash":"0xc5dab4e189004a1312e9db43a40abb2de91ad7dd25e75880bf36016d8e9df524","transactions":[],"totalDifficulty":"0x4dea420908b","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","extraData":"0x476574682f4c5649562f76312e302e302f6c696e75782f676f312e342e32","nonce":"0x29d6547c196e00e0","miner":"0xbb7b8287f3f0a933474a79eae42cbca977791171","difficulty":"0x494433b31","gasLimit":"0x1388","gasUsed":"0x0","uncles":[],"sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","size":"0x220","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","stateRoot":"0x3fe6bd17aa85376c7d566df97d9f2e536f37f7a87abb3a6f9e2891cf9442f2e4","mixHash":"0x943056aa305aa6d22a3c06110942980342d1f4d4b11c17711961436a0f963ea0","parentHash":"0x7abfd11e862ccde76d6ea8ee20978aac26f4bcb55de1188cc0335be13e817017","timestamp":"0x55ba4564"}
656655
657656
"#]]);
@@ -670,8 +669,7 @@ casttest!(rpc_raw_params, |_prj, cmd| {
670669
"--raw",
671670
r#"["0x123", false]"#,
672671
])
673-
.assert_success()
674-
.stdout_eq(str![[r#"
672+
.assert_json_stdout(str![[r#"
675673
{"number":"0x123","hash":"0xc5dab4e189004a1312e9db43a40abb2de91ad7dd25e75880bf36016d8e9df524","transactions":[],"totalDifficulty":"0x4dea420908b","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","extraData":"0x476574682f4c5649562f76312e302e302f6c696e75782f676f312e342e32","nonce":"0x29d6547c196e00e0","miner":"0xbb7b8287f3f0a933474a79eae42cbca977791171","difficulty":"0x494433b31","gasLimit":"0x1388","gasUsed":"0x0","uncles":[],"sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","size":"0x220","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","stateRoot":"0x3fe6bd17aa85376c7d566df97d9f2e536f37f7a87abb3a6f9e2891cf9442f2e4","mixHash":"0x943056aa305aa6d22a3c06110942980342d1f4d4b11c17711961436a0f963ea0","parentHash":"0x7abfd11e862ccde76d6ea8ee20978aac26f4bcb55de1188cc0335be13e817017","timestamp":"0x55ba4564"}
676674
677675
"#]]);
@@ -687,8 +685,7 @@ casttest!(rpc_raw_params_stdin, |_prj, cmd| {
687685
stdin.write_all(b"\n[\n\"0x123\",\nfalse\n]\n").unwrap();
688686
},
689687
)
690-
.assert_success()
691-
.stdout_eq(str![[r#"
688+
.assert_json_stdout(str![[r#"
692689
{"number":"0x123","hash":"0xc5dab4e189004a1312e9db43a40abb2de91ad7dd25e75880bf36016d8e9df524","transactions":[],"totalDifficulty":"0x4dea420908b","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","extraData":"0x476574682f4c5649562f76312e302e302f6c696e75782f676f312e342e32","nonce":"0x29d6547c196e00e0","miner":"0xbb7b8287f3f0a933474a79eae42cbca977791171","difficulty":"0x494433b31","gasLimit":"0x1388","gasUsed":"0x0","uncles":[],"sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","size":"0x220","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","stateRoot":"0x3fe6bd17aa85376c7d566df97d9f2e536f37f7a87abb3a6f9e2891cf9442f2e4","mixHash":"0x943056aa305aa6d22a3c06110942980342d1f4d4b11c17711961436a0f963ea0","parentHash":"0x7abfd11e862ccde76d6ea8ee20978aac26f4bcb55de1188cc0335be13e817017","timestamp":"0x55ba4564"}
693690
694691
"#]]);

crates/test-utils/src/rpc.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ use std::sync::{
1010
// List of general purpose infura keys to rotate through
1111
static INFURA_KEYS: LazyLock<Vec<&'static str>> = LazyLock::new(|| {
1212
let mut keys = vec![
13+
"6cb19d07ca2d44f59befd61563b1037b",
14+
"6d46c0cca653407b861f3f93f7b0236a",
15+
"69a36846dec146e3a2898429be60be85",
1316
// "16a8be88795540b9b3903d8de0f7baa5",
1417
// "f4a0bdad42674adab5fc0ac077ffab2b",
1518
// "5c812e02193c4ba793f8c214317582bd",
@@ -184,7 +187,7 @@ fn next_url(is_ws: bool, chain: NamedChain) -> String {
184187

185188
match (is_ws, is_infura) {
186189
(false, true) => format!("https://{full}.infura.io/v3/{key}"),
187-
(true, true) => format!("wss://{full}.infura.io/v3/{key}"),
190+
(true, true) => format!("wss://{full}.infura.io/ws/v3/{key}"),
188191
(false, false) => format!("https://{full}.g.alchemy.com/v2/{key}"),
189192
(true, false) => format!("wss://{full}.g.alchemy.com/v2/{key}"),
190193
}

crates/test-utils/src/util.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use foundry_compilers::{
1111
use foundry_config::Config;
1212
use parking_lot::Mutex;
1313
use regex::Regex;
14-
use snapbox::{cmd::OutputAssert, str};
14+
use snapbox::{assert_data_eq, cmd::OutputAssert, str, IntoData};
1515
use std::{
1616
env,
1717
ffi::OsStr,
@@ -893,6 +893,15 @@ impl TestCommand {
893893
self.assert().success()
894894
}
895895

896+
/// Runs the command and asserts that it resulted in success, with expected JSON data.
897+
#[track_caller]
898+
pub fn assert_json_stdout(&mut self, expected: impl IntoData) {
899+
let expected = expected.is(snapbox::data::DataFormat::Json).unordered();
900+
let stdout = self.assert_success().get_output().stdout.clone();
901+
let actual = stdout.into_data().is(snapbox::data::DataFormat::Json).unordered();
902+
assert_data_eq!(actual, expected);
903+
}
904+
896905
/// Runs the command and asserts that it **failed** nothing was printed to stdout.
897906
#[track_caller]
898907
pub fn assert_empty_stdout(&mut self) {

testdata/default/cheats/RpcUrls.t.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ contract RpcUrlTest is DSTest {
1010
// returns the correct url
1111
function testCanGetRpcUrl() public {
1212
string memory url = vm.rpcUrl("mainnet");
13-
assertEq(bytes(url).length, 69);
13+
assertTrue(bytes(url).length == 61 || bytes(url).length == 69);
1414
}
1515

1616
// returns an error if env alias does not exist

0 commit comments

Comments
 (0)