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  }