github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/juju/osenv/vars_test.go (about)

     1  // Copyright 2014 Canonical Ltd.
     2  // Copyright 2014 Cloudbase Solutions SRL
     3  // Licensed under the AGPLv3, see LICENCE file for details.
     4  
     5  package osenv_test
     6  
     7  import (
     8  	"runtime"
     9  
    10  	jc "github.com/juju/testing/checkers"
    11  	gc "gopkg.in/check.v1"
    12  
    13  	"github.com/juju/juju/juju/osenv"
    14  	"github.com/juju/juju/testing"
    15  )
    16  
    17  type varsSuite struct {
    18  	testing.BaseSuite
    19  }
    20  
    21  var _ = gc.Suite(&varsSuite{})
    22  
    23  func (s *varsSuite) TestJujuXDGDataHomeEnvVar(c *gc.C) {
    24  	path := "/foo/bar/baz"
    25  	s.PatchEnvironment(osenv.JujuXDGDataHomeEnvKey, path)
    26  	c.Assert(osenv.JujuXDGDataHomeDir(), gc.Equals, path)
    27  }
    28  
    29  func (s *varsSuite) TestBlankJujuXDGDataHomeEnvVar(c *gc.C) {
    30  	s.PatchEnvironment(osenv.JujuXDGDataHomeEnvKey, "")
    31  
    32  	if runtime.GOOS == "windows" {
    33  		s.PatchEnvironment("APPDATA", `P:\foobar`)
    34  	} else {
    35  		s.PatchEnvironment("HOME", "/foobar")
    36  	}
    37  	c.Assert(osenv.JujuXDGDataHomeDir(), gc.Not(gc.Equals), "")
    38  
    39  	if runtime.GOOS == "windows" {
    40  		c.Assert(osenv.JujuXDGDataHomeDir(), gc.Equals, osenv.JujuXDGDataHomeWin())
    41  	} else {
    42  		c.Assert(osenv.JujuXDGDataHomeDir(), gc.Equals, osenv.JujuXDGDataHomeLinux())
    43  	}
    44  }
    45  
    46  func (s *varsSuite) TestMergeEnvironment(c *gc.C) {
    47  	c.Check(osenv.MergeEnvironment(nil, nil), gc.HasLen, 0)
    48  	newValues := map[string]string{"a": "baz", "c": "omg"}
    49  	created := osenv.MergeEnvironment(nil, newValues)
    50  	expected := map[string]string{"a": "baz", "c": "omg"}
    51  	c.Check(created, jc.DeepEquals, expected)
    52  	// Show that the map returned isn't the one passed in.
    53  	newValues["d"] = "another"
    54  	c.Check(created, jc.DeepEquals, expected)
    55  }
    56  
    57  func (s *varsSuite) TestMergeEnvWin(c *gc.C) {
    58  	initial := map[string]string{"a": "foo", "b": "bar", "foo": "val"}
    59  	newValues := map[string]string{"a": "baz", "c": "omg", "FOO": "val2", "d": "another"}
    60  
    61  	created := osenv.MergeEnvWin(initial, newValues)
    62  	expected := map[string]string{"a": "baz", "b": "bar", "c": "omg", "foo": "val2", "d": "another"}
    63  	// The returned value is the inital map.
    64  	c.Check(created, jc.DeepEquals, expected)
    65  	c.Check(initial, jc.DeepEquals, expected)
    66  }
    67  
    68  func (s *varsSuite) TestMergeEnvUnix(c *gc.C) {
    69  	initial := map[string]string{"a": "foo", "b": "bar"}
    70  	newValues := map[string]string{"a": "baz", "c": "omg", "d": "another"}
    71  
    72  	created := osenv.MergeEnvUnix(initial, newValues)
    73  	expected := map[string]string{"a": "baz", "b": "bar", "c": "omg", "d": "another"}
    74  	// The returned value is the inital map.
    75  	c.Check(created, jc.DeepEquals, expected)
    76  	c.Check(initial, jc.DeepEquals, expected)
    77  }