github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/meterstatus/context_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package meterstatus_test
     5  
     6  import (
     7  	"runtime"
     8  
     9  	jc "github.com/juju/testing/checkers"
    10  	"github.com/juju/utils/keyvalues"
    11  	gc "gopkg.in/check.v1"
    12  
    13  	"github.com/juju/juju/worker/meterstatus"
    14  )
    15  
    16  type ContextSuite struct{}
    17  
    18  var _ = gc.Suite(&ContextSuite{})
    19  
    20  type dummyPaths struct{}
    21  
    22  func (*dummyPaths) GetToolsDir() string             { return "/dummy/tools" }
    23  func (*dummyPaths) GetCharmDir() string             { return "/dummy/charm" }
    24  func (*dummyPaths) GetJujucSocket() string          { return "/dummy/jujuc.sock" }
    25  func (*dummyPaths) GetMetricsSpoolDir() string      { return "/dummy/spool" }
    26  func (*dummyPaths) ComponentDir(name string) string { return "/dummy/" + name }
    27  
    28  func (s *ContextSuite) TestHookContextEnv(c *gc.C) {
    29  	ctx := meterstatus.NewLimitedContext("u/0")
    30  	paths := &dummyPaths{}
    31  	vars, err := ctx.HookVars(paths)
    32  	c.Assert(err, jc.ErrorIsNil)
    33  	varMap, err := keyvalues.Parse(vars, true)
    34  	c.Assert(err, jc.ErrorIsNil)
    35  	c.Assert(varMap["JUJU_AGENT_SOCKET"], gc.Equals, "/dummy/jujuc.sock")
    36  	c.Assert(varMap["JUJU_UNIT_NAME"], gc.Equals, "u/0")
    37  	c.Assert(varMap["JUJU_CHARM_DIR"], gc.Equals, "/dummy/charm")
    38  	c.Assert(varMap["CHARM_DIR"], gc.Equals, "/dummy/charm")
    39  	key := "PATH"
    40  	if runtime.GOOS == "windows" {
    41  		key = "Path"
    42  	}
    43  	c.Assert(varMap[key], gc.Not(gc.Equals), "")
    44  }
    45  
    46  func (s *ContextSuite) TestHookContextSetEnv(c *gc.C) {
    47  	ctx := meterstatus.NewLimitedContext("u/0")
    48  	setVars := map[string]string{
    49  		"somekey":    "somevalue",
    50  		"anotherkey": "anothervalue",
    51  	}
    52  	ctx.SetEnvVars(setVars)
    53  	paths := &dummyPaths{}
    54  	vars, err := ctx.HookVars(paths)
    55  	c.Assert(err, jc.ErrorIsNil)
    56  	varMap, err := keyvalues.Parse(vars, true)
    57  	c.Assert(err, jc.ErrorIsNil)
    58  	for key, value := range setVars {
    59  		c.Assert(varMap[key], gc.Equals, value)
    60  	}
    61  	c.Assert(varMap["JUJU_AGENT_SOCKET"], gc.Equals, "/dummy/jujuc.sock")
    62  	c.Assert(varMap["JUJU_UNIT_NAME"], gc.Equals, "u/0")
    63  }