github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/worker/uniter/runner/args_test.go (about)

     1  // Copyright 2012-2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package runner_test
     5  
     6  import (
     7  	"path/filepath"
     8  
     9  	envtesting "github.com/juju/testing"
    10  	jc "github.com/juju/testing/checkers"
    11  	gc "gopkg.in/check.v1"
    12  
    13  	"github.com/juju/juju/version"
    14  	"github.com/juju/juju/worker/uniter/runner"
    15  )
    16  
    17  type WindowsHookSuite struct{}
    18  
    19  var _ = gc.Suite(&WindowsHookSuite{})
    20  
    21  func (s *WindowsHookSuite) TestHookCommandPowerShellScript(c *gc.C) {
    22  	restorer := envtesting.PatchValue(&version.Current.OS, version.Windows)
    23  	defer restorer()
    24  
    25  	hookname := "powerShellScript.ps1"
    26  	expected := []string{
    27  		"powershell.exe",
    28  		"-NonInteractive",
    29  		"-ExecutionPolicy",
    30  		"RemoteSigned",
    31  		"-File",
    32  		hookname,
    33  	}
    34  
    35  	c.Assert(runner.HookCommand(hookname), gc.DeepEquals, expected)
    36  }
    37  
    38  func (s *WindowsHookSuite) TestHookCommandNotPowerShellScripts(c *gc.C) {
    39  	restorer := envtesting.PatchValue(&version.Current.OS, version.Windows)
    40  	defer restorer()
    41  
    42  	cmdhook := "somehook.cmd"
    43  	c.Assert(runner.HookCommand(cmdhook), gc.DeepEquals, []string{cmdhook})
    44  
    45  	bathook := "somehook.bat"
    46  	c.Assert(runner.HookCommand(bathook), gc.DeepEquals, []string{bathook})
    47  }
    48  
    49  func (s *WindowsHookSuite) TestSearchHookUbuntu(c *gc.C) {
    50  	restorer := envtesting.PatchValue(&version.Current.OS, version.Ubuntu)
    51  	defer restorer()
    52  
    53  	charmDir := c.MkDir()
    54  	makeCharm(c, hookSpec{
    55  		dir:  "hooks",
    56  		name: "something-happened",
    57  		perm: 0755,
    58  	}, charmDir)
    59  
    60  	expected, err := runner.LookPath(filepath.Join(charmDir, "hooks", "something-happened"))
    61  	c.Assert(err, jc.ErrorIsNil)
    62  	obtained, err := runner.SearchHook(charmDir, filepath.Join("hooks", "something-happened"))
    63  	c.Assert(err, jc.ErrorIsNil)
    64  	c.Assert(obtained, gc.Equals, expected)
    65  }
    66  
    67  func (s *WindowsHookSuite) TestSearchHookWindows(c *gc.C) {
    68  	restorer := envtesting.PatchValue(&version.Current.OS, version.Windows)
    69  	defer restorer()
    70  
    71  	charmDir := c.MkDir()
    72  	makeCharm(c, hookSpec{
    73  		dir:  "hooks",
    74  		name: "something-happened.ps1",
    75  		perm: 0755,
    76  	}, charmDir)
    77  
    78  	obtained, err := runner.SearchHook(charmDir, filepath.Join("hooks", "something-happened"))
    79  	c.Assert(err, jc.ErrorIsNil)
    80  	c.Assert(obtained, gc.Equals, filepath.Join(charmDir, "hooks", "something-happened.ps1"))
    81  }
    82  
    83  func (s *WindowsHookSuite) TestSearchHookWindowsError(c *gc.C) {
    84  	restorer := envtesting.PatchValue(&version.Current.OS, version.Windows)
    85  	defer restorer()
    86  
    87  	charmDir := c.MkDir()
    88  	makeCharm(c, hookSpec{
    89  		dir:  "hooks",
    90  		name: "something-happened.linux",
    91  		perm: 0755,
    92  	}, charmDir)
    93  
    94  	obtained, err := runner.SearchHook(charmDir, filepath.Join("hooks", "something-happened"))
    95  	c.Assert(err, gc.ErrorMatches, "hooks/something-happened does not exist")
    96  	c.Assert(obtained, gc.Equals, "")
    97  }