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  }