Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Solana integration tests #210

Draft
wants to merge 111 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
e2da93e
feat: update hub deploy script to incliude agg proposer, decoder, and…
marcomariscal Oct 8, 2024
4333264
fix: build warnings/errors
marcomariscal Oct 8, 2024
d277791
fix: handle stack too deep
marcomariscal Oct 8, 2024
399b376
feat: update spoke deploy script to use create2
marcomariscal Oct 8, 2024
e2655e6
fix: salts
marcomariscal Oct 8, 2024
0785352
chore: runs
marcomariscal Oct 9, 2024
49a2fa4
fix: init after
marcomariscal Oct 9, 2024
be934f3
fix: contract addr refs
marcomariscal Oct 9, 2024
f979f99
fix: contract addr ref
marcomariscal Oct 9, 2024
cfa3e93
chore: latest run
marcomariscal Oct 9, 2024
e4d9e1d
feat: holesky as hub deploy script
marcomariscal Oct 11, 2024
1e4330a
feat: add etherscan
marcomariscal Oct 11, 2024
53c43e6
WIP
alexkeating Oct 15, 2024
1eb6650
WIP: changes
alexkeating Oct 15, 2024
e01b274
Remove old deployments
alexkeating Oct 15, 2024
0b5aefb
Add formatting
alexkeating Oct 15, 2024
623e735
Actual deployments
alexkeating Oct 17, 2024
e7131d4
Remove dry runs
alexkeating Oct 17, 2024
58fcc51
Merge branch 'main' into feat/deploy-testing-3
marcomariscal Oct 17, 2024
87629f2
fix: compile
marcomariscal Oct 17, 2024
5842165
feat: deploy scripts for devnet
marcomariscal Oct 18, 2024
ddd7fd4
feat: script to output abis
marcomariscal Oct 21, 2024
a35e669
feat: runs
marcomariscal Oct 28, 2024
1ebced2
feat: handle mock token deploy for devnet
marcomariscal Oct 28, 2024
e347fc6
feat: integration test structure wip
marcomariscal Oct 28, 2024
151b5aa
feat: handle auto addresses from deploys
marcomariscal Oct 28, 2024
40788bb
feat: flesh out proposal helpers
marcomariscal Oct 29, 2024
a838438
fix: trying to make proposals unique
marcomariscal Oct 29, 2024
f91e234
fix: queue proposal
marcomariscal Oct 29, 2024
983b4c6
fix: wait for tx
marcomariscal Oct 29, 2024
622a3ae
chore: check
marcomariscal Oct 29, 2024
ff3254c
fix: wait for tx
marcomariscal Oct 29, 2024
59a8706
feat: get proposal data
marcomariscal Oct 29, 2024
69a0d9f
chore: cleaning/organizing
marcomariscal Oct 29, 2024
b4a698c
fix: move handleNoAccount to a more appropriate place
marcomariscal Oct 29, 2024
ed916d1
fix: naming clarity
marcomariscal Oct 29, 2024
70e501a
chore: check
marcomariscal Oct 29, 2024
8c91a20
feat: biome at root to fix format on save issues
marcomariscal Oct 30, 2024
57bcdec
chore: comment
marcomariscal Oct 30, 2024
dd1dc3f
feat: handle bridging votes to hub
marcomariscal Oct 30, 2024
3d84f98
fix: await tx's
marcomariscal Oct 30, 2024
868a512
fix: helpers for registering on hub vote pool
marcomariscal Oct 30, 2024
b797cf2
chore: runs
marcomariscal Oct 30, 2024
0a6e8cb
fix: to wormhole format
marcomariscal Oct 30, 2024
e45829d
Merge branch 'main' into feat/integration-test-w-main
marcomariscal Oct 30, 2024
e5f77d8
fix: params
marcomariscal Oct 30, 2024
6f31c1b
fix: handle conflicting env vars
marcomariscal Oct 30, 2024
a5899eb
chore: remove logs
marcomariscal Oct 30, 2024
d8fe042
fix: transfer ownership of hub vote pool to timelock
marcomariscal Nov 4, 2024
d4f7c23
feat: executeCrossChain
marcomariscal Nov 5, 2024
d87b8b7
feat: deploy from within integrations test folder
marcomariscal Nov 7, 2024
49f8eb8
chore: remove unused
marcomariscal Nov 7, 2024
3310a45
fix: remove etherscan
marcomariscal Oct 31, 2024
c00fe42
fix: evm gitignore to relevant folder
marcomariscal Oct 31, 2024
e5b9130
fix: setup
marcomariscal Nov 7, 2024
f73fc23
fix: better logging, wormhole format the hub message dispatcher in co…
marcomariscal Nov 8, 2024
332e575
fix: scripts
marcomariscal Nov 8, 2024
a063108
chore: check
marcomariscal Nov 8, 2024
382181c
fix: setup
marcomariscal Nov 8, 2024
75d3914
fix: setup
marcomariscal Nov 8, 2024
8fa9d5d
fix: setup
marcomariscal Nov 8, 2024
2267ee5
feat: deployment cache and setup check locally
marcomariscal Nov 8, 2024
c79c3e1
fix: improve setup handling
marcomariscal Nov 8, 2024
40d6eb0
fix: testing structure to one file since tests are dependent on each …
marcomariscal Nov 8, 2024
8661e03
fix: contract addr
marcomariscal Nov 8, 2024
cec1018
fix: setup
marcomariscal Nov 8, 2024
f564969
chore: logs and inc timeout
marcomariscal Nov 8, 2024
4c1dfa4
chore: check
marcomariscal Nov 8, 2024
e79bd4a
chore: remove broadcast
marcomariscal Nov 8, 2024
4e54de9
revert: dont need fs permish now
marcomariscal Nov 8, 2024
22fdd89
fix: revert to original deploy wallet logic
marcomariscal Nov 8, 2024
ae8a916
chore: remove unused
marcomariscal Nov 8, 2024
b433650
chore: remove unused
marcomariscal Nov 8, 2024
a7aabd0
fix: use /// for comments
marcomariscal Nov 8, 2024
e73756c
chore: comment for token creation
marcomariscal Nov 8, 2024
3cc031b
fix: revert deploy wallet logic
marcomariscal Nov 8, 2024
cfbc2bc
chore: dupe line
marcomariscal Nov 8, 2024
2bc916e
fix: remove unused default deploy version
marcomariscal Nov 8, 2024
dbe1725
fix: remove unused deploy version
marcomariscal Nov 8, 2024
8122b3c
fix: revert
marcomariscal Nov 8, 2024
89ca469
fix: revert
marcomariscal Nov 8, 2024
4a75ae4
fix: foundry toml for import lint errors
marcomariscal Nov 8, 2024
c4c2e0d
fix: build
marcomariscal Nov 8, 2024
300e8df
chore: remove unused
marcomariscal Nov 8, 2024
a1ffad9
feat: readme
marcomariscal Nov 8, 2024
ef7073e
fix: readme
marcomariscal Nov 8, 2024
04faa35
feat: gen abis lang
marcomariscal Nov 8, 2024
bb82f3a
chore: remove unused file
marcomariscal Nov 8, 2024
5bcfed6
fix: name
marcomariscal Nov 8, 2024
3358713
fix: abs paths and no forge clean
marcomariscal Nov 8, 2024
0710cca
fix: remove cache oldness check
marcomariscal Nov 11, 2024
4e3d2d9
fix: deployment cache handling
marcomariscal Nov 11, 2024
1ad2023
fix: init ci workflow for integration tests
marcomariscal Nov 11, 2024
d059401
fix: node
marcomariscal Nov 11, 2024
48b7e65
chore: check
marcomariscal Nov 11, 2024
a3aecdd
fix: remove redundant wrapping call to create proposal via agg proposer
marcomariscal Nov 11, 2024
9ca6ff8
fix: remove unused
marcomariscal Nov 11, 2024
02203d3
fix: check for proposal state pending
marcomariscal Nov 11, 2024
45cc584
fix: name
marcomariscal Nov 11, 2024
f8b01d3
chore: check
marcomariscal Nov 11, 2024
1dca00c
fix: name
marcomariscal Nov 11, 2024
a512f3c
fix: use token mint for proposal execution data
marcomariscal Nov 11, 2024
205dd32
chore: check
marcomariscal Nov 11, 2024
0a05d64
Merge branch 'main' into feat/integration-test-at-prev-commit
marcomariscal Nov 11, 2024
bbd86a5
chore: format
marcomariscal Nov 11, 2024
127d7e2
fix: name
marcomariscal Nov 12, 2024
dd816c3
fix: restore broadcast files
marcomariscal Nov 12, 2024
64fc164
fix: handle broadcast files
marcomariscal Nov 12, 2024
36253aa
fix: comment wrapping
marcomariscal Nov 12, 2024
f431ce1
Solana tests draft run
Nov 15, 2024
3f517e8
Add constants
Nov 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 108 additions & 0 deletions .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
name: Integration Tests

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
integration-tests:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

