From 97578b81c098263daab056dfe8481d4d2193cecc Mon Sep 17 00:00:00 2001 From: thedavidmeister Date: Tue, 18 Aug 2026 11:29:02 +0000 Subject: [PATCH 1/3] Relative import paths in test/src/lib Bare project-root paths only resolve through foundry's root auto-remap, which points at the consumer's tree when the package is consumed. src/ already imports relatively. Closes https://github.com/rainlanguage/rain.solmem/issues/94 --- test/src/lib/LibArray.selfExtend.t.sol | 4 ++-- test/src/lib/LibArraySlow.copySlow.t.sol | 4 ++-- test/src/lib/LibBytes.t.sol | 4 ++-- test/src/lib/LibBytes32Array.allocation.t.sol | 4 ++-- test/src/lib/LibBytes32Array.arrayFrom.t.sol | 6 +++--- test/src/lib/LibBytes32Array.extend.t.sol | 4 ++-- test/src/lib/LibBytes32Array.pointer.t.sol | 2 +- test/src/lib/LibBytes32Array.reverse.t.sol | 6 +++--- test/src/lib/LibBytes32Array.truncate.t.sol | 8 ++++---- test/src/lib/LibBytes32Matrix.allocation.t.sol | 4 ++-- test/src/lib/LibBytes32Matrix.endPointer.t.sol | 4 ++-- test/src/lib/LibBytes32Matrix.flatten.t.sol | 4 ++-- test/src/lib/LibBytes32Matrix.itemCount.t.sol | 6 +++--- test/src/lib/LibBytes32Matrix.matrixFrom.t.sol | 6 +++--- test/src/lib/LibBytes32Matrix.pointer.t.sol | 4 ++-- test/src/lib/LibMatrix.flattenWrap.t.sol | 2 +- test/src/lib/LibMatrixFlattenWrapHarness.sol | 4 ++-- test/src/lib/LibMemCpy.Bytes.t.sol | 6 +++--- test/src/lib/LibMemCpy.Words.t.sol | 6 +++--- test/src/lib/LibPointer.t.sol | 4 ++-- test/src/lib/LibStackSentinel.t.sol | 8 ++++---- test/src/lib/LibStackSentinel.tupleSizeWrap.t.sol | 2 +- test/src/lib/LibStackSentinelWrapHarness.sol | 6 +++--- test/src/lib/LibUint256Array.allocation.t.sol | 4 ++-- test/src/lib/LibUint256Array.arrayFrom.t.sol | 6 +++--- test/src/lib/LibUint256Array.extend.t.sol | 4 ++-- test/src/lib/LibUint256Array.pointer.t.sol | 2 +- test/src/lib/LibUint256Array.reverse.t.sol | 6 +++--- test/src/lib/LibUint256Array.truncate.t.sol | 8 ++++---- test/src/lib/LibUint256Matrix.allocation.t.sol | 4 ++-- test/src/lib/LibUint256Matrix.endPointer.t.sol | 4 ++-- test/src/lib/LibUint256Matrix.flatten.t.sol | 4 ++-- test/src/lib/LibUint256Matrix.itemCount.t.sol | 6 +++--- test/src/lib/LibUint256Matrix.matrixFrom.t.sol | 6 +++--- test/src/lib/LibUint256Matrix.pointer.t.sol | 4 ++-- 35 files changed, 83 insertions(+), 83 deletions(-) diff --git a/test/src/lib/LibArray.selfExtend.t.sol b/test/src/lib/LibArray.selfExtend.t.sol index 833c528..726f356 100644 --- a/test/src/lib/LibArray.selfExtend.t.sol +++ b/test/src/lib/LibArray.selfExtend.t.sol @@ -3,8 +3,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibUint256Array} from "src/lib/LibUint256Array.sol"; -import {LibBytes32Array} from "src/lib/LibBytes32Array.sol"; +import {LibUint256Array} from "../../../src/lib/LibUint256Array.sol"; +import {LibBytes32Array} from "../../../src/lib/LibBytes32Array.sol"; /// Extending an array by itself. Base and extend are then ONE array, so the in /// place path would rewrite the length word both of them read through, mutating diff --git a/test/src/lib/LibArraySlow.copySlow.t.sol b/test/src/lib/LibArraySlow.copySlow.t.sol index 64bfe71..33a7bcb 100644 --- a/test/src/lib/LibArraySlow.copySlow.t.sol +++ b/test/src/lib/LibArraySlow.copySlow.t.sol @@ -4,8 +4,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibUint256ArraySlow} from "test/lib/LibUint256ArraySlow.sol"; -import {LibBytes32ArraySlow} from "test/lib/LibBytes32ArraySlow.sol"; +import {LibUint256ArraySlow} from "../../lib/LibUint256ArraySlow.sol"; +import {LibBytes32ArraySlow} from "../../lib/LibBytes32ArraySlow.sol"; /// `copySlow` snapshots an input before it is handed to an implementation under /// test, so the differential tests can build their expected values from memory diff --git a/test/src/lib/LibBytes.t.sol b/test/src/lib/LibBytes.t.sol index a649f90..f2f0060 100644 --- a/test/src/lib/LibBytes.t.sol +++ b/test/src/lib/LibBytes.t.sol @@ -3,8 +3,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibBytes, TruncateError} from "src/lib/LibBytes.sol"; -import {LibPointer, Pointer, LibMemCpy} from "src/lib/LibMemCpy.sol"; +import {LibBytes, TruncateError} from "../../../src/lib/LibBytes.sol"; +import {LibPointer, Pointer, LibMemCpy} from "../../../src/lib/LibMemCpy.sol"; contract LibBytesTest is Test { using LibBytes for bytes; diff --git a/test/src/lib/LibBytes32Array.allocation.t.sol b/test/src/lib/LibBytes32Array.allocation.t.sol index c6c2b19..ea913b3 100644 --- a/test/src/lib/LibBytes32Array.allocation.t.sol +++ b/test/src/lib/LibBytes32Array.allocation.t.sol @@ -4,8 +4,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibBytes32Array, Pointer} from "src/lib/LibBytes32Array.sol"; -import {LibPointer} from "src/lib/LibPointer.sol"; +import {LibBytes32Array, Pointer} from "../../../src/lib/LibBytes32Array.sol"; +import {LibPointer} from "../../../src/lib/LibPointer.sol"; /// The existing `unsafeExtend` tests assert the CONTENTS of the extended array /// against a reference implementation. Contents alone cannot see the allocator diff --git a/test/src/lib/LibBytes32Array.arrayFrom.t.sol b/test/src/lib/LibBytes32Array.arrayFrom.t.sol index f8938bc..4c05dca 100644 --- a/test/src/lib/LibBytes32Array.arrayFrom.t.sol +++ b/test/src/lib/LibBytes32Array.arrayFrom.t.sol @@ -4,10 +4,10 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibBytes32Array, Pointer} from "src/lib/LibBytes32Array.sol"; -import {LibPointer} from "src/lib/LibPointer.sol"; +import {LibBytes32Array, Pointer} from "../../../src/lib/LibBytes32Array.sol"; +import {LibPointer} from "../../../src/lib/LibPointer.sol"; -import {LibBytes32ArraySlow} from "test/lib/LibBytes32ArraySlow.sol"; +import {LibBytes32ArraySlow} from "../../lib/LibBytes32ArraySlow.sol"; contract LibBytes32ArrayArrayFromTest is Test { using LibBytes32Array for bytes32; diff --git a/test/src/lib/LibBytes32Array.extend.t.sol b/test/src/lib/LibBytes32Array.extend.t.sol index 01d3008..1ecb0bb 100644 --- a/test/src/lib/LibBytes32Array.extend.t.sol +++ b/test/src/lib/LibBytes32Array.extend.t.sol @@ -4,8 +4,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibBytes32Array, Pointer} from "src/lib/LibBytes32Array.sol"; -import {LibBytes32ArraySlow} from "test/lib/LibBytes32ArraySlow.sol"; +import {LibBytes32Array, Pointer} from "../../../src/lib/LibBytes32Array.sol"; +import {LibBytes32ArraySlow} from "../../lib/LibBytes32ArraySlow.sol"; contract LibBytes32ArrayExtendTest is Test { // This code path hits the inline extension by ensuring that c is the most diff --git a/test/src/lib/LibBytes32Array.pointer.t.sol b/test/src/lib/LibBytes32Array.pointer.t.sol index 91ee001..9170109 100644 --- a/test/src/lib/LibBytes32Array.pointer.t.sol +++ b/test/src/lib/LibBytes32Array.pointer.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibBytes32Array, Pointer} from "src/lib/LibBytes32Array.sol"; +import {LibBytes32Array, Pointer} from "../../../src/lib/LibBytes32Array.sol"; contract LibBytes32ArrayPointerTest is Test { using LibBytes32Array for bytes32[]; diff --git a/test/src/lib/LibBytes32Array.reverse.t.sol b/test/src/lib/LibBytes32Array.reverse.t.sol index c3dd5f2..5230c4f 100644 --- a/test/src/lib/LibBytes32Array.reverse.t.sol +++ b/test/src/lib/LibBytes32Array.reverse.t.sol @@ -3,9 +3,9 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibBytes32Array, Pointer} from "src/lib/LibBytes32Array.sol"; -import {LibPointer} from "src/lib/LibPointer.sol"; -import {LibBytes32ArraySlow} from "test/lib/LibBytes32ArraySlow.sol"; +import {LibBytes32Array, Pointer} from "../../../src/lib/LibBytes32Array.sol"; +import {LibPointer} from "../../../src/lib/LibPointer.sol"; +import {LibBytes32ArraySlow} from "../../lib/LibBytes32ArraySlow.sol"; contract LibBytes32ArrayReverseTest is Test { /// Test that the reverse function works as expected according to the diff --git a/test/src/lib/LibBytes32Array.truncate.t.sol b/test/src/lib/LibBytes32Array.truncate.t.sol index 41fb7d9..f592429 100644 --- a/test/src/lib/LibBytes32Array.truncate.t.sol +++ b/test/src/lib/LibBytes32Array.truncate.t.sol @@ -3,10 +3,10 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibBytes32Array, Pointer} from "src/lib/LibBytes32Array.sol"; -import {LibPointer} from "src/lib/LibPointer.sol"; -import {OutOfBoundsTruncate} from "src/error/ErrUint256Array.sol"; -import {LibBytes32ArraySlow} from "test/lib/LibBytes32ArraySlow.sol"; +import {LibBytes32Array, Pointer} from "../../../src/lib/LibBytes32Array.sol"; +import {LibPointer} from "../../../src/lib/LibPointer.sol"; +import {OutOfBoundsTruncate} from "../../../src/error/ErrUint256Array.sol"; +import {LibBytes32ArraySlow} from "../../lib/LibBytes32ArraySlow.sol"; contract LibBytes32ArrayTruncateTest is Test { function truncateExternal(bytes32[] memory a, uint256 newLength) external pure returns (bytes32[] memory) { diff --git a/test/src/lib/LibBytes32Matrix.allocation.t.sol b/test/src/lib/LibBytes32Matrix.allocation.t.sol index e024a8a..a0a15d8 100644 --- a/test/src/lib/LibBytes32Matrix.allocation.t.sol +++ b/test/src/lib/LibBytes32Matrix.allocation.t.sol @@ -4,8 +4,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibBytes32Array} from "src/lib/LibBytes32Array.sol"; -import {LibBytes32Matrix, LibPointer, Pointer} from "src/lib/LibBytes32Matrix.sol"; +import {LibBytes32Array} from "../../../src/lib/LibBytes32Array.sol"; +import {LibBytes32Matrix, LibPointer, Pointer} from "../../../src/lib/LibBytes32Matrix.sol"; /// The existing `flatten` tests assert the CONTENTS of the flattened array. /// `flatten` also performs an allocation, and an over-allocating `flatten` diff --git a/test/src/lib/LibBytes32Matrix.endPointer.t.sol b/test/src/lib/LibBytes32Matrix.endPointer.t.sol index 736e498..fa83377 100644 --- a/test/src/lib/LibBytes32Matrix.endPointer.t.sol +++ b/test/src/lib/LibBytes32Matrix.endPointer.t.sol @@ -4,8 +4,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibBytes32Array} from "src/lib/LibBytes32Array.sol"; -import {LibBytes32Matrix, LibPointer, Pointer} from "src/lib/LibBytes32Matrix.sol"; +import {LibBytes32Array} from "../../../src/lib/LibBytes32Array.sol"; +import {LibBytes32Matrix, LibPointer, Pointer} from "../../../src/lib/LibBytes32Matrix.sol"; /// `endPointer` on a matrix is one word past the last REFERENCE, which is not /// the end of any allocation. The NatSpec on `endPointer` states where the inner diff --git a/test/src/lib/LibBytes32Matrix.flatten.t.sol b/test/src/lib/LibBytes32Matrix.flatten.t.sol index e1a4e65..5885572 100644 --- a/test/src/lib/LibBytes32Matrix.flatten.t.sol +++ b/test/src/lib/LibBytes32Matrix.flatten.t.sol @@ -3,8 +3,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibBytes32Matrix} from "src/lib/LibBytes32Matrix.sol"; -import {LibBytes32MatrixSlow} from "test/lib/LibBytes32MatrixSlow.sol"; +import {LibBytes32Matrix} from "../../../src/lib/LibBytes32Matrix.sol"; +import {LibBytes32MatrixSlow} from "../../lib/LibBytes32MatrixSlow.sol"; contract LibBytes32MatrixFlattenTest is Test { using LibBytes32Matrix for bytes32[][]; diff --git a/test/src/lib/LibBytes32Matrix.itemCount.t.sol b/test/src/lib/LibBytes32Matrix.itemCount.t.sol index 0ba667b..b4e82df 100644 --- a/test/src/lib/LibBytes32Matrix.itemCount.t.sol +++ b/test/src/lib/LibBytes32Matrix.itemCount.t.sol @@ -3,9 +3,9 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibBytes32Matrix} from "src/lib/LibBytes32Matrix.sol"; -import {LibPointer, Pointer} from "src/lib/LibPointer.sol"; -import {LibBytes32MatrixSlow} from "test/lib/LibBytes32MatrixSlow.sol"; +import {LibBytes32Matrix} from "../../../src/lib/LibBytes32Matrix.sol"; +import {LibPointer, Pointer} from "../../../src/lib/LibPointer.sol"; +import {LibBytes32MatrixSlow} from "../../lib/LibBytes32MatrixSlow.sol"; contract LibBytes32MatrixItemCountTest is Test { using LibBytes32Matrix for bytes32[][]; diff --git a/test/src/lib/LibBytes32Matrix.matrixFrom.t.sol b/test/src/lib/LibBytes32Matrix.matrixFrom.t.sol index b26b1ad..4057011 100644 --- a/test/src/lib/LibBytes32Matrix.matrixFrom.t.sol +++ b/test/src/lib/LibBytes32Matrix.matrixFrom.t.sol @@ -3,10 +3,10 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibBytes32Array} from "src/lib/LibBytes32Array.sol"; -import {LibBytes32Matrix, LibPointer, Pointer} from "src/lib/LibBytes32Matrix.sol"; +import {LibBytes32Array} from "../../../src/lib/LibBytes32Array.sol"; +import {LibBytes32Matrix, LibPointer, Pointer} from "../../../src/lib/LibBytes32Matrix.sol"; -import {LibBytes32MatrixSlow} from "test/lib/LibBytes32MatrixSlow.sol"; +import {LibBytes32MatrixSlow} from "../../lib/LibBytes32MatrixSlow.sol"; contract LibBytes32ArrayMatrixFromTest is Test { using LibBytes32Array for bytes32; diff --git a/test/src/lib/LibBytes32Matrix.pointer.t.sol b/test/src/lib/LibBytes32Matrix.pointer.t.sol index b75e935..0f0b16b 100644 --- a/test/src/lib/LibBytes32Matrix.pointer.t.sol +++ b/test/src/lib/LibBytes32Matrix.pointer.t.sol @@ -3,9 +3,9 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibBytes32Matrix, Pointer} from "src/lib/LibBytes32Matrix.sol"; +import {LibBytes32Matrix, Pointer} from "../../../src/lib/LibBytes32Matrix.sol"; -import {LibBytes32MatrixSlow} from "test/lib/LibBytes32MatrixSlow.sol"; +import {LibBytes32MatrixSlow} from "../../lib/LibBytes32MatrixSlow.sol"; contract LibBytes32MatrixPointerTest is Test { using LibBytes32Matrix for bytes32[][]; diff --git a/test/src/lib/LibMatrix.flattenWrap.t.sol b/test/src/lib/LibMatrix.flattenWrap.t.sol index 1b598eb..e5cecab 100644 --- a/test/src/lib/LibMatrix.flattenWrap.t.sol +++ b/test/src/lib/LibMatrix.flattenWrap.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {Test, stdError} from "forge-std-1.16.1/src/Test.sol"; -import {LibMatrixFlattenWrapHarness} from "test/src/lib/LibMatrixFlattenWrapHarness.sol"; +import {LibMatrixFlattenWrapHarness} from "./LibMatrixFlattenWrapHarness.sol"; /// Reproduces issue #62 for `LibUint256Matrix` and its byte identical /// `LibBytes32Matrix` twin. diff --git a/test/src/lib/LibMatrixFlattenWrapHarness.sol b/test/src/lib/LibMatrixFlattenWrapHarness.sol index 4483419..5466a76 100644 --- a/test/src/lib/LibMatrixFlattenWrapHarness.sol +++ b/test/src/lib/LibMatrixFlattenWrapHarness.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {LibUint256Matrix} from "src/lib/LibUint256Matrix.sol"; -import {LibBytes32Matrix} from "src/lib/LibBytes32Matrix.sol"; +import {LibUint256Matrix} from "../../../src/lib/LibUint256Matrix.sol"; +import {LibBytes32Matrix} from "../../../src/lib/LibBytes32Matrix.sol"; /// Harness for `itemCount` and `flatten` on both matrix libraries. /// diff --git a/test/src/lib/LibMemCpy.Bytes.t.sol b/test/src/lib/LibMemCpy.Bytes.t.sol index ca08a0c..a3bd794 100644 --- a/test/src/lib/LibMemCpy.Bytes.t.sol +++ b/test/src/lib/LibMemCpy.Bytes.t.sol @@ -4,9 +4,9 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibMemCpy} from "src/lib/LibMemCpy.sol"; -import {Pointer, LibBytes} from "src/lib/LibBytes.sol"; -import {LibPointer} from "src/lib/LibPointer.sol"; +import {LibMemCpy} from "../../../src/lib/LibMemCpy.sol"; +import {Pointer, LibBytes} from "../../../src/lib/LibBytes.sol"; +import {LibPointer} from "../../../src/lib/LibPointer.sol"; contract LibMemCpyBytesTest is Test { using LibPointer for Pointer; diff --git a/test/src/lib/LibMemCpy.Words.t.sol b/test/src/lib/LibMemCpy.Words.t.sol index 69a9169..972b2a1 100644 --- a/test/src/lib/LibMemCpy.Words.t.sol +++ b/test/src/lib/LibMemCpy.Words.t.sol @@ -4,9 +4,9 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibMemCpy} from "src/lib/LibMemCpy.sol"; -import {LibUint256Array, Pointer} from "src/lib/LibUint256Array.sol"; -import {LibPointer} from "src/lib/LibPointer.sol"; +import {LibMemCpy} from "../../../src/lib/LibMemCpy.sol"; +import {LibUint256Array, Pointer} from "../../../src/lib/LibUint256Array.sol"; +import {LibPointer} from "../../../src/lib/LibPointer.sol"; contract LibMemCpyWordsTest is Test { using LibPointer for Pointer; diff --git a/test/src/lib/LibPointer.t.sol b/test/src/lib/LibPointer.t.sol index 4d25503..93f90a7 100644 --- a/test/src/lib/LibPointer.t.sol +++ b/test/src/lib/LibPointer.t.sol @@ -4,8 +4,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibPointer, Pointer} from "src/lib/LibPointer.sol"; -import {LibBytes} from "src/lib/LibBytes.sol"; +import {LibPointer, Pointer} from "../../../src/lib/LibPointer.sol"; +import {LibBytes} from "../../../src/lib/LibBytes.sol"; contract LibPointerTest is Test { using LibPointer for Pointer; diff --git a/test/src/lib/LibStackSentinel.t.sol b/test/src/lib/LibStackSentinel.t.sol index 11f9cf3..03bb374 100644 --- a/test/src/lib/LibStackSentinel.t.sol +++ b/test/src/lib/LibStackSentinel.t.sol @@ -4,9 +4,9 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibPointer, Pointer} from "src/lib/LibPointer.sol"; -import {LibUint256Array} from "src/lib/LibUint256Array.sol"; -import {UnalignedStackPointer} from "src/error/ErrStackPointer.sol"; +import {LibPointer, Pointer} from "../../../src/lib/LibPointer.sol"; +import {LibUint256Array} from "../../../src/lib/LibUint256Array.sol"; +import {UnalignedStackPointer} from "../../../src/error/ErrStackPointer.sol"; import { LibStackSentinel, Sentinel, @@ -14,7 +14,7 @@ import { ZeroSentinelTupleSize, InvalidStackBounds, UnallocatedStack -} from "src/lib/LibStackSentinel.sol"; +} from "../../../src/lib/LibStackSentinel.sol"; contract LibStackSentinelTest is Test { using LibUint256Array for uint256[]; diff --git a/test/src/lib/LibStackSentinel.tupleSizeWrap.t.sol b/test/src/lib/LibStackSentinel.tupleSizeWrap.t.sol index 744696f..5be6fe3 100644 --- a/test/src/lib/LibStackSentinel.tupleSizeWrap.t.sol +++ b/test/src/lib/LibStackSentinel.tupleSizeWrap.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibStackSentinelWrapHarness} from "test/src/lib/LibStackSentinelWrapHarness.sol"; +import {LibStackSentinelWrapHarness} from "./LibStackSentinelWrapHarness.sol"; /// Reproduces the `consumeSentinelTuples` half of issue #54. /// diff --git a/test/src/lib/LibStackSentinelWrapHarness.sol b/test/src/lib/LibStackSentinelWrapHarness.sol index b825e09..5a6ba60 100644 --- a/test/src/lib/LibStackSentinelWrapHarness.sol +++ b/test/src/lib/LibStackSentinelWrapHarness.sol @@ -2,9 +2,9 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {LibStackSentinel, Sentinel} from "src/lib/LibStackSentinel.sol"; -import {LibUint256Array} from "src/lib/LibUint256Array.sol"; -import {Pointer} from "src/lib/LibPointer.sol"; +import {LibStackSentinel, Sentinel} from "../../../src/lib/LibStackSentinel.sol"; +import {LibUint256Array} from "../../../src/lib/LibUint256Array.sol"; +import {Pointer} from "../../../src/lib/LibPointer.sol"; /// Harness for `LibStackSentinel.consumeSentinelTuples`. /// diff --git a/test/src/lib/LibUint256Array.allocation.t.sol b/test/src/lib/LibUint256Array.allocation.t.sol index 95a4399..cc745f9 100644 --- a/test/src/lib/LibUint256Array.allocation.t.sol +++ b/test/src/lib/LibUint256Array.allocation.t.sol @@ -4,8 +4,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibUint256Array, Pointer} from "src/lib/LibUint256Array.sol"; -import {LibPointer} from "src/lib/LibPointer.sol"; +import {LibUint256Array, Pointer} from "../../../src/lib/LibUint256Array.sol"; +import {LibPointer} from "../../../src/lib/LibPointer.sol"; /// The existing `unsafeExtend` tests assert the CONTENTS of the extended array /// against a reference implementation. Contents alone cannot see the allocator diff --git a/test/src/lib/LibUint256Array.arrayFrom.t.sol b/test/src/lib/LibUint256Array.arrayFrom.t.sol index c4f6e1c..30eb27c 100644 --- a/test/src/lib/LibUint256Array.arrayFrom.t.sol +++ b/test/src/lib/LibUint256Array.arrayFrom.t.sol @@ -4,10 +4,10 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibUint256Array, Pointer} from "src/lib/LibUint256Array.sol"; -import {LibPointer} from "src/lib/LibPointer.sol"; +import {LibUint256Array, Pointer} from "../../../src/lib/LibUint256Array.sol"; +import {LibPointer} from "../../../src/lib/LibPointer.sol"; -import {LibUint256ArraySlow} from "test/lib/LibUint256ArraySlow.sol"; +import {LibUint256ArraySlow} from "../../lib/LibUint256ArraySlow.sol"; contract LibUint256ArrayArrayFromTest is Test { using LibUint256Array for uint256; diff --git a/test/src/lib/LibUint256Array.extend.t.sol b/test/src/lib/LibUint256Array.extend.t.sol index d5b50cb..c904676 100644 --- a/test/src/lib/LibUint256Array.extend.t.sol +++ b/test/src/lib/LibUint256Array.extend.t.sol @@ -4,8 +4,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibUint256Array, Pointer} from "src/lib/LibUint256Array.sol"; -import {LibUint256ArraySlow} from "test/lib/LibUint256ArraySlow.sol"; +import {LibUint256Array, Pointer} from "../../../src/lib/LibUint256Array.sol"; +import {LibUint256ArraySlow} from "../../lib/LibUint256ArraySlow.sol"; contract LibUint256ArrayExtendTest is Test { // This code path hits the inline extension by ensuring that c is the most diff --git a/test/src/lib/LibUint256Array.pointer.t.sol b/test/src/lib/LibUint256Array.pointer.t.sol index 7998261..fd34516 100644 --- a/test/src/lib/LibUint256Array.pointer.t.sol +++ b/test/src/lib/LibUint256Array.pointer.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibUint256Array, Pointer} from "src/lib/LibUint256Array.sol"; +import {LibUint256Array, Pointer} from "../../../src/lib/LibUint256Array.sol"; contract LibUint256ArrayPointerTest is Test { using LibUint256Array for uint256[]; diff --git a/test/src/lib/LibUint256Array.reverse.t.sol b/test/src/lib/LibUint256Array.reverse.t.sol index f6ad394..19f1ee3 100644 --- a/test/src/lib/LibUint256Array.reverse.t.sol +++ b/test/src/lib/LibUint256Array.reverse.t.sol @@ -3,9 +3,9 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibUint256Array, Pointer} from "src/lib/LibUint256Array.sol"; -import {LibPointer} from "src/lib/LibPointer.sol"; -import {LibUint256ArraySlow} from "test/lib/LibUint256ArraySlow.sol"; +import {LibUint256Array, Pointer} from "../../../src/lib/LibUint256Array.sol"; +import {LibPointer} from "../../../src/lib/LibPointer.sol"; +import {LibUint256ArraySlow} from "../../lib/LibUint256ArraySlow.sol"; contract LibUint256ArrayReverseTest is Test { /// Test that the reverse function works as expected according to the diff --git a/test/src/lib/LibUint256Array.truncate.t.sol b/test/src/lib/LibUint256Array.truncate.t.sol index 1165a8d..25c38b3 100644 --- a/test/src/lib/LibUint256Array.truncate.t.sol +++ b/test/src/lib/LibUint256Array.truncate.t.sol @@ -3,10 +3,10 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibUint256Array, Pointer} from "src/lib/LibUint256Array.sol"; -import {LibPointer} from "src/lib/LibPointer.sol"; -import {OutOfBoundsTruncate} from "src/error/ErrUint256Array.sol"; -import {LibUint256ArraySlow} from "test/lib/LibUint256ArraySlow.sol"; +import {LibUint256Array, Pointer} from "../../../src/lib/LibUint256Array.sol"; +import {LibPointer} from "../../../src/lib/LibPointer.sol"; +import {OutOfBoundsTruncate} from "../../../src/error/ErrUint256Array.sol"; +import {LibUint256ArraySlow} from "../../lib/LibUint256ArraySlow.sol"; contract LibUint256ArrayTruncateTest is Test { function truncateExternal(uint256[] memory a, uint256 newLength) external pure returns (uint256[] memory) { diff --git a/test/src/lib/LibUint256Matrix.allocation.t.sol b/test/src/lib/LibUint256Matrix.allocation.t.sol index 054560a..fa30c9d 100644 --- a/test/src/lib/LibUint256Matrix.allocation.t.sol +++ b/test/src/lib/LibUint256Matrix.allocation.t.sol @@ -4,8 +4,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibUint256Array} from "src/lib/LibUint256Array.sol"; -import {LibUint256Matrix, LibPointer, Pointer} from "src/lib/LibUint256Matrix.sol"; +import {LibUint256Array} from "../../../src/lib/LibUint256Array.sol"; +import {LibUint256Matrix, LibPointer, Pointer} from "../../../src/lib/LibUint256Matrix.sol"; /// The existing `flatten` tests assert the CONTENTS of the flattened array. /// `flatten` also performs an allocation, and an over-allocating `flatten` diff --git a/test/src/lib/LibUint256Matrix.endPointer.t.sol b/test/src/lib/LibUint256Matrix.endPointer.t.sol index 3549dd0..dda3101 100644 --- a/test/src/lib/LibUint256Matrix.endPointer.t.sol +++ b/test/src/lib/LibUint256Matrix.endPointer.t.sol @@ -4,8 +4,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibUint256Array} from "src/lib/LibUint256Array.sol"; -import {LibUint256Matrix, LibPointer, Pointer} from "src/lib/LibUint256Matrix.sol"; +import {LibUint256Array} from "../../../src/lib/LibUint256Array.sol"; +import {LibUint256Matrix, LibPointer, Pointer} from "../../../src/lib/LibUint256Matrix.sol"; /// `endPointer` on a matrix is one word past the last REFERENCE, which is not /// the end of any allocation. The NatSpec on `endPointer` states where the inner diff --git a/test/src/lib/LibUint256Matrix.flatten.t.sol b/test/src/lib/LibUint256Matrix.flatten.t.sol index c49c895..32a1193 100644 --- a/test/src/lib/LibUint256Matrix.flatten.t.sol +++ b/test/src/lib/LibUint256Matrix.flatten.t.sol @@ -3,8 +3,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibUint256Matrix} from "src/lib/LibUint256Matrix.sol"; -import {LibUint256MatrixSlow} from "test/lib/LibUint256MatrixSlow.sol"; +import {LibUint256Matrix} from "../../../src/lib/LibUint256Matrix.sol"; +import {LibUint256MatrixSlow} from "../../lib/LibUint256MatrixSlow.sol"; contract LibUint256MatrixFlattenTest is Test { using LibUint256Matrix for uint256[][]; diff --git a/test/src/lib/LibUint256Matrix.itemCount.t.sol b/test/src/lib/LibUint256Matrix.itemCount.t.sol index 1c90c0b..a6209b1 100644 --- a/test/src/lib/LibUint256Matrix.itemCount.t.sol +++ b/test/src/lib/LibUint256Matrix.itemCount.t.sol @@ -3,9 +3,9 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibUint256Matrix} from "src/lib/LibUint256Matrix.sol"; -import {LibPointer, Pointer} from "src/lib/LibPointer.sol"; -import {LibUint256MatrixSlow} from "test/lib/LibUint256MatrixSlow.sol"; +import {LibUint256Matrix} from "../../../src/lib/LibUint256Matrix.sol"; +import {LibPointer, Pointer} from "../../../src/lib/LibPointer.sol"; +import {LibUint256MatrixSlow} from "../../lib/LibUint256MatrixSlow.sol"; contract LibUint256MatrixItemCountTest is Test { using LibUint256Matrix for uint256[][]; diff --git a/test/src/lib/LibUint256Matrix.matrixFrom.t.sol b/test/src/lib/LibUint256Matrix.matrixFrom.t.sol index 23e970c..38a5dd5 100644 --- a/test/src/lib/LibUint256Matrix.matrixFrom.t.sol +++ b/test/src/lib/LibUint256Matrix.matrixFrom.t.sol @@ -3,10 +3,10 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibUint256Array} from "src/lib/LibUint256Array.sol"; -import {LibUint256Matrix, LibPointer, Pointer} from "src/lib/LibUint256Matrix.sol"; +import {LibUint256Array} from "../../../src/lib/LibUint256Array.sol"; +import {LibUint256Matrix, LibPointer, Pointer} from "../../../src/lib/LibUint256Matrix.sol"; -import {LibUint256MatrixSlow} from "test/lib/LibUint256MatrixSlow.sol"; +import {LibUint256MatrixSlow} from "../../lib/LibUint256MatrixSlow.sol"; contract LibUint256ArrayMatrixFromTest is Test { using LibUint256Array for uint256; diff --git a/test/src/lib/LibUint256Matrix.pointer.t.sol b/test/src/lib/LibUint256Matrix.pointer.t.sol index 4071aba..8e84375 100644 --- a/test/src/lib/LibUint256Matrix.pointer.t.sol +++ b/test/src/lib/LibUint256Matrix.pointer.t.sol @@ -3,9 +3,9 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibUint256Matrix, Pointer} from "src/lib/LibUint256Matrix.sol"; +import {LibUint256Matrix, Pointer} from "../../../src/lib/LibUint256Matrix.sol"; -import {LibUint256MatrixSlow} from "test/lib/LibUint256MatrixSlow.sol"; +import {LibUint256MatrixSlow} from "../../lib/LibUint256MatrixSlow.sol"; contract LibUint256MatrixPointerTest is Test { using LibUint256Matrix for uint256[][]; From 67ff20b257e3a86f37a3322b55db1b1d7af07783 Mon Sep 17 00:00:00 2001 From: thedavidmeister Date: Tue, 18 Aug 2026 11:34:41 +0000 Subject: [PATCH 2/3] Relative imports in LibArray.aliasedTail.t.sol --- test/src/lib/LibArray.aliasedTail.t.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/src/lib/LibArray.aliasedTail.t.sol b/test/src/lib/LibArray.aliasedTail.t.sol index 8b303c1..e1db9b2 100644 --- a/test/src/lib/LibArray.aliasedTail.t.sol +++ b/test/src/lib/LibArray.aliasedTail.t.sol @@ -3,8 +3,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {LibUint256Array} from "src/lib/LibUint256Array.sol"; -import {LibBytes32Array} from "src/lib/LibBytes32Array.sol"; +import {LibUint256Array} from "../../../src/lib/LibUint256Array.sol"; +import {LibBytes32Array} from "../../../src/lib/LibBytes32Array.sol"; /// The tail taking `arrayFrom` overloads allocate their output at the free /// memory pointer and read the tail's length word to size the copy. A tail that From f44f70176797ca020f86c8601efcf572faf00b16 Mon Sep 17 00:00:00 2001 From: baku-ccron Date: Tue, 18 Aug 2026 12:50:43 +0000 Subject: [PATCH 3/3] Relative imports in ErrTruncate.t.sol test/src/error/ErrTruncate.t.sol landed on main with #140 after this branch was cut, carrying four fresh bare src/ imports. Same situation as LibArray.aliasedTail.t.sol in 67ff20b, and converted the same way, so that the invariant this PR claims holds on the merge result: grep -rn 'from "\(src\|test\)/' src/ test/ now returns nothing. Co-Authored-By: Claude Opus 5 (1M context) --- test/src/error/ErrTruncate.t.sol | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/src/error/ErrTruncate.t.sol b/test/src/error/ErrTruncate.t.sol index 753617f..9b99c76 100644 --- a/test/src/error/ErrTruncate.t.sol +++ b/test/src/error/ErrTruncate.t.sol @@ -3,10 +3,10 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {OutOfBoundsTruncate} from "src/error/ErrTruncate.sol"; -import {LibBytes} from "src/lib/LibBytes.sol"; -import {LibBytes32Array} from "src/lib/LibBytes32Array.sol"; -import {LibUint256Array} from "src/lib/LibUint256Array.sol"; +import {OutOfBoundsTruncate} from "../../../src/error/ErrTruncate.sol"; +import {LibBytes} from "../../../src/lib/LibBytes.sol"; +import {LibBytes32Array} from "../../../src/lib/LibBytes32Array.sol"; +import {LibUint256Array} from "../../../src/lib/LibUint256Array.sol"; contract ErrTruncateTest is Test { function truncateBytesExternal(uint256 length, uint256 truncatedLength) external pure {