diff --git a/cmd/bundle/main.go b/cmd/bundle/main.go index cfafff25..5f38e354 100644 --- a/cmd/bundle/main.go +++ b/cmd/bundle/main.go @@ -159,7 +159,10 @@ func main() { } } - code := bundle(args[0], *dstPath, *pkgName, *prefix) + code, err := bundle(args[0], *dstPath, *pkgName, *prefix) + if err != nil { + log.Fatal(err) + } if *outputFile != "" { err := ioutil.WriteFile(*outputFile, code, 0666) if err != nil { @@ -175,7 +178,7 @@ func main() { var ctxt = &build.Default -func bundle(src, dst, dstpkg, prefix string) []byte { +func bundle(src, dst, dstpkg, prefix string) ([]byte, error) { // Load the initial package. conf := loader.Config{ParserMode: parser.ParseComments, Build: ctxt} conf.TypeCheckFuncBodies = func(p string) bool { return p == src } @@ -183,7 +186,7 @@ func bundle(src, dst, dstpkg, prefix string) []byte { lprog, err := conf.Load() if err != nil { - log.Fatal(err) + return nil, err } info := lprog.Package(src) @@ -251,7 +254,7 @@ func bundle(src, dst, dstpkg, prefix string) []byte { for _, f := range info.Files { for _, imp := range f.Imports { if imp.Name != nil { - log.Fatalf("%s: renaming imports not supported", + return nil, fmt.Errorf("%s: renaming imports not supported", lprog.Fset.Position(imp.Pos())) } } @@ -326,7 +329,7 @@ func bundle(src, dst, dstpkg, prefix string) []byte { log.Fatalf("formatting failed: %v", err) } - return result + return result, nil } type flagFunc func(string) diff --git a/cmd/bundle/main_test.go b/cmd/bundle/main_test.go index b4d0810f..009fc99b 100644 --- a/cmd/bundle/main_test.go +++ b/cmd/bundle/main_test.go @@ -7,6 +7,7 @@ package main import ( "bytes" "io/ioutil" + "os" "os/exec" "runtime" "testing" @@ -33,17 +34,18 @@ func TestBundle(t *testing.T) { }, }) - var out bytes.Buffer - if err := bundle(&out, "initial", "dest", "prefix"); err != nil { + os.Args = os.Args[:1] // avoid e.g. -test=short in the output + out, err := bundle("initial", "github.com/dest", "dest", "prefix") + if err != nil { t.Fatal(err) } - if got, want := out.String(), load("testdata/out.golden"); got != want { + if got, want := string(out), load("testdata/out.golden"); got != want { t.Errorf("-- got --\n%s\n-- want --\n%s\n-- diff --", got, want) - if err := ioutil.WriteFile("testdata/out.got", out.Bytes(), 0644); err != nil { + if err := ioutil.WriteFile("testdata/out.got", out, 0644); err != nil { t.Fatal(err) } - t.Log(diff("testdata/out.got", "testdata/out.golden")) + t.Log(diff("testdata/out.golden", "testdata/out.got")) } } diff --git a/cmd/bundle/testdata/out.golden b/cmd/bundle/testdata/out.golden index 5153d3fc..2b1784e7 100644 --- a/cmd/bundle/testdata/out.golden +++ b/cmd/bundle/testdata/out.golden @@ -1,5 +1,5 @@ -// Code generated by golang.org/x/tools/cmd/bundle command: -// $ bundle initial dest prefix +// Code generated by golang.org/x/tools/cmd/bundle. +// $ bundle // The package doc comment //