# Install system dependencies
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y curl make gcc g++

# Install Go
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: "1.21.9"

# Install Foundry
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly

# Install Bun
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest

# Install Tilt
- name: Install Tilt
run: |
curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/install.sh | bash

# Clone Wormhole repo
- name: Clone Wormhole
run: |
git clone https://github.com/wormhole-foundation/wormhole.git
cd wormhole
git submodule update --init

# Cache dependencies
- name: Cache dependencies
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
node_modules
~/.foundry
~/.bun/install/cache
key: ${{ runner.os }}-deps-${{ hashFiles('**/go.sum', '**/package.json', '**/foundry.toml') }}

# Start Tilt environment
- name: Start Tilt environment
run: |
cd wormhole/testing
tilt up --stream --file Tiltfile -- --evm2=true --query_server=true &
# Wait for environment to be ready
timeout 300 bash -c 'until curl -s http://localhost:8545 > /dev/null; do sleep 5; done'

# Install project dependencies
- name: Install dependencies
run: |
cd integration-tests
bun install

# Generate artifacts
- name: Generate artifacts
run: |
cd integration-tests
bun run generate:artifacts

# Run integration tests (always with fresh deployment in CI)
- name: Run integration tests
run: |
cd integration-tests
CI=true bun test # CI flag will force fresh deployment
env:
WORMHOLE_API_KEY: "my_secret_key_3"
ETHDEVNET_MNEMONIC: "myth like bonus scare over problem client lizard pioneer submit female collect"

