github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/core/base/supportedbases_test.go (about)

     1  // Copyright 2020 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package base
     5  
     6  import (
     7  	"time"
     8  
     9  	"github.com/juju/testing"
    10  	jc "github.com/juju/testing/checkers"
    11  	gc "gopkg.in/check.v1"
    12  )
    13  
    14  type BasesSuite struct {
    15  	testing.IsolationSuite
    16  }
    17  
    18  var _ = gc.Suite(&BasesSuite{})
    19  
    20  func (s *BasesSuite) TestWorkloadBases(c *gc.C) {
    21  	tests := []struct {
    22  		name          string
    23  		requestedBase Base
    24  		imageStream   string
    25  		err           string
    26  		expectedBase  []Base
    27  	}{{
    28  		name:          "no base",
    29  		requestedBase: Base{},
    30  		imageStream:   Daily,
    31  		expectedBase: []Base{
    32  			MustParseBaseFromString("centos@7/stable"),
    33  			MustParseBaseFromString("centos@9/stable"),
    34  			MustParseBaseFromString("genericlinux@genericlinux/stable"),
    35  			MustParseBaseFromString("kubernetes@kubernetes"),
    36  			MustParseBaseFromString("ubuntu@20.04/stable"),
    37  			MustParseBaseFromString("ubuntu@22.04/stable"),
    38  			MustParseBaseFromString("ubuntu@24.04/stable"),
    39  		},
    40  	}, {
    41  		name:          "requested base",
    42  		requestedBase: MustParseBaseFromString("ubuntu@22.04"),
    43  		imageStream:   Daily,
    44  		expectedBase: []Base{
    45  			MustParseBaseFromString("centos@7/stable"),
    46  			MustParseBaseFromString("centos@9/stable"),
    47  			MustParseBaseFromString("genericlinux@genericlinux/stable"),
    48  			MustParseBaseFromString("kubernetes@kubernetes"),
    49  			MustParseBaseFromString("ubuntu@20.04/stable"),
    50  			MustParseBaseFromString("ubuntu@22.04/stable"),
    51  			MustParseBaseFromString("ubuntu@24.04/stable"),
    52  		},
    53  	}}
    54  	for _, test := range tests {
    55  		c.Logf("test %q", test.name)
    56  
    57  		result, err := WorkloadBases(time.Now(), test.requestedBase, test.imageStream)
    58  		if test.err != "" {
    59  			c.Assert(err, gc.ErrorMatches, test.err)
    60  			continue
    61  		}
    62  		c.Assert(err, jc.ErrorIsNil)
    63  		c.Assert(result, gc.DeepEquals, test.expectedBase)
    64  	}
    65  }