Skip to content

Commit c62c90c

Browse files
committed
Fix proposer value in upgrade tests
1 parent 42ec3f3 commit c62c90c

File tree

2 files changed

+30
-30
lines changed

2 files changed

+30
-30
lines changed

packages/contracts-bedrock/test/L1/OPContractsManager.t.sol

Lines changed: 11 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ contract OPContractsManager_Harness is OPContractsManager {
9494

9595
/// @title OPContractsManager_Upgrade_Harness
9696
/// @notice Exposes internal functions for testing.
97-
contract OPContractsManager_Upgrade_Harness is CommonTest {
97+
contract OPContractsManager_Upgrade_Harness is CommonTest, DisputeGames {
9898
// The Upgraded event emitted by the Proxy contract.
9999
event Upgraded(address indexed implementation);
100100

@@ -271,25 +271,17 @@ contract OPContractsManager_Upgrade_Harness is CommonTest {
271271
}
272272

273273
// Create validationOverrides
274-
address challengerOverride;
275-
if (isDevFeatureEnabled(DevFeatures.DEPLOY_V2_DISPUTE_GAMES)) {
276-
LibGameArgs.GameArgs memory gameArgs =
277-
LibGameArgs.decode(disputeGameFactory.gameArgs(GameTypes.PERMISSIONED_CANNON));
278-
challengerOverride = gameArgs.challenger;
279-
} else {
280-
challengerOverride = IPermissionedDisputeGame(
281-
address(disputeGameFactory.gameImpls(GameTypes.PERMISSIONED_CANNON))
282-
).challenger();
283-
}
274+
address challengerOverride = permissionedGameChallenger(disputeGameFactory);
284275
IOPContractsManagerStandardValidator.ValidationOverrides memory validationOverrides =
285276
IOPContractsManagerStandardValidator.ValidationOverrides({
286277
l1PAOMultisig: opChainConfigs[0].proxyAdmin.owner(),
287278
challenger: challengerOverride
288279
});
289280

290-
// Grab the validator before we do the error assertion because otherwise the assertion will
281+
// Grab the validator, etc before we do the error assertion because otherwise the assertion will
291282
// try to apply to this function call instead.
292283
IOPContractsManagerStandardValidator validator = _opcm.opcmStandardValidator();
284+
address proposer = permissionedGameProposer(disputeGameFactory);
293285

294286
// If the absolute prestate is zero, we will always get a PDDG-40,PLDG-40 error here in the
295287
// standard validator. This happens because an absolute prestate of zero means that the
@@ -310,35 +302,24 @@ contract OPContractsManager_Upgrade_Harness is CommonTest {
310302
sysCfg: opChainConfigs[0].systemConfigProxy,
311303
absolutePrestate: opChainConfigs[0].absolutePrestate.raw(),
312304
l2ChainID: l2ChainId,
313-
proposer: deploy.cfg().l2OutputOracleProposer()
305+
proposer: proposer
314306
}),
315307
false,
316308
validationOverrides
317309
);
318310

319-
_runPostUpgradeSmokeTests(_opcm, opChainConfigs[0], challengerOverride);
320-
}
321-
322-
function permissionedGameProposer() internal view returns (address) {
323-
if (isDevFeatureEnabled(DevFeatures.DEPLOY_V2_DISPUTE_GAMES)) {
324-
LibGameArgs.GameArgs memory gameArgs =
325-
LibGameArgs.decode(disputeGameFactory.gameArgs(GameTypes.PERMISSIONED_CANNON));
326-
return gameArgs.proposer;
327-
} else {
328-
return IPermissionedDisputeGame(address(disputeGameFactory.gameImpls(GameTypes.PERMISSIONED_CANNON)))
329-
.proposer();
330-
}
311+
_runPostUpgradeSmokeTests(_opcm, opChainConfigs[0], challengerOverride, proposer);
331312
}
332313