# Upload test results (but not deployment cache)
- name: Upload test results
if: always()
uses: actions/upload-artifact@v3
with:
name: test-results
path: integration-tests/test-results/**

# Cleanup
- name: Cleanup
if: always()
run: |
cd wormhole/testing
tilt down
14 changes: 14 additions & 0 deletions biome.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"$schema": "https://biomejs.dev/schemas/1.4.1/schema.json",
"extends": ["./integration-tests/biome.json"],
"files": {
"ignore": [
"node_modules/**",
"dist/**",
"build/**",
"bun.lockb",
"**/evm/**",
"**/solana/**"
]
}
}
9 changes: 7 additions & 2 deletions .gitignore → evm/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,11 @@ out/
evm/cache/
evm/out/



# Ignores development broadcast logs
!/broadcast
/broadcast/*/31337/
/broadcast/**/dry-run/
/broadcast/*devnet*/**

# Dotenv file
.env
Expand All @@ -20,3 +19,9 @@ lcov.info
# IDEs
.vscode
.idea

# Artifacts
artifacts/

# Abis
abis/

This file was deleted.

This file was deleted.

4 changes: 3 additions & 1 deletion evm/foundry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts",
"wormhole/=lib/wormhole/ethereum/contracts",
"wormhole-sdk/=lib/wormhole-solidity-sdk/src",

