Files
ent/entc/plugin/plugin_test.go
facebook-github-bot 267e3c15bd Initial commit
fbshipit-source-id: c79a38536e3c128dce1b2948615b72ec9779ed22
2019-06-16 04:37:51 -07:00

46 lines
966 B
Go

package plugin
import (
"bytes"
"fmt"
"os"
"os/exec"
"testing"
"github.com/stretchr/testify/require"
)
func TestExecInvalid(t *testing.T) {
err := Exec("./testdata/notfound", nil)
require.Error(t, err, "plugin not found")
dest := "invalid.so"
require.NoError(t, buildPlg("./testdata/invalid", dest))
defer os.Remove(dest)
err = Exec(dest, nil)
require.Error(t, err, "does not implement the entc/plugin interface")
}
func TestExecValid(t *testing.T) {
err := Exec("./testdata/notfound", nil)
require.Error(t, err, "plugin not found")
dest := "valid.so"
require.NoError(t, buildPlg("./testdata/valid", dest))
defer os.Remove(dest)
err = Exec(dest, nil)
require.NoError(t, err)
}
func buildPlg(src, dest string) error {
out := bytes.NewBuffer(nil)
cmd := exec.Command("go", "build", "-o", dest, "-buildmode", "plugin", src)
cmd.Stderr = out
if err := cmd.Run(); err != nil {
return fmt.Errorf("entc/plugin: %s", out)
}
return nil
}