From 6eb4b4604c79b0052cb7ab8ac97c9b90fa61e918 Mon Sep 17 00:00:00 2001 From: Chris Date: Wed, 15 Nov 2017 16:08:02 -0600 Subject: improve rpcplugin tests (#7837) --- plugin/rpcplugin/process_test.go | 7 +++++++ plugin/rpcplugin/supervisor_test.go | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/plugin/rpcplugin/process_test.go b/plugin/rpcplugin/process_test.go index f58a19107..473cc026b 100644 --- a/plugin/rpcplugin/process_test.go +++ b/plugin/rpcplugin/process_test.go @@ -62,3 +62,10 @@ func TestProcess(t *testing.T) { assert.Equal(t, "ping", string(b[:4])) require.NoError(t, p.Wait()) } + +func TestInvalidProcess(t *testing.T) { + p, ipc, err := NewProcess(context.Background(), "thisfileshouldnotexist") + require.Nil(t, p) + require.Nil(t, ipc) + require.Error(t, err) +} diff --git a/plugin/rpcplugin/supervisor_test.go b/plugin/rpcplugin/supervisor_test.go index bad38b2d7..6a2b5ec5d 100644 --- a/plugin/rpcplugin/supervisor_test.go +++ b/plugin/rpcplugin/supervisor_test.go @@ -56,6 +56,21 @@ func TestSupervisor_InvalidExecutablePath(t *testing.T) { assert.Error(t, err) } +func TestSupervisor_NonExistentExecutablePath(t *testing.T) { + dir, err := ioutil.TempDir("", "") + require.NoError(t, err) + defer os.RemoveAll(dir) + + ioutil.WriteFile(filepath.Join(dir, "plugin.json"), []byte(`{"id": "foo", "backend": {"executable": "thisfileshouldnotexist"}}`), 0600) + + bundle := model.BundleInfoForPath(dir) + supervisor, err := SupervisorProvider(bundle) + require.NotNil(t, supervisor) + require.NoError(t, err) + + require.Error(t, supervisor.Start()) +} + // If plugin development goes really wrong, let's make sure plugin activation won't block forever. func TestSupervisor_StartTimeout(t *testing.T) { dir, err := ioutil.TempDir("", "") @@ -104,6 +119,10 @@ func TestSupervisor_PluginCrash(t *testing.T) { return nil } + func (p *MyPlugin) OnDeactivate() error { + return nil + } + func main() { rpcplugin.Main(&MyPlugin{}) } -- cgit v1.2.3-1-g7c22