1
2
3
4
5 package gccgoimporter
6
7 import (
8 "go/types"
9 "testing"
10 )
11
12
13
14
15
16
17 var importablePackages = [...]string{
18 "archive/tar",
19 "archive/zip",
20 "bufio",
21 "bytes",
22 "compress/bzip2",
23 "compress/flate",
24 "compress/gzip",
25 "compress/lzw",
26 "compress/zlib",
27 "container/heap",
28 "container/list",
29 "container/ring",
30 "crypto/aes",
31 "crypto/cipher",
32 "crypto/des",
33 "crypto/dsa",
34 "crypto/ecdsa",
35 "crypto/elliptic",
36 "crypto",
37 "crypto/hmac",
38 "crypto/md5",
39 "crypto/rand",
40 "crypto/rc4",
41 "crypto/rsa",
42 "crypto/sha1",
43 "crypto/sha256",
44 "crypto/sha512",
45 "crypto/subtle",
46 "crypto/tls",
47 "crypto/x509",
48 "crypto/x509/pkix",
49 "database/sql/driver",
50 "database/sql",
51 "debug/dwarf",
52 "debug/elf",
53 "debug/gosym",
54 "debug/macho",
55 "debug/pe",
56 "encoding/ascii85",
57 "encoding/asn1",
58 "encoding/base32",
59 "encoding/base64",
60 "encoding/binary",
61 "encoding/csv",
62 "encoding/gob",
63
64 "encoding/hex",
65 "encoding/json",
66 "encoding/pem",
67 "encoding/xml",
68 "errors",
69 "expvar",
70 "flag",
71 "fmt",
72 "go/ast",
73 "go/build",
74 "go/doc",
75
76 "go/parser",
77 "go/printer",
78 "go/scanner",
79 "go/token",
80 "hash/adler32",
81 "hash/crc32",
82 "hash/crc64",
83 "hash/fnv",
84 "hash",
85 "html",
86 "html/template",
87 "image/color",
88
89 "image/draw",
90 "image/gif",
91 "image",
92 "image/jpeg",
93 "image/png",
94 "index/suffixarray",
95 "io",
96 "io/ioutil",
97 "log",
98 "log/syslog",
99 "math/big",
100 "math/cmplx",
101 "math",
102 "math/rand",
103 "mime",
104 "mime/multipart",
105 "net",
106 "net/http/cgi",
107
108 "net/http/fcgi",
109 "net/http",
110 "net/http/httptest",
111 "net/http/httputil",
112 "net/http/pprof",
113 "net/mail",
114 "net/rpc",
115 "net/rpc/jsonrpc",
116 "net/smtp",
117 "net/textproto",
118 "net/url",
119 "os/exec",
120 "os",
121 "os/signal",
122 "os/user",
123 "path/filepath",
124 "path",
125 "reflect",
126 "regexp",
127 "regexp/syntax",
128 "runtime/debug",
129 "runtime",
130 "runtime/pprof",
131 "sort",
132 "strconv",
133 "strings",
134 "sync/atomic",
135 "sync",
136 "syscall",
137 "testing",
138 "testing/iotest",
139 "testing/quick",
140 "text/scanner",
141 "text/tabwriter",
142 "text/template",
143 "text/template/parse",
144 "time",
145 "unicode",
146 "unicode/utf16",
147 "unicode/utf8",
148 }
149
150 func TestInstallationImporter(t *testing.T) {
151
152 gpath := gccgoPath()
153 if gpath == "" {
154 t.Skip("This test needs gccgo")
155 }
156
157 var inst GccgoInstallation
158 err := inst.InitFromDriver(gpath)
159 if err != nil {
160 t.Fatal(err)
161 }
162 imp := inst.GetImporter(nil, nil)
163
164
165
166 pkgMap := make(map[string]*types.Package)
167 for _, pkg := range importablePackages {
168 _, err = imp(pkgMap, pkg, ".", nil)
169 if err != nil {
170 t.Error(err)
171 }
172 }
173
174 for _, pkg := range importablePackages {
175 _, err = imp(make(map[string]*types.Package), pkg, ".", nil)
176 if err != nil {
177 t.Error(err)
178 }
179 }
180
181
182 for _, test := range [...]importerTest{
183 {pkgpath: "io", name: "Reader", want: "type Reader interface{Read(p []byte) (n int, err error)}"},
184 {pkgpath: "io", name: "ReadWriter", want: "type ReadWriter interface{Reader; Writer}"},
185 {pkgpath: "math", name: "Pi", want: "const Pi untyped float"},
186 {pkgpath: "math", name: "Sin", want: "func Sin(x float64) float64"},
187 {pkgpath: "sort", name: "Search", want: "func Search(n int, f func(int) bool) int"},
188 {pkgpath: "unsafe", name: "Pointer", want: "type Pointer"},
189 } {
190 runImporterTest(t, imp, nil, &test)
191 }
192 }
193
View as plain text