github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/utils/scriptrunner/scriptrunner_test.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package scriptrunner_test
     5  
     6  import (
     7  	"os"
     8  	"runtime"
     9  	stdtesting "testing"
    10  	"time"
    11  
    12  	"github.com/juju/clock"
    13  	"github.com/juju/clock/testclock"
    14  	"github.com/juju/testing"
    15  	jc "github.com/juju/testing/checkers"
    16  	gc "gopkg.in/check.v1"
    17  
    18  	coretesting "github.com/juju/juju/testing"
    19  	"github.com/juju/juju/utils/scriptrunner"
    20  )
    21  
    22  func Test(t *stdtesting.T) {
    23  	gc.TestingT(t)
    24  }
    25  
    26  type ScriptRunnerSuite struct {
    27  	testing.IsolationSuite
    28  }
    29  
    30  var _ = gc.Suite(&ScriptRunnerSuite{})
    31  
    32  func (s *ScriptRunnerSuite) SetUpSuite(c *gc.C) {
    33  	if runtime.GOOS == "windows" {
    34  		c.Skip("skipping ScriptRunnerSuite tests on windows")
    35  	}
    36  	s.IsolationSuite.SetUpSuite(c)
    37  }
    38  
    39  func (*ScriptRunnerSuite) TestScriptRunnerFails(c *gc.C) {
    40  	clock := testclock.NewClock(coretesting.ZeroTime())
    41  	result, err := scriptrunner.RunCommand("exit 1", os.Environ(), clock, 0)
    42  	c.Assert(err, jc.ErrorIsNil)
    43  	c.Assert(result.Code, gc.Equals, 1)
    44  }
    45  
    46  func (*ScriptRunnerSuite) TestScriptRunnerSucceeds(c *gc.C) {
    47  	clock := testclock.NewClock(coretesting.ZeroTime())
    48  	result, err := scriptrunner.RunCommand("exit 0", os.Environ(), clock, 0)
    49  	c.Assert(err, jc.ErrorIsNil)
    50  	c.Assert(result.Code, gc.Equals, 0)
    51  }
    52  
    53  func (*ScriptRunnerSuite) TestScriptRunnerCheckStdout(c *gc.C) {
    54  	clock := testclock.NewClock(coretesting.ZeroTime())
    55  	result, err := scriptrunner.RunCommand("echo -n 42", os.Environ(), clock, 0)
    56  	c.Assert(err, jc.ErrorIsNil)
    57  	c.Assert(result.Code, gc.Equals, 0)
    58  	c.Check(string(result.Stdout), gc.Equals, "42")
    59  	c.Check(string(result.Stderr), gc.Equals, "")
    60  }
    61  
    62  func (*ScriptRunnerSuite) TestScriptRunnerCheckStderr(c *gc.C) {
    63  	clock := testclock.NewClock(coretesting.ZeroTime())
    64  	result, err := scriptrunner.RunCommand(">&2 echo -n 3.141", os.Environ(), clock, 0)
    65  	c.Assert(err, jc.ErrorIsNil)
    66  	c.Assert(result.Code, gc.Equals, 0)
    67  	c.Check(string(result.Stdout), gc.Equals, "")
    68  	c.Check(string(result.Stderr), gc.Equals, "3.141")
    69  }
    70  
    71  func (*ScriptRunnerSuite) TestScriptRunnerTimeout(c *gc.C) {
    72  	_, err := scriptrunner.RunCommand("sleep 6", os.Environ(), clock.WallClock, 500*time.Microsecond)
    73  	c.Assert(err, gc.NotNil)
    74  	c.Assert(err, gc.ErrorMatches, "command cancelled")
    75  }