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 }