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  }