"src/=src/",
"test/=test/",
"script/=script/",
]
solc_version = "0.8.23"
verbosity = 3
Expand Down
34 changes: 34 additions & 0 deletions evm/generate_abis.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/bash

# List of main contracts
main_contracts=(
"HubEvmSpokeAggregateProposer"
"HubEvmSpokeVoteDecoder"
"HubGovernor"
"HubMessageDispatcher"
"HubProposalExtender"
"HubProposalMetadata"
"HubSolanaMessageDispatcher"
"HubSolanaSpokeVoteDecoder"
"HubVotePool"
"SpokeAirlock"
"SpokeMessageExecutor"
"SpokeMetadataCollector"
"SpokeVoteAggregator"
"WormholeDispatcher"
"ERC20VotesFake"
"TimelockController"
"ERC1967Proxy"
)

# Create a directory for the ABIs if it doesn't exist
mkdir -p abis

# Loop through each main contract and generate its ABI
for contract in "${main_contracts[@]}"
do
forge inspect $contract abi > abis/${contract}_abi.json
echo "Generated ABI for $contract"
done

echo "ABIs for main contracts generated in the 'abis' directory."
50 changes: 50 additions & 0 deletions evm/script/DeployHubContractsEthDevnet1.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
// SPDX-License-Identifier: Apache 2
pragma solidity ^0.8.23;

import {Vm} from "forge-std/Vm.sol";
import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
import {DeployHubContractsBaseImpl} from "script/DeployHubContractsBaseImpl.s.sol";
import {ERC20VotesFake} from "test/fakes/ERC20VotesFake.sol";

