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  }