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"