1
// Copyright 2012-2014 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
10
envtesting "github.com/juju/testing"
11
jc "github.com/juju/testing/checkers"
12
gc "gopkg.in/check.v1"
14
"github.com/juju/juju/worker/uniter/runner"
17
type MergeEnvSuite struct {
18
envtesting.IsolationSuite
21
var _ = gc.Suite(&MergeEnvSuite{})
23
func (e *MergeEnvSuite) TestMergeEnviron(c *gc.C) {
24
// environment does not get fully cleared on Windows
25
// when using testing.IsolationSuite
26
origEnv := os.Environ()
27
extraExpected := []string{
32
expectEnv := make([]string, 0, len(origEnv)+len(extraExpected))
34
// os.Environ prepends some garbage on Windows that we need to strip out.
35
// All the garbage starts and ends with = (for example "=C:=").
36
for _, v := range origEnv {
37
if !(strings.HasPrefix(v, "=") && strings.HasSuffix(v, "=")) {
38
expectEnv = append(expectEnv, v)
41
expectEnv = append(expectEnv, extraExpected...)
42
os.Setenv("DUMMYVAR2", "ChangeMe")
43
os.Setenv("DUMMYVAR", "foo")
45
newEnv := make([]string, 0, len(expectEnv))
46
for _, v := range runner.MergeWindowsEnvironment([]string{"dummyvar2=bar", "NEWVAR=ImNew"}, os.Environ()) {
47
if !(strings.HasPrefix(v, "=") && strings.HasSuffix(v, "=")) {
48
newEnv = append(newEnv, v)
51
c.Assert(expectEnv, jc.SameContents, newEnv)
54
func (s *MergeEnvSuite) TestMergeEnvWin(c *gc.C) {
55
initial := []string{"a=foo", "b=bar", "foo=val"}
56
newValues := []string{"a=baz", "c=omg", "FOO=val2", "d=another"}
58
created := runner.MergeWindowsEnvironment(newValues, initial)
59
expected := []string{"a=baz", "b=bar", "c=omg", "foo=val2", "d=another"}
60
c.Check(created, jc.SameContents, expected)