github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/tools/cmd/bundle/main_test.go (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package main 6 7 import ( 8 "bytes" 9 "io/ioutil" 10 "os/exec" 11 "runtime" 12 "testing" 13 14 "golang.org/x/tools/go/buildutil" 15 ) 16 17 func TestBundle(t *testing.T) { 18 load := func(name string) string { 19 data, err := ioutil.ReadFile(name) 20 if err != nil { 21 t.Fatal(err) 22 } 23 return string(data) 24 } 25 26 ctxt = buildutil.FakeContext(map[string]map[string]string{ 27 "initial": { 28 "a.go": load("testdata/src/initial/a.go"), 29 "b.go": load("testdata/src/initial/b.go"), 30 }, 31 "fmt": { 32 "print.go": `package fmt; func Println(...interface{})`, 33 }, 34 }) 35 36 var out bytes.Buffer 37 if err := bundle(&out, "initial", "dest", "prefix"); err != nil { 38 t.Fatal(err) 39 } 40 if got, want := out.String(), load("testdata/out.golden"); got != want { 41 t.Errorf("-- got --\n%s\n-- want --\n%s\n-- diff --", got, want) 42 43 if err := ioutil.WriteFile("testdata/out.got", out.Bytes(), 0644); err != nil { 44 t.Fatal(err) 45 } 46 t.Log(diff("testdata/out.got", "testdata/out.golden")) 47 } 48 } 49 50 func diff(a, b string) string { 51 var cmd *exec.Cmd 52 switch runtime.GOOS { 53 case "plan9": 54 cmd = exec.Command("/bin/diff", "-c", a, b) 55 default: 56 cmd = exec.Command("/usr/bin/diff", "-u", a, b) 57 } 58 var out bytes.Buffer 59 cmd.Stdout = &out 60 cmd.Stderr = &out 61 cmd.Run() // nonzero exit is expected 62 if out.Len() == 0 { 63 return "(failed to compute diff)" 64 } 65 return out.String() 66 }