333314
/// @notice Runs some smoke tests after an upgrade
334315
function _runPostUpgradeSmokeTests(
335316
IOPContractsManager _opcm,
336317
IOPContractsManager.OpChainConfig memory _opChainConfig,
337-
address _challenger
318+
address _challenger,
319+
address _expectedProposer
338320
)
339321
internal
340322
{
341-
address expectedProposer = permissionedGameProposer();
342323
bytes32 expectedAbsolutePrestate = _opChainConfig.absolutePrestate.raw();
343324
if (expectedAbsolutePrestate == bytes32(0)) {
344325
expectedAbsolutePrestate = preUpgradeState.permissionedAbsolutePrestate.raw();
@@ -357,7 +338,7 @@ contract OPContractsManager_Upgrade_Harness is CommonTest {
357338
gameTypes[1] = GameTypes.CANNON;
358339
for (uint256 i = 0; i < gameTypes.length; i++) {
359340
GameType gt = gameTypes[i];
360-
vm.prank(expectedProposer, expectedProposer);
341+
vm.prank(_expectedProposer, _expectedProposer);
361342
IPermissionedDisputeGame game = IPermissionedDisputeGame(
362343
address(disputeGameFactory.create{ value: bondAmount }(gt, claim, abi.encode(l2BlockNumber)))
363344
);
@@ -373,14 +354,14 @@ contract OPContractsManager_Upgrade_Harness is CommonTest {
373354
vm.assertEq(30, game.splitDepth());
374355
vm.assertEq(l2BlockNumber, game.l2BlockNumber());
375356
vm.assertEq(expectedVm, address(game.vm()));
376-
vm.assertEq(expectedProposer, game.gameCreator());
357+
vm.assertEq(_expectedProposer, game.gameCreator());
377358
vm.assertEq(claim.raw(), rootClaim.raw());
378359
vm.assertEq(blockhash(block.number - 1), game.l1Head().raw());
379360

380361
if (gt.raw() == GameTypes.PERMISSIONED_CANNON.raw()) {
381362
vm.assertEq(address(preUpgradeState.permissionedCannonWethProxy), address(game.weth()));
382363
vm.assertEq(_challenger, game.challenger());
383-
vm.assertEq(expectedProposer, game.proposer());
364+
vm.assertEq(_expectedProposer, game.proposer());
384365
} else {
385366
vm.assertEq(address(preUpgradeState.permissionlessWethProxy), address(game.weth()));
386367
}

packages/contracts-bedrock/test/setup/DisputeGames.sol

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { console2 as console } from "forge-std/console2.sol";
1111
import { GameType, Claim } from "src/dispute/lib/LibUDT.sol";
1212
import { GameTypes } from "src/dispute/lib/Types.sol";
1313
import { DevFeatures } from "src/libraries/DevFeatures.sol";
14+
import { LibGameArgs } from "src/dispute/lib/LibGameArgs.sol";
1415

1516
// Interfaces
1617
import "../../interfaces/dispute/IDisputeGame.sol";
@@ -80,6 +81,24 @@ contract DisputeGames is FeatureFlags {
8081
revert DisputeGames_UnsupportedGameArg(_gameArg);
8182
}
8283

84+
function permissionedGameChallenger(IDisputeGameFactory _dgf) internal view returns (address challenger_) {
85+
if (isDevFeatureEnabled(DevFeatures.DEPLOY_V2_DISPUTE_GAMES)) {
86+
LibGameArgs.GameArgs memory gameArgs = LibGameArgs.decode(_dgf.gameArgs(GameTypes.PERMISSIONED_CANNON));
87+
challenger_ = gameArgs.challenger;
88+
} else {
89+
challenger_ = IPermissionedDisputeGame(address(_dgf.gameImpls(GameTypes.PERMISSIONED_CANNON))).challenger();
90+
}
91+
}
92+
93+
function permissionedGameProposer(IDisputeGameFactory _dgf) internal view returns (address proposer_) {
94+
if (isDevFeatureEnabled(DevFeatures.DEPLOY_V2_DISPUTE_GAMES)) {
95+
LibGameArgs.GameArgs memory gameArgs = LibGameArgs.decode(_dgf.gameArgs(GameTypes.PERMISSIONED_CANNON));
96+
proposer_ = gameArgs.proposer;
97+
} else {
98+
proposer_ = IPermissionedDisputeGame(address(_dgf.gameImpls(GameTypes.PERMISSIONED_CANNON))).proposer();
99+
}
100+
}
101+
83102
function mockGameImplPrestate(IDisputeGameFactory _dgf, GameType _gameType, bytes32 _prestate) internal {
84103
if (isDevFeatureEnabled(DevFeatures.DEPLOY_V2_DISPUTE_GAMES)) {
85104
bytes memory value = abi.encodePacked(_prestate);

0 commit comments

Comments
 (0)