diff --git a/platforms/defaults_windows.go b/platforms/defaults_windows.go index cdbc8751c..fd5756516 100644 --- a/platforms/defaults_windows.go +++ b/platforms/defaults_windows.go @@ -50,7 +50,10 @@ func (m windowsmatcher) Match(p specs.Platform) bool { match := m.defaultMatcher.Match(p) if match && m.OS == "windows" { - return strings.HasPrefix(p.OSVersion, m.osVersionPrefix) && m.defaultMatcher.Match(p) + if strings.HasPrefix(p.OSVersion, m.osVersionPrefix) { + return true + } + return p.OSVersion == "" } return match diff --git a/platforms/defaults_windows_test.go b/platforms/defaults_windows_test.go index eea820f35..468438038 100644 --- a/platforms/defaults_windows_test.go +++ b/platforms/defaults_windows_test.go @@ -128,7 +128,7 @@ func TestMatchComparerMatch_WCOW(t *testing.T) { Architecture: "amd64", OS: "windows", }, - match: false, + match: true, }, { platform: imagespec.Platform{ @@ -251,11 +251,11 @@ func TestMatchComparerLess(t *testing.T) { { Architecture: "amd64", OS: "windows", - OSVersion: "10.0.17764.1", }, { Architecture: "amd64", OS: "windows", + OSVersion: "10.0.17764.1", }, { Architecture: "amd64", diff --git a/platforms/platforms_windows_test.go b/platforms/platforms_windows_test.go index 89f861926..d5f3883f6 100644 --- a/platforms/platforms_windows_test.go +++ b/platforms/platforms_windows_test.go @@ -19,9 +19,23 @@ package platforms import ( "testing" + specs "github.com/opencontainers/image-spec/specs-go/v1" "github.com/stretchr/testify/require" ) func TestNormalize(t *testing.T) { require.Equal(t, DefaultSpec(), Normalize(DefaultSpec())) } + +func TestFallbackOnOSVersion(t *testing.T) { + p := specs.Platform{ + OS: "windows", + Architecture: "amd64", + OSVersion: "99.99.99.99", + } + + other := specs.Platform{OS: p.OS, Architecture: p.Architecture} + + m := NewMatcher(p) + require.True(t, m.Match(other)) +}