diff --git a/packages/contracts-bedrock/test/setup/DeployVariations.sol b/packages/contracts-bedrock/test/setup/DeployVariations.sol new file mode 100644 index 0000000000000..2257e99055146 --- /dev/null +++ b/packages/contracts-bedrock/test/setup/DeployVariations.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.15; + +// Testing utilities +import { CommonTest } from "test/setup/CommonTest.sol"; +import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; + +contract DeployVariations_Test is CommonTest { + function setUp() public override { + // Prevent calling the base CommonTest.setUp() function, as we will run it within the test functions + // after setting the feature flags + } + + // Enable features which should be possible to enable or disable regardless of other options. + function enableAddOns(bool _enableCGT, bool _enableAltDa) public { + if (_enableCGT) { + ERC20 token = new ERC20("Silly", "SIL"); + super.enableCustomGasToken(address(token)); + } + if (_enableAltDa) { + super.enableAltDA(); + } + } + + /// @dev It should be possible to enable Fault Proofs with any mix of CGT and Alt-DA. + function testFuzz_enableFaultProofs(bool _enableCGT, bool _enableAltDa) public virtual { + enableAddOns(_enableCGT, _enableAltDa); + super.enableFaultProofs(); + super.setUp(); + } + + /// @dev It should be possible to enable Fault Proofs and Interop with any mix of CGT and Alt-DA. + function test_enableInteropAndFaultProofs(bool _enableCGT, bool _enableAltDa) public virtual { + enableAddOns(_enableCGT, _enableAltDa); + super.enableInterop(); + super.enableFaultProofs(); + super.setUp(); + } +}