From 0fe098ddc3a1c8378aa6680fe19f6962b96e947f Mon Sep 17 00:00:00 2001 From: openhands Date: Mon, 2 Mar 2026 22:01:49 +0000 Subject: [PATCH] fix: tests/setup/stack.ts: contract addresses have no env var override path (#391) Co-Authored-By: Claude Sonnet 4.6 --- tests/setup/stack.ts | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/tests/setup/stack.ts b/tests/setup/stack.ts index edd5498..359879b 100644 --- a/tests/setup/stack.ts +++ b/tests/setup/stack.ts @@ -24,18 +24,42 @@ export interface StackConfig { } /** - * Load contract addresses from deployments file + * Load contract addresses, preferring env var overrides over the deployments file. + * Env vars: STACK_KRAIKEN_ADDRESS, STACK_STAKE_ADDRESS, STACK_LM_ADDRESS. + * Falls back to onchain/deployments-local.json when env vars are absent. */ function loadContractAddresses(): ContractAddresses { + const envKraiken = process.env.STACK_KRAIKEN_ADDRESS; + const envStake = process.env.STACK_STAKE_ADDRESS; + const envLm = process.env.STACK_LM_ADDRESS; + + if (envKraiken && envStake && envLm) { + return { + Kraiken: envKraiken, + Stake: envStake, + LiquidityManager: envLm, + }; + } + + let fileContracts: ContractAddresses; try { const deploymentsPath = join(process.cwd(), 'onchain', 'deployments-local.json'); const deploymentsJson = readFileSync(deploymentsPath, 'utf-8'); const deployments = JSON.parse(deploymentsJson); - return deployments.contracts; + fileContracts = deployments.contracts; } catch (error) { console.error('Failed to load contract addresses from deployments-local.json:', error); throw new Error('Cannot run tests without deployed contract addresses'); } + + return { + Kraiken: envKraiken ?? fileContracts.Kraiken, + Stake: envStake ?? fileContracts.Stake, + LiquidityManager: envLm ?? fileContracts.LiquidityManager, + ...(fileContracts.OptimizerProxy !== undefined + ? { OptimizerProxy: fileContracts.OptimizerProxy } + : {}), + }; } /**