| 130 | } |
| 131 | |
| 132 | func TestWrapIncompatiblePlugins(t *testing.T) { |
| 133 | tmpDir := test.NewTmpDir("gotify_testwrapincompatibleplugins") |
| 134 | defer tmpDir.Clean() |
| 135 | for i, modulePath := range []string{ |
| 136 | "github.com/gotify/server/v2/plugin/testing/broken/noinstance", |
| 137 | "github.com/gotify/server/v2/plugin/testing/broken/nothing", |
| 138 | "github.com/gotify/server/v2/plugin/testing/broken/unknowninfo", |
| 139 | "github.com/gotify/server/v2/plugin/testing/broken/malformedconstructor", |
| 140 | } { |
| 141 | fName := tmpDir.Path(fmt.Sprintf("broken_%d.so", i)) |
| 142 | exec.Command("go", "get", "-d").Run() |
| 143 | goBuildFlags := []string{"build", "-buildmode=plugin", "-o=" + fName} |
| 144 | goBuildFlags = append(goBuildFlags, extraGoBuildFlags...) |
| 145 | goBuildFlags = append(goBuildFlags, modulePath) |
| 146 | |
| 147 | cmd := exec.Command("go", goBuildFlags...) |
| 148 | cmd.Stderr = os.Stderr |
| 149 | assert.Nil(t, cmd.Run()) |
| 150 | |
| 151 | plugin, err := plugin.Open(fName) |
| 152 | assert.Nil(t, err) |
| 153 | _, err = Wrap(plugin) |
| 154 | assert.Error(t, err) |
| 155 | os.Remove(fName) |
| 156 | } |
| 157 | } |