From a04d1b1a3844f74cc06038ea072999af347f6328 Mon Sep 17 00:00:00 2001 From: Soubhik-10 Date: Thu, 29 May 2025 20:53:10 +0530 Subject: [PATCH] added disable-code-size-limit flag in forge script --- crates/script/src/lib.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/crates/script/src/lib.rs b/crates/script/src/lib.rs index ac5954924fa47..138bff6c9d7e4 100644 --- a/crates/script/src/lib.rs +++ b/crates/script/src/lib.rs @@ -179,6 +179,10 @@ pub struct ScriptArgs { #[arg(long)] pub non_interactive: bool, + /// Disables the contract size limit during script execution. + #[arg(long)] + pub disable_code_size_limit: bool, + /// The Etherscan (or equivalent) API key #[arg(long, env = "ETHERSCAN_API_KEY", value_name = "KEY")] pub etherscan_api_key: Option, @@ -401,6 +405,11 @@ impl ScriptArgs { known_contracts: &ContractsByArtifact, create2_deployer: Address, ) -> Result<()> { + // If disable-code-size-limit flag is enabled then skip the size check + if self.disable_code_size_limit { + return Ok(()) + } + // (name, &init, &deployed)[] let mut bytecodes: Vec<(String, &[u8], &[u8])> = vec![]; @@ -709,6 +718,18 @@ mod tests { assert_eq!(config.etherscan_api_key, Some("goerli".to_string())); } + #[test] + fn can_disable_code_size_limit() { + let args = + ScriptArgs::parse_from(["foundry-cli", "Contract.sol", "--disable-code-size-limit"]); + assert!(args.disable_code_size_limit); + + let result = ScriptResult::default(); + let contracts = ContractsByArtifact::default(); + let create = Address::ZERO; + assert!(args.check_contract_sizes(&result, &contracts, create).is_ok()); + } + #[test] fn can_parse_verifier_url() { let args = ScriptArgs::parse_from([