github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/resource/context/internal/util_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package internal_test 5 6 import ( 7 "fmt" 8 9 "github.com/juju/errors" 10 "github.com/juju/testing" 11 jc "github.com/juju/testing/checkers" 12 "github.com/juju/testing/filetesting" 13 gc "gopkg.in/check.v1" 14 15 "github.com/juju/juju/resource/context/internal" 16 ) 17 18 var _ = gc.Suite(&UtilSuite{}) 19 20 type UtilSuite struct { 21 testing.IsolationSuite 22 23 stub *internalStub 24 } 25 26 func (s *UtilSuite) SetUpTest(c *gc.C) { 27 s.IsolationSuite.SetUpTest(c) 28 29 s.stub = newInternalStub() 30 } 31 32 func (s *UtilSuite) TestCloseAndLogNoError(c *gc.C) { 33 closer := &filetesting.StubCloser{Stub: s.stub.Stub} 34 logger := &stubLogger{Stub: s.stub.Stub} 35 36 internal.CloseAndLog(closer, "a thing", logger) 37 38 s.stub.CheckCallNames(c, "Close") 39 } 40 41 func (s *UtilSuite) TestCloseAndLog(c *gc.C) { 42 closer := &filetesting.StubCloser{Stub: s.stub.Stub} 43 logger := &stubLogger{Stub: s.stub.Stub} 44 failure := errors.New("<failure>") 45 s.stub.SetErrors(failure) 46 47 internal.CloseAndLog(closer, "a thing", logger) 48 49 s.stub.CheckCallNames(c, "Close", "Errorf") 50 c.Check(logger.logged, gc.Equals, "while closing a thing: <failure>") 51 } 52 53 func (s *UtilSuite) TestReplaceDirectory(c *gc.C) { 54 deps := s.stub 55 56 err := internal.ReplaceDirectory("target_dir", "source_dir", deps) 57 c.Assert(err, jc.ErrorIsNil) 58 59 s.stub.CheckCallNames(c, "RemoveDir", "Move") 60 } 61 62 type stubLogger struct { 63 *testing.Stub 64 65 logged string 66 } 67 68 func (s *stubLogger) Errorf(msg string, args ...interface{}) { 69 s.AddCall("Errorf", msg, args) 70 s.NextErr() // Pop one off. 71 72 s.logged = fmt.Sprintf(msg, args...) 73 }