Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(796)

Side by Side Diff: third_party/go/src/golang.org/x/mobile/bind/bind_test.go

Issue 1275153002: Remove third_party/golang.org/x/mobile as it is no longer used with Go 1.5. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Remove golang.org/x/mobile Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 package bind
2
3 import (
4 "bytes"
5 "flag"
6 "go/ast"
7 "go/parser"
8 "go/token"
9 "io/ioutil"
10 "os"
11 "os/exec"
12 "path/filepath"
13 "runtime"
14 "strings"
15 "testing"
16
17 _ "golang.org/x/tools/go/gcimporter"
18 "golang.org/x/tools/go/types"
19 )
20
21 var updateFlag = flag.Bool("update", false, "Update the golden files.")
22
23 var tests = []string{
24 "testdata/basictypes.go",
25 "testdata/structs.go",
26 "testdata/interfaces.go",
27 }
28
29 var fset = token.NewFileSet()
30
31 func typeCheck(t *testing.T, filename string) *types.Package {
32 f, err := parser.ParseFile(fset, filename, nil, parser.AllErrors)
33 if err != nil {
34 t.Fatalf("%s: %v", filename, err)
35 }
36
37 pkgName := filepath.Base(filename)
38 pkgName = strings.TrimSuffix(pkgName, ".go")
39
40 // typecheck and collect typechecker errors
41 var conf types.Config
42 conf.Error = func(err error) {
43 t.Error(err)
44 }
45 pkg, err := conf.Check(pkgName, fset, []*ast.File{f}, nil)
46 if err != nil {
47 t.Fatal(err)
48 }
49 return pkg
50 }
51
52 // diff runs the command "diff a b" and returns its output
53 func diff(a, b string) string {
54 var buf bytes.Buffer
55 var cmd *exec.Cmd
56 switch runtime.GOOS {
57 case "plan9":
58 cmd = exec.Command("/bin/diff", "-c", a, b)
59 default:
60 cmd = exec.Command("/usr/bin/diff", "-u", a, b)
61 }
62 cmd.Stdout = &buf
63 cmd.Stderr = &buf
64 cmd.Run()
65 return buf.String()
66 }
67
68 func writeTempFile(t *testing.T, name string, contents []byte) string {
69 f, err := ioutil.TempFile("", name)
70 if err != nil {
71 t.Fatal(err)
72 }
73 if _, err := f.Write(contents); err != nil {
74 t.Fatal(err)
75 }
76 if err := f.Close(); err != nil {
77 t.Fatal(err)
78 }
79 return f.Name()
80 }
81
82 func TestGenJava(t *testing.T) {
83 for _, filename := range tests {
84 var buf bytes.Buffer
85 pkg := typeCheck(t, filename)
86 if err := GenJava(&buf, fset, pkg); err != nil {
87 t.Errorf("%s: %v", filename, err)
88 continue
89 }
90 out := writeTempFile(t, "java", buf.Bytes())
91 defer os.Remove(out)
92 golden := filename[:len(filename)-len(".go")] + ".java.golden"
93 if diffstr := diff(golden, out); diffstr != "" {
94 t.Errorf("%s: does not match Java golden:\n%s", filename , diffstr)
95
96 if *updateFlag {
97 t.Logf("Updating %s...", golden)
98 if err := exec.Command("/bin/cp", out, golden).R un(); err != nil {
99 t.Errorf("Update failed: %s", err)
100 }
101 }
102
103 }
104 }
105 }
106
107 func TestGenGo(t *testing.T) {
108 for _, filename := range tests {
109 var buf bytes.Buffer
110 pkg := typeCheck(t, filename)
111 if err := GenGo(&buf, fset, pkg); err != nil {
112 t.Errorf("%s: %v", filename, err)
113 continue
114 }
115 out := writeTempFile(t, "go", buf.Bytes())
116 defer os.Remove(out)
117 golden := filename + ".golden"
118 if diffstr := diff(golden, out); diffstr != "" {
119 t.Errorf("%s: does not match Java golden:\n%s", filename , diffstr)
120
121 if *updateFlag {
122 t.Logf("Updating %s...", golden)
123 if err := exec.Command("/bin/cp", out, golden).R un(); err != nil {
124 t.Errorf("Update failed: %s", err)
125 }
126 }
127 }
128 }
129 }
OLDNEW
« no previous file with comments | « third_party/go/src/golang.org/x/mobile/bind/bind.go ('k') | third_party/go/src/golang.org/x/mobile/bind/gengo.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698