Skip to content

Commit 54114eb

Browse files
optimisse test
1 parent e9a713b commit 54114eb

2 files changed

Lines changed: 17 additions & 60 deletions

File tree

mcms/changesets/set-config/changeset_test.go

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -176,35 +176,6 @@ func TestChangeset_VerifyPreconditions(t *testing.T) {
176176
}
177177
}
178178

179-
//nolint:paralleltest // global mcm.SetProgramID state and shared Solana CTF container setup
180-
func TestChangeset_VerifyPreconditions_Solana(t *testing.T) {
181-
selector := chain_selectors.TEST_22222222222222222222222222222222222222222222.Selector
182-
rt := newSolanaRuntimeWithDeploy(t, selector)
183-
env := rt.Environment()
184-
185-
validCfg := cldftesthelpers.SingleGroupMCMS(t)
186-
validTargets := mcmsTargets(selector, validCfg, validCfg, validCfg)
187-
188-
cs := setconfig.Changeset{}
189-
for _, tt := range []struct {
190-
name string
191-
input setconfig.Input
192-
}{
193-
{
194-
name: "valid direct-send input",
195-
input: setConfigInput(validTargets, nil),
196-
},
197-
{
198-
name: "valid MCMS input",
199-
input: setConfigInput(validTargets, newMCMSInput(mcmstypes.TimelockActionSchedule, "valid solana proposal", "")),
200-
},
201-
} {
202-
t.Run(tt.name, func(t *testing.T) {
203-
require.NoError(t, cs.VerifyPreconditions(env, tt.input))
204-
})
205-
}
206-
}
207-
208179
func TestChangeset_EVM(t *testing.T) {
209180
t.Parallel()
210181

@@ -484,6 +455,17 @@ func TestChangeset_Solana(t *testing.T) {
484455
require.NoError(t, err)
485456
soltestutils.FundSignerPDAs(t, chain, mcmsState)
486457

458+
// Verify preconditions pass on a Solana environment before mutating state.
459+
validCfg := cldftesthelpers.SingleGroupMCMS(t)
460+
validTargets := mcmsTargets(selector, validCfg, validCfg, validCfg)
461+
cs := setconfig.Changeset{}
462+
t.Run("verify preconditions - valid direct-send input", func(t *testing.T) { //nolint:paralleltest // shared runtime state
463+
require.NoError(t, cs.VerifyPreconditions(rt.Environment(), setConfigInput(validTargets, nil)))
464+
})
465+
t.Run("verify preconditions - valid MCMS input", func(t *testing.T) { //nolint:paralleltest // shared runtime state
466+
require.NoError(t, cs.VerifyPreconditions(rt.Environment(), setConfigInput(validTargets, newMCMSInput(mcmstypes.TimelockActionSchedule, "valid solana proposal", ""))))
467+
})
468+
487469
inspector := solana.NewInspector(chain.Client)
488470
signer1Key, signer1Addr := createSolSigner(t)
489471
_, signer2Addr := createSolSigner(t)

mcms/solana/deploy/changeset_test.go

Lines changed: 6 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -230,52 +230,27 @@ func assertSolanaDeployOnChain(
230230
}
231231

232232
//nolint:paralleltest // global SetProgramID binding state is shared in-process
233-
func TestDeployMCMSWithTimelock_Solana_FreshDeploy(t *testing.T) {
233+
func TestDeployMCMSWithTimelock_Solana(t *testing.T) {
234234
selector := chainselectors.TEST_22222222222222222222222222222222222222222222.Selector
235235
cfg := cldftesthelpers.SingleGroupTimelockConfig(t)
236236

237237
rt := newSolanaDeployRuntime(t, selector, datastoreWithMCMSPrograms(t, selector))
238238
execSolanaDeployChangeset(t, rt, selector, cfg)
239239

240-
assertSolanaDeployDatastoreRefs(t, rt, selector)
240+
afterFirst := assertSolanaDeployDatastoreRefs(t, rt, selector)
241241
assertSolanaDeployOnChain(t, rt, selector, cfg)
242-
}
243-
244-
//nolint:paralleltest // global SetProgramID binding state is shared in-process
245-
func TestDeployMCMSWithTimelock_Solana_PartialDeploy(t *testing.T) {
246-
selector := chainselectors.TEST_22222222222222222222222222222222222222222222.Selector
247-
cfg := cldftesthelpers.SingleGroupTimelockConfig(t)
248-
249-
rt := newSolanaDeployRuntime(t, selector, datastoreWithMCMSPrograms(t, selector))
250-
execSolanaDeployChangeset(t, rt, selector, cfg)
251-
252-
byType := assertSolanaDeployDatastoreRefs(t, rt, selector)
253242

254243
// Pre-existing programs must retain their canonical IDs (not be re-deployed).
255244
require.Equal(t, solutils.GetProgramID(solutils.ProgAccessController),
256-
byType[datastore.ContractType(mcmscontracts.AccessControllerProgram)].Address)
245+
afterFirst[datastore.ContractType(mcmscontracts.AccessControllerProgram)].Address)
257246
require.Equal(t, solutils.GetProgramID(solutils.ProgMCM),
258-
byType[datastore.ContractType(mcmscontracts.ManyChainMultisigProgram)].Address)
247+
afterFirst[datastore.ContractType(mcmscontracts.ManyChainMultisigProgram)].Address)
259248
require.Equal(t, solutils.GetProgramID(solutils.ProgTimelock),
260-
byType[datastore.ContractType(mcmscontracts.RBACTimelockProgram)].Address)
261-
262-
assertSolanaDeployOnChain(t, rt, selector, cfg)
263-
}
264-
265-
//nolint:paralleltest // global SetProgramID binding state is shared in-process
266-
func TestDeployMCMSWithTimelock_Solana_IdempotentReRun(t *testing.T) {
267-
selector := chainselectors.TEST_22222222222222222222222222222222222222222222.Selector
268-
cfg := cldftesthelpers.SingleGroupTimelockConfig(t)
269-
270-
rt := newSolanaDeployRuntime(t, selector, datastoreWithMCMSPrograms(t, selector))
271-
272-
execSolanaDeployChangeset(t, rt, selector, cfg)
273-
afterFirst := assertSolanaDeployDatastoreRefs(t, rt, selector)
274-
assertSolanaDeployOnChain(t, rt, selector, cfg)
249+
afterFirst[datastore.ContractType(mcmscontracts.RBACTimelockProgram)].Address)
275250

251+
// Re-running the changeset must be idempotent: no addresses should change.
276252
execSolanaDeployChangeset(t, rt, selector, cfg)
277253
afterSecond := assertSolanaDeployDatastoreRefs(t, rt, selector)
278-
279254
for ct, ref := range afterFirst {
280255
require.Equal(t, ref.Address, afterSecond[ct].Address, "address changed for %s on re-run", ct)
281256
}

0 commit comments

Comments
 (0)