windows: The DefaultSpec platform should match the Default matcher

The Windows Default matcher also checks the the OS Version prefix,
however, the platforms.DefaultSpec does not include it, which means
that it won't match the matcher.

This solves the issue by adding the OS Version to the DefaultSpec.

Signed-off-by: Claudiu Belu <cbelu@cloudbasesolutions.com>
This commit is contained in:
Claudiu Belu
2021-08-26 10:39:59 +00:00
parent af1a0908d0
commit e2c769d6fb
5 changed files with 58 additions and 16 deletions

View File

@@ -17,13 +17,36 @@
package platforms
import (
"fmt"
"reflect"
"runtime"
"sort"
"testing"
imagespec "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/stretchr/testify/assert"
"golang.org/x/sys/windows"
)
func TestDefault(t *testing.T) {
major, minor, build := windows.RtlGetNtVersionNumbers()
expected := imagespec.Platform{
OS: runtime.GOOS,
Architecture: runtime.GOARCH,
OSVersion: fmt.Sprintf("%d.%d.%d", major, minor, build),
Variant: cpuVariant(),
}
p := DefaultSpec()
if !reflect.DeepEqual(p, expected) {
t.Fatalf("default platform not as expected: %#v != %#v", p, expected)
}
s := DefaultString()
if s != Format(p) {
t.Fatalf("default specifier should match formatted default spec: %v != %v", s, p)
}
}
func TestMatchComparerMatch(t *testing.T) {
m := matchComparer{
defaults: Only(imagespec.Platform{
@@ -36,6 +59,10 @@ func TestMatchComparerMatch(t *testing.T) {
platform imagespec.Platform
match bool
}{
{
platform: DefaultSpec(),
match: true,
},
{
platform: imagespec.Platform{
Architecture: "amd64",