tg.grepStderr("not an importable package", "did not detect import main")
}
+func TestPluginNonMain(t *testing.T) {
+ wd, err := os.Getwd()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ pkg := filepath.Join(wd, "testdata", "testdep", "p2")
+
+ tg := testgo(t)
+ defer tg.cleanup()
+
+ tg.runFail("build", "-buildmode=plugin", pkg)
+}
+
func TestTestEmpty(t *testing.T) {
if !canRace {
t.Skip("no race detector")
return res
}
+func oneMainPkg(pkgs []*load.Package) []*load.Package {
+ if len(pkgs) != 1 || pkgs[0].Name != "main" {
+ base.Fatalf("-buildmode=%s requires exactly one main package", cfg.BuildBuildmode)
+ }
+ return pkgs
+}
+
var pkgsFilter = func(pkgs []*load.Package) []*load.Package { return pkgs }
func BuildModeInit() {
case "archive":
pkgsFilter = pkgsNotMain
case "c-archive":
- pkgsFilter = func(p []*load.Package) []*load.Package {
- if len(p) != 1 || p[0].Name != "main" {
- base.Fatalf("-buildmode=c-archive requires exactly one main package")
- }
- return p
- }
+ pkgsFilter = oneMainPkg
switch platform {
case "darwin/arm", "darwin/arm64":
codegenArg = "-shared"
}
ldBuildmode = "shared"
case "plugin":
- pkgsFilter = pkgsMain
+ pkgsFilter = oneMainPkg
if gccgo {
codegenArg = "-fPIC"
} else {
return
}
+ pkgs = pkgsFilter(load.Packages(args))
+
var a *Action
if cfg.BuildBuildmode == "shared" {
- pkgs := pkgsFilter(load.Packages(args))
if libName, err := libname(args, pkgs); err != nil {
base.Fatalf("%s", err.Error())
} else {
}
} else {
a = &Action{}
- for _, p := range pkgsFilter(load.Packages(args)) {
+ for _, p := range pkgs {
a.Deps = append(a.Deps, b.Action(ModeBuild, depMode, p))
}
}