/// @notice Deploy the hub contracts for EthDevnet1 when using the Wormhole Tilt testing environment (Devnet).
/// @dev Set the environment variable DEPLOYER_PRIVATE_KEY to the private key of the account that will be used to deploy
/// the contracts.
/// @dev Deploy with:
/// forge script script/DeployHubContractsEthDevnet1.sol:DeployHubContractsEthDevnet1 --rpc-url
/// http://localhost:8545 --broadcast --via-ir
contract DeployHubContractsEthDevnet1 is DeployHubContractsBaseImpl {
function _getDeploymentConfiguration() internal override returns (DeploymentConfiguration memory) {
Vm.Wallet memory wallet = _deploymentWallet();

vm.startBroadcast(wallet.privateKey);

bytes32 salt = keccak256(abi.encodePacked("WormholeGovernanceHubContracts"));
bytes memory bytecode =
abi.encodePacked(type(ERC20VotesFake).creationCode, abi.encode("MultiGov Governance Token", "MGT", 18));
address tokenAddress = Create2.deploy(0, salt, bytecode);
// Deploy ERC20VotesFake using CREATE2
ERC20VotesFake token = ERC20VotesFake(tokenAddress);

uint256 initialSupply = 1_000_000_000e18; // 1 billion tokens
token.mint(wallet.addr, initialSupply);
vm.stopBroadcast();

return DeploymentConfiguration({
minDelay: 300,
name: "Wormhole EthDevnet1 Governor",
token: address(token),
initialVotingDelay: 1.5 minutes,
initialVotingPeriod: 30 minutes,
initialProposalThreshold: 500_000e18,
initialQuorum: 1_000_000e18,
wormholeCore: 0xC89Ce4735882C9F0f0FE26686c53074E09B0D550, // EthDevnet1 Wormhole Core
voteWeightWindow: 10 minutes,
voteExtenderAdmin: wallet.addr,
voteTimeExtension: 5 minutes,
minimumExtensionTime: 1 minutes,
consistencyLevel: 0,
initialMaxQueryTimestampOffset: 10 minutes,
solanaTokenDecimals: 8
});
}
}
2 changes: 1 addition & 1 deletion evm/script/DeploySpokeContractsBaseImpl.sol
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ abstract contract DeploySpokeContractsBaseImpl is Script {

error InvalidAddressConfiguration();

function _getDeploymentConfiguration() internal pure virtual returns (DeploymentConfiguration memory);
function _getDeploymentConfiguration() internal virtual returns (DeploymentConfiguration memory);

function _deploymentWallet() internal virtual returns (Vm.Wallet memory) {
uint256 deployerPrivateKey = vm.envOr("DEPLOYER_PRIVATE_KEY", DEFAULT_DEPLOYER_PRIVATE_KEY);
Expand Down
72 changes: 72 additions & 0 deletions evm/script/DeploySpokeContractsEthDevnet2.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
// SPDX-License-Identifier: Apache 2
pragma solidity ^0.8.23;

import {Vm} from "forge-std/Vm.sol";
import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
import {toWormholeFormat} from "wormhole-sdk/Utils.sol";
import {DeploySpokeContractsBaseImpl} from "./DeploySpokeContractsBaseImpl.sol";
import {ERC20VotesFake} from "test/fakes/ERC20VotesFake.sol";

/// @notice Deploy the spoke contracts for EthDevnet2 when using the Wormhole Tilt testing environment (Devnet).
/// @dev Set the environment variable DEPLOYER_PRIVATE_KEY to the private key of the account that will be used to deploy
/// the contracts.
/// @dev Deploy with:
/// forge script script/DeploySpokeContractsEthDevnet2.sol:DeploySpokeContractsEthDevnet2 --rpc-url
/// http://localhost:8546 --broadcast --via-ir
contract DeploySpokeContractsEthDevnet2 is DeploySpokeContractsBaseImpl {
error ContractNotFound(string contractName);

function _findContractAddress(string memory json, string memory contractName) internal pure returns (address) {
// First get the transactions array from the broadcast object
bytes[] memory txs = abi.decode(vm.parseJson(json, "$.transactions"), (bytes[]));
uint256 length = txs.length;

for (uint256 i = 0; i < length; i++) {
string memory namePath = string.concat("$.transactions[", vm.toString(i), "].contractName");
string memory currentName = vm.parseJsonString(json, namePath);

if (keccak256(bytes(currentName)) == keccak256(bytes(contractName))) {
string memory addrPath = string.concat("$.transactions[", vm.toString(i), "].contractAddress");
bytes memory addrBytes = vm.parseJson(json, addrPath);
return abi.decode(addrBytes, (address));
}
}

revert ContractNotFound(contractName);
}

function _getDeploymentConfiguration() internal override returns (DeploymentConfiguration memory) {
Vm.Wallet memory wallet = _deploymentWallet();

vm.startBroadcast(wallet.privateKey);

bytes32 salt = keccak256(abi.encodePacked("WormholeGovernanceHubContracts"));
bytes memory bytecode =
abi.encodePacked(type(ERC20VotesFake).creationCode, abi.encode("MultiGov Governance Token", "MGT", 18));
address tokenAddress = Create2.deploy(0, salt, bytecode);
// Deploy ERC20VotesFake using CREATE2
ERC20VotesFake token = ERC20VotesFake(tokenAddress);

uint256 initialSupply = 1_000_000_000e18; // 1 billion tokens
token.mint(wallet.addr, initialSupply);
vm.stopBroadcast();

// Read the latest hub deployment to get the addresses
string memory root = vm.projectRoot();
string memory path = string.concat(root, "/broadcast/DeployHubContractsEthDevnet1.sol/1337/run-latest.json");
string memory json = vm.readFile(path);

address hubProposalMetadata = _findContractAddress(json, "HubProposalMetadata");
address hubDispatcher = _findContractAddress(json, "HubMessageDispatcher");

return DeploymentConfiguration({
wormholeCore: 0xC89Ce4735882C9F0f0FE26686c53074E09B0D550, // EthDevnet2 Wormhole Core
hubChainId: 2, // EthDevnet1 Wormhole chain ID
hubProposalMetadata: hubProposalMetadata,
votingToken: address(token),
voteWeightWindow: 10 minutes,
hubDispatcher: toWormholeFormat(hubDispatcher),
spokeChainId: 4 // EthDevnet2 Wormhole chain ID
});
}
}
11 changes: 6 additions & 5 deletions evm/test/HubGovernor.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ contract HubGovernorTest is WormholeEthQueryTest, ProposalTest {
initialVotingPeriod: 3 days,
initialProposalThreshold: 500_000e18,
initialQuorum: 100e18,
hubVotePool: address(timelock),
hubVotePool: address(hubVotePool),
wormholeCore: address(wormhole),
governorProposalExtender: address(extender),
initialVoteWeightWindow: VOTE_WEIGHT_WINDOW
Expand Down Expand Up @@ -148,7 +148,7 @@ contract Constructor is HubGovernorTest {
initialVotingPeriod: _initialVotingPeriod,
initialProposalThreshold: _initialProposalThreshold,
initialQuorum: _initialQuorum,
hubVotePool: _timelock,
hubVotePool: address(hubVotePool),
wormholeCore: address(wormhole),
governorProposalExtender: address(_voteExtender),
initialVoteWeightWindow: 1 days
Expand Down Expand Up @@ -184,6 +184,7 @@ contract Constructor is HubGovernorTest {
HubProposalExtender _voteExtender = new HubProposalExtender(
initialOwner, VOTE_TIME_EXTENSION, address(_extenderOwner), _deployer, MINIMUM_VOTE_EXTENSION
);
HubVotePool hubVotePool = new HubVotePool(address(wormhole), address(0), address(timelock));

HubGovernor.ConstructorParams memory params = HubGovernor.ConstructorParams({
name: _name,
Expand All @@ -193,7 +194,7 @@ contract Constructor is HubGovernorTest {
initialVotingPeriod: _initialVotingPeriod,
initialProposalThreshold: _initialProposalThreshold,
initialQuorum: _initialQuorum,
hubVotePool: _timelock,
hubVotePool: address(hubVotePool),
wormholeCore: address(wormhole),
governorProposalExtender: address(_voteExtender),
initialVoteWeightWindow: 1 days
Expand Down Expand Up @@ -225,7 +226,7 @@ contract Constructor is HubGovernorTest {
initialVotingPeriod: _initialVotingPeriod,
initialProposalThreshold: _initialProposalThreshold,
initialQuorum: _initialQuorum,
hubVotePool: _timelock,
hubVotePool: address(hubVotePool),
wormholeCore: address(wormhole),
governorProposalExtender: _voteExtender,
initialVoteWeightWindow: 1 days
Expand All @@ -252,7 +253,7 @@ contract Constructor is HubGovernorTest {
initialVotingPeriod: 0,
initialProposalThreshold: _initialProposalThreshold,
initialQuorum: _initialQuorum,
hubVotePool: _timelock,
hubVotePool: address(hubVotePool),
wormholeCore: address(wormhole),
governorProposalExtender: _voteExtender,
initialVoteWeightWindow: 1 days
Expand Down
3 changes: 2 additions & 1 deletion evm/test/HubProposalMetadata.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ contract HubProposalMetadataTest is Test, ProposalTest {
extender = new HubProposalExtender(
initialOwner, VOTE_TIME_EXTENSION, address(timelock), initialOwner, MINIMUM_VOTE_EXTENSION
);
HubVotePool hubVotePool = new HubVotePool(address(wormhole), address(0), address(timelock));
HubGovernor.ConstructorParams memory params = HubGovernor.ConstructorParams({
name: "Example Gov",
token: token,
Expand All @@ -47,7 +48,7 @@ contract HubProposalMetadataTest is Test, ProposalTest {
initialVotingPeriod: INITIAL_VOTING_PERIOD,
initialProposalThreshold: PROPOSAL_THRESHOLD,
initialQuorum: INITIAL_QUORUM,
hubVotePool: initialOwner,
hubVotePool: address(hubVotePool),
wormholeCore: address(wormhole),
governorProposalExtender: address(extender),
initialVoteWeightWindow: VOTE_WINDOW
Expand Down
Loading
Loading