@@ -250,6 +250,60 @@ func TestFindImage(t *testing.T) {
250250 }
251251}
252252
253+ // TestRecommendedKubernetesVersion tests the version logic kubernetes kops versions
254+ func TestRecommendedKubernetesVersion (t * testing.T ) {
255+ srcDir := "simple"
256+ sourcePath := path .Join (srcDir , "channel.yaml" )
257+ sourceBytes , err := ioutil .ReadFile (sourcePath )
258+ if err != nil {
259+ t .Fatalf ("unexpected error reading sourcePath %q: %v" , sourcePath , err )
260+ }
261+
262+ channel , err := kops .ParseChannel (sourceBytes )
263+ if err != nil {
264+ t .Fatalf ("failed to parse channel: %v" , err )
265+ }
266+
267+ grid := []struct {
268+ KopsVersion string
269+ ExpectedKubernetesVersion string
270+ }{
271+ {
272+ KopsVersion : "1.4.4" ,
273+ ExpectedKubernetesVersion : "1.4.8" ,
274+ },
275+ {
276+ KopsVersion : "1.4.5" ,
277+ ExpectedKubernetesVersion : "1.4.8" ,
278+ },
279+ {
280+ KopsVersion : "1.5.0" ,
281+ ExpectedKubernetesVersion : "1.5.2" ,
282+ },
283+ {
284+ KopsVersion : "1.5.0-beta2" ,
285+ ExpectedKubernetesVersion : "1.5.0" ,
286+ },
287+ }
288+ for _ , g := range grid {
289+ kubernetesVersion := kops .RecommendedKubernetesVersion (channel , g .KopsVersion )
290+ if semverString (kubernetesVersion ) != g .ExpectedKubernetesVersion {
291+ t .Errorf ("unexpected result from RecommendedKubernetesVersion(%q): expected=%q, actual=%q" , g .KopsVersion , g .ExpectedKubernetesVersion , semverString (kubernetesVersion ))
292+ continue
293+ }
294+ }
295+ }
296+
297+ func TestOrdering (t * testing.T ) {
298+ if ! semver .MustParse ("1.5.0" ).GTE (semver .MustParse ("1.5.0-alpha1" )) {
299+ t .Fatalf ("Expected: 1.5.0 >= 1.5.0-alpha1" )
300+ }
301+
302+ if ! semver .MustParseRange (">=1.5.0-alpha1" )(semver .MustParse ("1.5.0" )) {
303+ t .Fatalf ("Expected: '>=1.5.0-alpha1' to include 1.5.0" )
304+ }
305+ }
306+
253307func semverString (sv * semver.Version ) string {
254308 if sv == nil {
255309 return ""
0 commit comments