launchpad.net/~rogpeppe/juju-core/500-errgo-fix@v0.0.0-20140213181702-000000002356/cmd/environmentcommand_test.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package cmd_test 5 6 import ( 7 "io/ioutil" 8 "os" 9 10 gc "launchpad.net/gocheck" 11 12 "launchpad.net/juju-core/cmd" 13 "launchpad.net/juju-core/juju/osenv" 14 "launchpad.net/juju-core/testing" 15 ) 16 17 type EnvironmentCommandSuite struct { 18 home *testing.FakeHome 19 } 20 21 var _ = gc.Suite(&EnvironmentCommandSuite{}) 22 23 func (s *EnvironmentCommandSuite) SetUpTest(c *gc.C) { 24 s.home = testing.MakeEmptyFakeHome(c) 25 } 26 27 func (s *EnvironmentCommandSuite) TearDownTest(c *gc.C) { 28 s.home.Restore() 29 } 30 31 func (s *EnvironmentCommandSuite) TestReadCurrentEnvironmentUnset(c *gc.C) { 32 env := cmd.ReadCurrentEnvironment() 33 c.Assert(env, gc.Equals, "") 34 } 35 36 func (s *EnvironmentCommandSuite) TestReadCurrentEnvironmentSet(c *gc.C) { 37 err := cmd.WriteCurrentEnvironment("fubar") 38 c.Assert(err, gc.IsNil) 39 env := cmd.ReadCurrentEnvironment() 40 c.Assert(env, gc.Equals, "fubar") 41 } 42 43 func (s *EnvironmentCommandSuite) TestGetDefaultEnvironmentNothingSet(c *gc.C) { 44 env := cmd.GetDefaultEnvironment() 45 c.Assert(env, gc.Equals, "") 46 } 47 48 func (s *EnvironmentCommandSuite) TestGetDefaultEnvironmentCurrentEnvironmentSet(c *gc.C) { 49 err := cmd.WriteCurrentEnvironment("fubar") 50 c.Assert(err, gc.IsNil) 51 env := cmd.GetDefaultEnvironment() 52 c.Assert(env, gc.Equals, "fubar") 53 } 54 55 func (s *EnvironmentCommandSuite) TestGetDefaultEnvironmentJujuEnvSet(c *gc.C) { 56 os.Setenv(osenv.JujuEnvEnvKey, "magic") 57 env := cmd.GetDefaultEnvironment() 58 c.Assert(env, gc.Equals, "magic") 59 } 60 61 func (s *EnvironmentCommandSuite) TestGetDefaultEnvironmentBothSet(c *gc.C) { 62 os.Setenv(osenv.JujuEnvEnvKey, "magic") 63 err := cmd.WriteCurrentEnvironment("fubar") 64 c.Assert(err, gc.IsNil) 65 env := cmd.GetDefaultEnvironment() 66 c.Assert(env, gc.Equals, "magic") 67 } 68 69 func (s *EnvironmentCommandSuite) TestWriteAddsNewline(c *gc.C) { 70 err := cmd.WriteCurrentEnvironment("fubar") 71 c.Assert(err, gc.IsNil) 72 current, err := ioutil.ReadFile(cmd.GetCurrentEnvironmentFilePath()) 73 c.Assert(err, gc.IsNil) 74 c.Assert(string(current), gc.Equals, "fubar\n") 75 } 76 77 func (*EnvironmentCommandSuite) TestErrorWritingFile(c *gc.C) { 78 // Can't write a file over a directory. 79 os.MkdirAll(cmd.GetCurrentEnvironmentFilePath(), 0777) 80 err := cmd.WriteCurrentEnvironment("fubar") 81 c.Assert(err, gc.ErrorMatches, "unable to write to the environment file: .*") 82 }