github.com/coincircle/mattermost-server@v4.8.1-0.20180321182714-9d701c704416+incompatible/plugin/rpcplugin/main_test.go (about) 1 package rpcplugin 2 3 import ( 4 "context" 5 "io/ioutil" 6 "os" 7 "path/filepath" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 13 "github.com/mattermost/mattermost-server/plugin/plugintest" 14 "github.com/mattermost/mattermost-server/plugin/rpcplugin/rpcplugintest" 15 ) 16 17 func TestMain(t *testing.T) { 18 dir, err := ioutil.TempDir("", "") 19 require.NoError(t, err) 20 defer os.RemoveAll(dir) 21 22 plugin := filepath.Join(dir, "plugin.exe") 23 rpcplugintest.CompileGo(t, ` 24 package main 25 26 import ( 27 "github.com/mattermost/mattermost-server/plugin/rpcplugin" 28 ) 29 30 type MyPlugin struct {} 31 32 func main() { 33 rpcplugin.Main(&MyPlugin{}) 34 } 35 `, plugin) 36 37 ctx, cancel := context.WithCancel(context.Background()) 38 p, ipc, err := NewProcess(ctx, plugin) 39 require.NoError(t, err) 40 defer p.Wait() 41 42 muxer := NewMuxer(ipc, false) 43 defer muxer.Close() 44 45 defer cancel() 46 47 var api plugintest.API 48 49 hooks, err := ConnectMain(muxer) 50 require.NoError(t, err) 51 assert.NoError(t, hooks.OnActivate(&api)) 52 assert.NoError(t, hooks.OnDeactivate()) 53 }