func (s *S) TestPluginLookup(c *check.C) { fexec := exectest.FakeExecutor{} execut = &fexec defer func() { execut = nil }() manager := buildManager("tsuru") manager.Run([]string{"myplugin"}) pluginPath := cmd.JoinWithUserDir(".tsuru", "plugins", "myplugin") c.Assert(fexec.ExecutedCmd(pluginPath, []string{}), check.Equals, true) }
func (s *S) TestOpen(c *check.C) { fexec := exectest.FakeExecutor{} execut = &fexec defer func() { execut = nil }() url := "http://someurl" err := open(url) c.Assert(err, check.IsNil) if runtime.GOOS == "linux" { c.Assert(fexec.ExecutedCmd("xdg-open", []string{url}), check.Equals, true) } else { c.Assert(fexec.ExecutedCmd("open", []string{url}), check.Equals, true) } }
func (s *S) TestPluginWithArgs(c *check.C) { fexec := exectest.FakeExecutor{} execut = &fexec defer func() { execut = nil }() context := cmd.Context{ Args: []string{"myplugin", "ble", "bla"}, } client := cmd.NewClient(nil, nil, manager) command := plugin{} err := command.Run(&context, client) c.Assert(err, check.IsNil) pluginPath := cmd.JoinWithUserDir(".tsuru", "plugins", "myplugin") c.Assert(fexec.ExecutedCmd(pluginPath, []string{"ble", "bla"}), check.Equals, true) }
func (s *S) TestPlugin(c *check.C) { fexec := exectest.FakeExecutor{ Output: map[string][][]byte{ "a b": {[]byte("hello world")}, }, } execut = &fexec defer func() { execut = nil }() var buf bytes.Buffer context := cmd.Context{ Args: []string{"myplugin", "a", "b"}, Stdout: &buf, Stderr: &buf, } client := cmd.NewClient(nil, nil, manager) command := plugin{} err := command.Run(&context, client) c.Assert(err, check.IsNil) pluginPath := cmd.JoinWithUserDir(".tsuru", "plugins", "myplugin") c.Assert(fexec.ExecutedCmd(pluginPath, []string{"a", "b"}), check.Equals, true) c.Assert(buf.String(), check.Equals, "hello world") commands := fexec.GetCommands(pluginPath) c.Assert(commands, check.HasLen, 1) target, err := cmd.ReadTarget() c.Assert(err, check.IsNil) token, err := cmd.ReadToken() c.Assert(err, check.IsNil) envs := os.Environ() tsuruEnvs := []string{ fmt.Sprintf("TSURU_TARGET=%s/", target), fmt.Sprintf("TSURU_TOKEN=%s", token), "TSURU_PLUGIN_NAME=myplugin", } envs = append(envs, tsuruEnvs...) c.Assert(commands[0].GetEnvs(), check.DeepEquals, envs) }