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 }