From f96913582f31c6be9461a0bb30caec36cc78c8dc Mon Sep 17 00:00:00 2001 From: David Meister Date: Mon, 15 Jun 2026 16:42:57 +0000 Subject: [PATCH 1/2] test: one contract per file (satisfy rainix single-contract gate) Split test/lib/LibDescribedByMeta.emitForDescribedAddress.t.sol so each .sol file declares exactly one contract, as required by the rainix rainix-sol-single-contract gate. The TestDescribedByMetaV1 mock is moved to its own file test/lib/TestDescribedByMetaV1.sol; the primary test contract LibDescribedByMetaEmitForDescribedAddressTest stays in the original file and imports the moved mock. Pure file reorganization, no behavior change. Co-Authored-By: Claude Opus 4.8 --- ...cribedByMeta.emitForDescribedAddress.t.sol | 13 +------------ test/lib/TestDescribedByMetaV1.sol | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 12 deletions(-) create mode 100644 test/lib/TestDescribedByMetaV1.sol diff --git a/test/lib/LibDescribedByMeta.emitForDescribedAddress.t.sol b/test/lib/LibDescribedByMeta.emitForDescribedAddress.t.sol index df9b7e54..be719c4b 100644 --- a/test/lib/LibDescribedByMeta.emitForDescribedAddress.t.sol +++ b/test/lib/LibDescribedByMeta.emitForDescribedAddress.t.sol @@ -8,18 +8,7 @@ import {IDescribedByMetaV1} from "src/interface/IDescribedByMetaV1.sol"; import {IMetaBoardV1_2} from "src/interface/unstable/IMetaBoardV1_2.sol"; import {MetaBoard} from "src/concrete/MetaBoard.sol"; import {META_MAGIC_NUMBER_V1} from "src/interface/unstable/IMetaV1_2.sol"; - -contract TestDescribedByMetaV1 is IDescribedByMetaV1 { - bytes32 public immutable EXPECTED; - - constructor(bytes memory meta) { - EXPECTED = keccak256(meta); - } - - function describedByMetaV1() external view override returns (bytes32) { - return EXPECTED; - } -} +import {TestDescribedByMetaV1} from "test/lib/TestDescribedByMetaV1.sol"; contract LibDescribedByMetaEmitForDescribedAddressTest is Test { function externalEmitForDescribedAddress(IMetaBoardV1_2 metaboard, IDescribedByMetaV1 described, bytes memory meta) diff --git a/test/lib/TestDescribedByMetaV1.sol b/test/lib/TestDescribedByMetaV1.sol new file mode 100644 index 00000000..8f2afbbe --- /dev/null +++ b/test/lib/TestDescribedByMetaV1.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity =0.8.25; + +import {IDescribedByMetaV1} from "src/interface/IDescribedByMetaV1.sol"; + +/// @dev Test implementation of `IDescribedByMetaV1` that reports the keccak256 +/// hash of the metadata bytes provided to its constructor. +contract TestDescribedByMetaV1 is IDescribedByMetaV1 { + bytes32 public immutable EXPECTED; + + constructor(bytes memory meta) { + EXPECTED = keccak256(meta); + } + + function describedByMetaV1() external view override returns (bytes32) { + return EXPECTED; + } +} From 34d892a95cf8a76eb1fa35a31f6dd534d9843a7c Mon Sep 17 00:00:00 2001 From: David Meister Date: Tue, 16 Jun 2026 01:00:52 +0000 Subject: [PATCH 2/2] ci: re-trigger after rainix LICENSE symlink fix (#232)