This is an automated email from the ASF dual-hosted git repository.

zeroshade pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg-go.git


The following commit(s) were added to refs/heads/main by this push:
     new 94f3ec632 refactor(internal): move test mocks to internal/iomock 
(#2080)
94f3ec632 is described below

commit 94f3ec6321c4ccafea808c9dd2708dcbf8526712
Author: Andrei Tserakhau <[email protected]>
AuthorDate: Thu Oct 1 18:50:37 2026 +0200

    refactor(internal): move test mocks to internal/iomock (#2080)
    
    refactor(internal): move test mocks to internal/iomock, unlink testify from 
the library
    
    MockFS, MockFSReadFile and MockFile lived in internal/mock_fs.go, a non-test
    file in package internal that imports github.com/stretchr/testify/mock. 
Because
    the root iceberg package imports internal, every consumer that used 
iceberg-go
    only for its types linked testify (and its objx and yaml deps) into their
    production binary.
    
    Move the mocks to a dedicated internal/iomock package that only _test.go 
files
    import. The root iceberg package's dependency closure loses testify, objx 
and
    go.yaml.in/yaml/v3: for a types-only consumer that is 7 fewer packages and 3
    fewer modules, with no test framework linked into production. testify 
remains a
    test dependency of the module.
    
    No production code referenced these mocks; only test files did, and they now
    import internal/iomock.
---
 internal/{ => iomock}/mock_fs.go     |  2 +-
 manifest_test.go                     | 15 ++++++++-------
 table/internal/parquet_files_test.go | 10 +++++-----
 table/snapshot_producers_test.go     |  6 +++---
 table/table_test.go                  | 22 +++++++++++-----------
 view/view_test.go                    | 12 ++++++------
 6 files changed, 34 insertions(+), 33 deletions(-)

diff --git a/internal/mock_fs.go b/internal/iomock/mock_fs.go
similarity index 99%
rename from internal/mock_fs.go
rename to internal/iomock/mock_fs.go
index 8e55fe085..0abfbbb2e 100644
--- a/internal/mock_fs.go
+++ b/internal/iomock/mock_fs.go
@@ -15,7 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package internal
+package iomock
 
 import (
        "bytes"
diff --git a/manifest_test.go b/manifest_test.go
index a8357378c..5b126ebc4 100644
--- a/manifest_test.go
+++ b/manifest_test.go
@@ -33,6 +33,7 @@ import (
 
        "github.com/apache/arrow-go/v18/arrow/decimal128"
        "github.com/apache/iceberg-go/internal"
+       "github.com/apache/iceberg-go/internal/iomock"
        iceio "github.com/apache/iceberg-go/io"
        "github.com/google/uuid"
        "github.com/stretchr/testify/assert"
@@ -916,14 +917,14 @@ func (m *ManifestTestSuite) SetupSuite() {
 }
 
 func (m *ManifestTestSuite) TestManifestEntriesV1() {
-       var mockfs internal.MockFS
+       var mockfs iomock.MockFS
        manifest := manifestFile{
                version: 1,
                Path:    manifestFileRecordsV1[0].FilePath(),
        }
 
        mockfs.Test(m.T())
-       mockfs.On("Open", manifest.FilePath()).Return(&internal.MockFile{
+       mockfs.On("Open", manifest.FilePath()).Return(&iomock.MockFile{
                Contents: bytes.NewReader(m.v1ManifestEntries.Bytes()),
        }, nil)
        defer mockfs.AssertExpectations(m.T())
@@ -2063,7 +2064,7 @@ func (m *ManifestTestSuite) TestManifestEntriesV2() {
                PartitionField{FieldID: 1000, SourceIDs: []int{1}, Name: 
"VendorID", Transform: IdentityTransform{}},
                PartitionField{FieldID: 1001, SourceIDs: []int{2}, Name: 
"tpep_pickup_datetime", Transform: IdentityTransform{}})
 
-       mockedFile := &internal.MockFile{
+       mockedFile := &iomock.MockFile{
                Contents: bytes.NewReader(m.v2ManifestEntries.Bytes()),
        }
        manifestReader, err := NewManifestReader(&manifest, mockedFile)
@@ -2220,7 +2221,7 @@ func (m *ManifestTestSuite) TestManifestEntriesV3() {
        partitionSpec := NewPartitionSpecID(1,
                PartitionField{FieldID: 1000, SourceIDs: []int{1}, Name: 
"VendorID", Transform: IdentityTransform{}},
                PartitionField{FieldID: 1001, SourceIDs: []int{2}, Name: 
"tpep_pickup_datetime", Transform: IdentityTransform{}})
-       mockedFile := &internal.MockFile{
+       mockedFile := &iomock.MockFile{
                Contents: bytes.NewReader(m.v3ManifestEntries.Bytes()),
        }
        manifestReader, err := NewManifestReader(&manifest, mockedFile)
@@ -4634,7 +4635,7 @@ var (
 )
 
 func (m *ManifestTestSuite) TestEntriesEarlyBreakClosesFile() {
-       var mockfs internal.MockFS
+       var mockfs iomock.MockFS
        manifest := manifestFile{
                version: 2,
                SpecID:  1,
@@ -4660,7 +4661,7 @@ func (m *ManifestTestSuite) 
TestEntriesEarlyBreakClosesFile() {
 }
 
 func (m *ManifestTestSuite) TestEntriesMidStreamErrorYieldsAndStops() {
-       var mockfs internal.MockFS
+       var mockfs iomock.MockFS
        manifest := manifestFile{
                version: 2,
                SpecID:  1,
@@ -4698,7 +4699,7 @@ func (m *ManifestTestSuite) 
TestEntriesMidStreamErrorYieldsAndStops() {
 }
 
 func (m *ManifestTestSuite) TestEntriesCloseErrorAsFinalPair() {
-       var mockfs internal.MockFS
+       var mockfs iomock.MockFS
        manifest := manifestFile{
                version: 2,
                SpecID:  1,
diff --git a/table/internal/parquet_files_test.go 
b/table/internal/parquet_files_test.go
index 663beeeaf..f4dbbe672 100644
--- a/table/internal/parquet_files_test.go
+++ b/table/internal/parquet_files_test.go
@@ -46,7 +46,7 @@ import (
        "github.com/apache/arrow-go/v18/parquet/schema"
        "github.com/apache/arrow-go/v18/parquet/variant"
        "github.com/apache/iceberg-go"
-       internal2 "github.com/apache/iceberg-go/internal"
+       "github.com/apache/iceberg-go/internal/iomock"
        iceio "github.com/apache/iceberg-go/io"
        "github.com/apache/iceberg-go/table"
        "github.com/apache/iceberg-go/table/internal"
@@ -1270,10 +1270,10 @@ func ewkbWithSRID(isoWKB []byte, srid uint32) []byte {
 func TestWriteDataFileErrOnClose(t *testing.T) {
        ctx := context.Background()
        fm := internal.GetFileFormat(iceberg.ParquetFile)
-       mockfs := internal2.MockFS{}
+       mockfs := iomock.MockFS{}
        mockfs.Test(t)
 
-       mockfs.On("Create", "f").Return(&internal2.MockFile{
+       mockfs.On("Create", "f").Return(&iomock.MockFile{
                ErrOnClose: true,
        }, nil)
 
@@ -1380,7 +1380,7 @@ func TestParquetFileWriterAbortRemovesFile(t *testing.T) {
 }
 
 func TestParquetFileWriterAbortIgnoresRemoveNotExist(t *testing.T) {
-       mockfs := internal2.MockFS{}
+       mockfs := iomock.MockFS{}
        mockfs.Test(t)
        mockfs.On("Create", "f").Return(&abortTestFile{}, nil)
        mockfs.On("Remove", "f").Return(&iofs.PathError{
@@ -1398,7 +1398,7 @@ func 
TestParquetFileWriterAbortJoinsCloseAndRemoveErrors(t *testing.T) {
        closeErr := errors.New("close failed")
        removeErr := errors.New("remove failed")
 
-       mockfs := internal2.MockFS{}
+       mockfs := iomock.MockFS{}
        mockfs.Test(t)
        mockfs.On("Create", "f").Return(&abortTestFile{closeErr: closeErr}, nil)
        mockfs.On("Remove", "f").Return(removeErr)
diff --git a/table/snapshot_producers_test.go b/table/snapshot_producers_test.go
index f69bdd1a9..45fe9518a 100644
--- a/table/snapshot_producers_test.go
+++ b/table/snapshot_producers_test.go
@@ -33,7 +33,7 @@ import (
        "time"
 
        "github.com/apache/iceberg-go"
-       "github.com/apache/iceberg-go/internal"
+       "github.com/apache/iceberg-go/internal/iomock"
        iceio "github.com/apache/iceberg-go/io"
        "github.com/stretchr/testify/assert"
        "github.com/stretchr/testify/require"
@@ -105,7 +105,7 @@ func (m *memIO) Open(name string) (iceio.File, error) {
                return nil, fs.ErrNotExist
        }
 
-       return &internal.MockFile{Contents: bytes.NewReader(data)}, nil
+       return &iomock.MockFile{Contents: bytes.NewReader(data)}, nil
 }
 
 func (m *memIO) Create(name string) (iceio.FileWriter, error) {
@@ -715,7 +715,7 @@ func (t *trackingIO) Open(name string) (iceio.File, error) {
                return nil, fs.ErrNotExist
        }
 
-       return &internal.MockFile{Contents: bytes.NewReader(data)}, nil
+       return &iomock.MockFile{Contents: bytes.NewReader(data)}, nil
 }
 
 func (t *trackingIO) Create(name string) (iceio.FileWriter, error) {
diff --git a/table/table_test.go b/table/table_test.go
index 7033e5bdd..a58f70b2a 100644
--- a/table/table_test.go
+++ b/table/table_test.go
@@ -46,7 +46,7 @@ import (
        "github.com/apache/iceberg-go"
        "github.com/apache/iceberg-go/catalog"
        "github.com/apache/iceberg-go/catalog/sql"
-       "github.com/apache/iceberg-go/internal"
+       "github.com/apache/iceberg-go/internal/iomock"
        iceio "github.com/apache/iceberg-go/io"
        "github.com/apache/iceberg-go/table"
        "github.com/google/uuid"
@@ -112,10 +112,10 @@ func (t *TableWritingTestSuite) mustDataFile(spec 
iceberg.PartitionSpec, path st
 }
 
 func (t *TableTestSuite) SetupSuite() {
-       var mockfs internal.MockFS
+       var mockfs iomock.MockFS
        mockfs.Test(t.T())
        mockfs.On("Open", "s3://bucket/test/location/uuid.metadata.json").
-               Return(&internal.MockFile{Contents: 
bytes.NewReader([]byte(table.ExampleTableMetadataV2))}, nil)
+               Return(&iomock.MockFile{Contents: 
bytes.NewReader([]byte(table.ExampleTableMetadataV2))}, nil)
        defer mockfs.AssertExpectations(t.T())
 
        tbl, err := table.NewFromLocation(
@@ -138,7 +138,7 @@ func (t *TableTestSuite) SetupSuite() {
 }
 
 func (t *TableTestSuite) TestNewTableFromReadFile() {
-       var mockfsReadFile internal.MockFSReadFile
+       var mockfsReadFile iomock.MockFSReadFile
        mockfsReadFile.Test(t.T())
        mockfsReadFile.On("ReadFile", 
"s3://bucket/test/location/uuid.metadata.json").
                Return([]byte(table.ExampleTableMetadataV2), nil)
@@ -172,7 +172,7 @@ func (t *TableTestSuite) TestNewTableFromReadFileGzipped() {
                log.Fatalf("Error closing gzip writer: %v", err)
        }
 
-       var mockfsReadFile internal.MockFSReadFile
+       var mockfsReadFile iomock.MockFSReadFile
        mockfsReadFile.Test(t.T())
        mockfsReadFile.On("ReadFile", 
"s3://bucket/test/location/uuid.gz.metadata.json").
                Return(b.Bytes(), nil)
@@ -202,7 +202,7 @@ func (t *TableTestSuite) TestNewTableFromReadFileZstd() {
        t.Require().NoError(err)
        t.Require().NoError(enc.Close())
 
-       var mockfsReadFile internal.MockFSReadFile
+       var mockfsReadFile iomock.MockFSReadFile
        mockfsReadFile.Test(t.T())
        mockfsReadFile.On("ReadFile", 
"s3://bucket/test/location/uuid.zstd.metadata.json").
                Return(b.Bytes(), nil)
@@ -232,7 +232,7 @@ func (t *TableTestSuite) 
TestNewTableFromReadFileZstdAlternateSuffix() {
        t.Require().NoError(err)
        t.Require().NoError(enc.Close())
 
-       var mockfsReadFile internal.MockFSReadFile
+       var mockfsReadFile iomock.MockFSReadFile
        mockfsReadFile.Test(t.T())
        mockfsReadFile.On("ReadFile", 
"s3://bucket/test/location/uuid.metadata.json.zstd").
                Return(b.Bytes(), nil)
@@ -262,10 +262,10 @@ func (t *TableTestSuite) TestNewTableFromOpenZstd() {
        t.Require().NoError(err)
        t.Require().NoError(enc.Close())
 
-       var mockfs internal.MockFS
+       var mockfs iomock.MockFS
        mockfs.Test(t.T())
        mockfs.On("Open", "s3://bucket/test/location/uuid.zstd.metadata.json").
-               Return(&internal.MockFile{Contents: 
bytes.NewReader(b.Bytes())}, nil)
+               Return(&iomock.MockFile{Contents: bytes.NewReader(b.Bytes())}, 
nil)
        defer mockfs.AssertExpectations(t.T())
 
        tbl2, err := table.NewFromLocation(
@@ -292,10 +292,10 @@ func (t *TableTestSuite) 
TestNewTableFromOpenZstdAlternateSuffix() {
        t.Require().NoError(err)
        t.Require().NoError(enc.Close())
 
-       var mockfs internal.MockFS
+       var mockfs iomock.MockFS
        mockfs.Test(t.T())
        mockfs.On("Open", "s3://bucket/test/location/uuid.metadata.json.zstd").
-               Return(&internal.MockFile{Contents: 
bytes.NewReader(b.Bytes())}, nil)
+               Return(&iomock.MockFile{Contents: bytes.NewReader(b.Bytes())}, 
nil)
        defer mockfs.AssertExpectations(t.T())
 
        tbl2, err := table.NewFromLocation(
diff --git a/view/view_test.go b/view/view_test.go
index 977568757..0345f199a 100644
--- a/view/view_test.go
+++ b/view/view_test.go
@@ -23,7 +23,7 @@ import (
        "net/url"
        "testing"
 
-       "github.com/apache/iceberg-go/internal"
+       "github.com/apache/iceberg-go/internal/iomock"
        iceio "github.com/apache/iceberg-go/io"
        "github.com/stretchr/testify/mock"
        "github.com/stretchr/testify/require"
@@ -41,10 +41,10 @@ func TestView(t *testing.T) {
 }
 
 func (t *ViewTestSuite) SetupSuite() {
-       var mockfs internal.MockFS
+       var mockfs iomock.MockFS
        mockfs.Test(t.T())
        mockfs.On("Open", "s3://bucket/test/location/uuid.metadata.json").
-               Return(&internal.MockFile{Contents: 
bytes.NewReader([]byte(exampleViewJSON))}, nil)
+               Return(&iomock.MockFile{Contents: 
bytes.NewReader([]byte(exampleViewJSON))}, nil)
        defer mockfs.AssertExpectations(t.T())
 
        vw, err := NewFromLocation(
@@ -68,7 +68,7 @@ func (t *ViewTestSuite) SetupSuite() {
 }
 
 func (t *ViewTestSuite) TestNewViewFromReadFile() {
-       var mockfsReadFile internal.MockFSReadFile
+       var mockfsReadFile iomock.MockFSReadFile
        mockfsReadFile.Test(t.T())
        mockfsReadFile.On("ReadFile", 
"s3://bucket/test/location/uuid.metadata.json").
                Return([]byte(exampleViewJSON), nil)
@@ -120,10 +120,10 @@ func (t *ViewTestSuite) TestLocation() {
 }
 
 func TestCreateViewReturnsMetadataCloseError(t *testing.T) {
-       var mockfs internal.MockFS
+       var mockfs iomock.MockFS
        mockfs.Test(t)
        mockfs.On("Create", mock.Anything).
-               Return(&internal.MockFile{Contents: bytes.NewReader(nil), 
ErrOnClose: true}, nil)
+               Return(&iomock.MockFile{Contents: bytes.NewReader(nil), 
ErrOnClose: true}, nil)
        defer mockfs.AssertExpectations(t)
 
        const scheme = "view-close-error"

Reply via email to