diff --git a/.github/workflows/rainix.yaml b/.github/workflows/rainix.yaml index 33a1a45..fe46ecc 100644 --- a/.github/workflows/rainix.yaml +++ b/.github/workflows/rainix.yaml @@ -65,4 +65,9 @@ jobs: CI_FORK_SEPOLIA_BLOCK_NUMBER: ${{ vars.CI_FORK_SEPOLIA_BLOCK_NUMBER }} CI_FORK_SEPOLIA_DEPLOYER_ADDRESS: ${{ vars.CI_FORK_SEPOLIA_DEPLOYER_ADDRESS }} CI_DEPLOY_SEPOLIA_RPC_URL: ${{ secrets.CI_DEPLOY_SEPOLIA_RPC_URL || vars.CI_DEPLOY_SEPOLIA_RPC_URL }} + CI_DEPLOY_ARBITRUM_RPC_URL: ${{ secrets.CI_DEPLOY_ARBITRUM_RPC_URL || vars.CI_DEPLOY_ARBITRUM_RPC_URL || '' }} + CI_DEPLOY_BASE_RPC_URL: ${{ secrets.CI_DEPLOY_BASE_RPC_URL || vars.CI_DEPLOY_BASE_RPC_URL || '' }} + CI_DEPLOY_BASE_SEPOLIA_RPC_URL: ${{ secrets.CI_DEPLOY_BASE_SEPOLIA_RPC_URL || vars.CI_DEPLOY_BASE_SEPOLIA_RPC_URL || '' }} + CI_DEPLOY_FLARE_RPC_URL: ${{ secrets.CI_DEPLOY_FLARE_RPC_URL || vars.CI_DEPLOY_FLARE_RPC_URL || '' }} + CI_DEPLOY_POLYGON_RPC_URL: ${{ secrets.CI_DEPLOY_POLYGON_RPC_URL || vars.CI_DEPLOY_POLYGON_RPC_URL || '' }} run: nix develop -c ${{ matrix.task }} diff --git a/test/src/lib/deploy/LibDecimalFloatDeployProd.t.sol b/test/src/lib/deploy/LibDecimalFloatDeployProd.t.sol new file mode 100644 index 0000000..3a002d5 --- /dev/null +++ b/test/src/lib/deploy/LibDecimalFloatDeployProd.t.sol @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity =0.8.25; + +import {Test} from "forge-std/Test.sol"; +import {LibDecimalFloatDeploy} from "src/lib/deploy/LibDecimalFloatDeploy.sol"; +import {LibRainDeploy} from "rain.deploy/lib/LibRainDeploy.sol"; + +/// @title LibDecimalFloatDeployProdTest +/// @notice Verifies that both the log tables data contract and the DecimalFloat +/// contract are deployed on every supported production network with the expected +/// addresses and code hashes. +contract LibDecimalFloatDeployProdTest is Test { + function checkProdDeployment(string memory network) internal { + vm.createSelectFork(network); + + address logTables = LibDecimalFloatDeploy.ZOLTU_DEPLOYED_LOG_TABLES_ADDRESS; + assertTrue(logTables.code.length > 0, string.concat(network, ": log tables not deployed")); + assertEq( + logTables.codehash, + LibDecimalFloatDeploy.LOG_TABLES_DATA_CONTRACT_HASH, + string.concat(network, ": log tables code hash mismatch") + ); + + address decimalFloat = LibDecimalFloatDeploy.ZOLTU_DEPLOYED_DECIMAL_FLOAT_ADDRESS; + assertTrue(decimalFloat.code.length > 0, string.concat(network, ": DecimalFloat not deployed")); + assertEq( + decimalFloat.codehash, + LibDecimalFloatDeploy.DECIMAL_FLOAT_CONTRACT_HASH, + string.concat(network, ": DecimalFloat code hash mismatch") + ); + } + + function testProdDeploymentArbitrum() external { + checkProdDeployment("arbitrum"); + } + + function testProdDeploymentBase() external { + checkProdDeployment("base"); + } + + function testProdDeploymentBaseSepolia() external { + checkProdDeployment("base_sepolia"); + } + + function testProdDeploymentFlare() external { + checkProdDeployment("flare"); + } + + function testProdDeploymentPolygon() external { + checkProdDeployment("polygon"); + } +}