github.com/juju/charm/v11@v11.2.0/manifest_test.go (about)

     1  // Copyright 2021 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package charm
     5  
     6  import (
     7  	"strings"
     8  
     9  	"github.com/juju/testing"
    10  	gc "gopkg.in/check.v1"
    11  )
    12  
    13  type manifestSuite struct {
    14  	testing.CleanupSuite
    15  }
    16  
    17  var _ = gc.Suite(&manifestSuite{})
    18  
    19  func (s *manifestSuite) TestReadManifest(c *gc.C) {
    20  	manifest, err := ReadManifest(strings.NewReader(`
    21  bases:
    22    - name: ubuntu
    23      channel: "18.04"
    24      architectures: ["amd64","aarch64","s390x"]
    25    - name: ubuntu
    26      channel: "20.04/stable"
    27  `))
    28  	c.Assert(err, gc.IsNil)
    29  	c.Assert(manifest, gc.DeepEquals, &Manifest{Bases: []Base{{
    30  		Name: "ubuntu",
    31  		Channel: Channel{
    32  			Track:  "18.04",
    33  			Risk:   "stable",
    34  			Branch: "",
    35  		},
    36  		Architectures: []string{"amd64", "arm64", "s390x"},
    37  	}, {
    38  		Name: "ubuntu",
    39  		Channel: Channel{
    40  			Track:  "20.04",
    41  			Risk:   "stable",
    42  			Branch: "",
    43  		},
    44  	},
    45  	}})
    46  }
    47  
    48  func (s *manifestSuite) TestReadValidateManifest(c *gc.C) {
    49  	_, err := ReadManifest(strings.NewReader(`
    50  bases:
    51    - name: ""
    52      channel: "18.04"
    53  `))
    54  	c.Assert(err, gc.ErrorMatches, "manifest: base without name not valid")
    55  }
    56  
    57  func (s *manifestSuite) TestValidateManifest(c *gc.C) {
    58  	manifest := &Manifest{
    59  		Bases: []Base{{
    60  			Name: "",
    61  		}},
    62  	}
    63  	c.Assert(manifest.Validate(), gc.ErrorMatches, "validating manifest: base without name not valid")
    64  }