github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/core/arch/arches_test.go (about) 1 // Copyright 2020 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package arch_test 5 6 import ( 7 "github.com/juju/testing" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 11 "github.com/juju/juju/core/arch" 12 ) 13 14 type archSuite struct { 15 testing.IsolationSuite 16 } 17 18 var _ = gc.Suite(&archSuite{}) 19 20 func (s archSuite) TestContains(c *gc.C) { 21 arches := arch.AllArches() 22 c.Assert(arches.Contains(arch.Arch("amd64")), jc.IsTrue) 23 c.Assert(arches.Contains(arch.Arch("risc")), jc.IsFalse) 24 } 25 26 func (s archSuite) TestStringList(c *gc.C) { 27 arches := arch.AllArches() 28 c.Assert(arches.StringList(), jc.DeepEquals, []string{"amd64", "arm64", "ppc64el", "riscv64", "s390x"}) 29 } 30 31 func (s archSuite) TestString(c *gc.C) { 32 arches := arch.AllArches() 33 c.Assert(arches.String(), gc.Equals, "amd64,arm64,ppc64el,riscv64,s390x") 34 } 35 36 func (s *archSuite) TestHostArch(c *gc.C) { 37 a := arch.HostArch() 38 c.Assert(arch.IsSupportedArch(a), jc.IsTrue) 39 } 40 41 func (s *archSuite) TestNormaliseArch(c *gc.C) { 42 for _, test := range []struct { 43 raw string 44 arch string 45 }{ 46 {"amd64", "amd64"}, 47 {"x86_64", "amd64"}, 48 {"aarch64", "arm64"}, 49 {"arm64", "arm64"}, 50 {"ppc64el", "ppc64el"}, 51 {"ppc64le", "ppc64el"}, 52 {"s390x", "s390x"}, 53 {"riscv64", "riscv64"}, 54 {"risc", "riscv64"}, 55 {"risc-v64", "riscv64"}, 56 {"risc-V64", "riscv64"}, 57 } { 58 arch := arch.NormaliseArch(test.raw) 59 c.Check(arch, gc.Equals, test.arch) 60 } 61 } 62 63 func (s *archSuite) TestIsSupportedArch(c *gc.C) { 64 for _, a := range arch.AllSupportedArches { 65 c.Assert(arch.IsSupportedArch(a), jc.IsTrue) 66 } 67 c.Assert(arch.IsSupportedArch("invalid"), jc.IsFalse) 68 }