Files
zot/pkg/meta/convert/convert_test.go
Luca Muscariello 2402296e9a fix: migrate to Go module v2 for proper semantic versioning (#3462)
* fix: migrate to Go module v2 for proper semantic versioning

This change updates the module path from 'zotregistry.dev/zot' to
'zotregistry.dev/zot/v2' to comply with Go's semantic versioning rules.

According to Go's module versioning requirements, major version v2+
must include the major version in the module path. The current
module path 'zotregistry.dev/zot' only supports v0.x.x and v1.x.x
versions, making existing v2.x.x tags (like v2.1.8) unusable.

Changes:
- Updated go.mod module path to zotregistry.dev/zot/v2
- Updated all internal import paths across 280+ Go source files
- Updated configuration files (golangcilint.yaml, gqlgen.yml)
- Updated README.md Go reference badge

This fix enables proper use of existing v2.x.x Git tags and allows
external packages to import zot v2+ versions without compatibility
errors.

Resolves: Go module import compatibility for v2+ versions
Fixes: #3071
Signed-off-by: Luca Muscariello <muscariello@ieee.org>

* fix: regenerate GraphQL files with updated v2 import paths

The gqlgen tool needs to regenerate the GraphQL schema files after
the module path change to use the new v2 imports.

Signed-off-by: Luca Muscariello <muscariello@ieee.org>

---------

Signed-off-by: Luca Muscariello <muscariello@ieee.org>
2025-10-16 22:43:47 -07:00

102 lines
3.2 KiB
Go

package convert_test
import (
"testing"
"time"
ispec "github.com/opencontainers/image-spec/specs-go/v1"
. "github.com/smartystreets/goconvey/convey"
"zotregistry.dev/zot/v2/pkg/meta/convert"
"zotregistry.dev/zot/v2/pkg/meta/proto/gen"
)
func TestConvertErrors(t *testing.T) {
Convey("Errors", t, func() {
Convey("GetImageArtifactType", func() {
str := convert.GetImageArtifactType(&gen.ImageMeta{MediaType: "bad-media-type"})
So(str, ShouldResemble, "")
})
Convey("GetImageManifestSize", func() {
size := convert.GetImageManifestSize(&gen.ImageMeta{MediaType: "bad-media-type"})
So(size, ShouldEqual, 0)
})
Convey("GetImageDigest", func() {
dig := convert.GetImageDigest(&gen.ImageMeta{MediaType: "bad-media-type"})
So(dig.String(), ShouldResemble, "")
})
Convey("GetImageDigestStr", func() {
digStr := convert.GetImageDigestStr(&gen.ImageMeta{MediaType: "bad-media-type"})
So(digStr, ShouldResemble, "")
})
Convey("GetImageAnnotations", func() {
annot := convert.GetImageAnnotations(&gen.ImageMeta{MediaType: "bad-media-type"})
So(annot, ShouldBeEmpty)
})
Convey("GetImageSubject", func() {
subjs := convert.GetImageSubject(&gen.ImageMeta{MediaType: "bad-media-type"})
So(subjs, ShouldBeNil)
})
Convey("GetDescriptorRef", func() {
ref := convert.GetDescriptorRef(nil)
So(ref, ShouldBeNil)
})
Convey("GetPlatform", func() {
platf := convert.GetPlatform(nil)
So(platf, ShouldEqual, ispec.Platform{})
})
Convey("GetPlatformRef", func() {
platf := convert.GetPlatform(&gen.Platform{Architecture: "arch"})
So(platf.Architecture, ShouldResemble, "arch")
})
Convey("GetImageReferrers", func() {
ref := convert.GetImageReferrers(nil)
So(ref, ShouldNotBeNil)
})
Convey("GetImageSignatures", func() {
sigs := convert.GetImageSignatures(nil)
So(sigs, ShouldNotBeNil)
})
Convey("GetImageStatistics", func() {
sigs := convert.GetImageStatistics(nil)
So(sigs, ShouldNotBeNil)
})
Convey("GetFullImageMetaFromProto", func() {
imageMeta := convert.GetFullImageMetaFromProto("tag", nil, nil)
So(imageMeta.Digest.String(), ShouldResemble, "")
})
Convey("GetFullManifestData", func() {
imageMeta := convert.GetFullManifestData(nil, nil)
So(len(imageMeta), ShouldEqual, 0)
})
})
}
func TestGetProtoEarlierUpdatedImage(t *testing.T) {
Convey("GetProtoEarlierUpdatedImage with nil params", t, func() {
// repoLastImage is nil
lastImage := gen.RepoLastUpdatedImage{}
repoLastUpdatedImage := convert.GetProtoEarlierUpdatedImage(nil, &lastImage)
So(repoLastUpdatedImage, ShouldNotBeNil)
So(repoLastUpdatedImage.LastUpdated, ShouldBeNil)
// lastImage is nil
repoLastImage := gen.RepoLastUpdatedImage{}
repoLastUpdatedImage = convert.GetProtoEarlierUpdatedImage(&repoLastImage, nil)
So(repoLastUpdatedImage, ShouldNotBeNil)
So(repoLastUpdatedImage.LastUpdated, ShouldBeNil)
// lastImage.LastUpdated is not nil, but repoLastImage.LastUpdated is nil
lastUpdated := time.Time{}
lastImage = gen.RepoLastUpdatedImage{
LastUpdated: convert.GetProtoTime(&lastUpdated),
}
repoLastUpdatedImage = convert.GetProtoEarlierUpdatedImage(&repoLastImage, &lastImage)
So(repoLastUpdatedImage, ShouldNotBeNil)
So(repoLastUpdatedImage.LastUpdated, ShouldNotBeNil)
})
}