package client import ( "testing" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "gotest.tools/v3/assert" is "gotest.tools/v3/assert/cmp" ) func TestEncodePlatforms(t *testing.T) { tests := []struct { doc string platforms []ocispec.Platform expected []string }{ { doc: "single platform", platforms: []ocispec.Platform{ {Architecture: "arm64", OS: "windows", Variant: "v8", OSVersion: "99.99.99"}, }, expected: []string{ `{"architecture":"arm64","os":"windows","os.version":"99.99.99","variant":"v8"}`, }, }, { doc: "multiple platforms", platforms: []ocispec.Platform{ {Architecture: "arm64", OS: "linux", Variant: "v8"}, {Architecture: "arm64", OS: "windows", Variant: "v8", OSVersion: "99.99.99"}, }, expected: []string{ `{"architecture":"arm64","os":"linux","variant":"v8"}`, `{"architecture":"arm64","os":"windows","os.version":"99.99.99","variant":"v8"}`, }, }, { doc: "multiple platforms with duplicates", platforms: []ocispec.Platform{ {Architecture: "arm64", OS: "linux", Variant: "v8"}, {Architecture: "arm64", OS: "windows", Variant: "v8", OSVersion: "99.99.99"}, {Architecture: "arm64", OS: "linux", Variant: "v8"}, }, expected: []string{ `{"architecture":"arm64","os":"linux","variant":"v8"}`, `{"architecture":"arm64","os":"windows","os.version":"99.99.99","variant":"v8"}`, }, }, } for _, tc := range tests { t.Run(tc.doc, func(t *testing.T) { out, err := encodePlatforms(tc.platforms...) assert.NilError(t, err) assert.Check(t, is.DeepEqual(out, tc.expected)) }) } }