| package client | |
| import ( | |
| "context" | |
| "io" | |
| "strings" | |
| "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)) | |
| }) | |
| } | |
| } | |
| func TestNewCancelReadCloserRace(t *testing.T) { | |
| for range 1000 { | |
| ctx, cancel := context.WithCancel(t.Context()) | |
| cancel() | |
| _ = newCancelReadCloser(ctx, io.NopCloser(strings.NewReader(""))) | |
| } | |
| } |