github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/worker/caasoperator/paths_test.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package caasoperator_test 5 6 import ( 7 "path/filepath" 8 9 "github.com/juju/names/v5" 10 "github.com/juju/testing" 11 jc "github.com/juju/testing/checkers" 12 gc "gopkg.in/check.v1" 13 14 "github.com/juju/juju/worker/caasoperator" 15 ) 16 17 type PathsSuite struct { 18 testing.IsolationSuite 19 } 20 21 var _ = gc.Suite(&PathsSuite{}) 22 23 func relPathFunc(base string) func(parts ...string) string { 24 return func(parts ...string) string { 25 allParts := append([]string{base}, parts...) 26 return filepath.Join(allParts...) 27 } 28 } 29 30 func (s *PathsSuite) TestPaths(c *gc.C) { 31 dataDir := c.MkDir() 32 paths := caasoperator.NewPaths(dataDir, names.NewApplicationTag("foo")) 33 34 relData := relPathFunc(dataDir) 35 relAgent := relPathFunc(relData("agents", "application-foo")) 36 c.Assert(paths, jc.DeepEquals, caasoperator.Paths{ 37 ToolsDir: relData("tools"), 38 State: caasoperator.StatePaths{ 39 BaseDir: relAgent(), 40 CharmDir: relAgent("charm"), 41 BundlesDir: relAgent("state", "bundles"), 42 DeployerDir: relAgent("state", "deployer"), 43 OperationsFile: relAgent("state", "operator"), 44 MetricsSpoolDir: relAgent("state", "spool", "metrics"), 45 }, 46 }) 47 } 48 49 func (s *PathsSuite) TestContextInterface(c *gc.C) { 50 paths := caasoperator.Paths{ 51 ToolsDir: "/path/to/tools", 52 State: caasoperator.StatePaths{ 53 CharmDir: "/path/to/charm", 54 MetricsSpoolDir: "/path/to/spool/metrics", 55 }, 56 } 57 c.Assert(paths.GetToolsDir(), gc.Equals, "/path/to/tools") 58 c.Assert(paths.GetCharmDir(), gc.Equals, "/path/to/charm") 59 c.Assert(paths.GetMetricsSpoolDir(), gc.Equals, "/path/to/spool/metrics") 60 }