.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.1.1-0.20210319172145-bda8f5cee399 / go / internal / gccgoimporter / gccgoinstallation_test.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.1.1-0.20210319172145-bda8f5cee399/go/internal/gccgoimporter/gccgoinstallation_test.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.1.1-0.20210319172145-bda8f5cee399/go/internal/gccgoimporter/gccgoinstallation_test.go
new file mode 100644 (file)
index 0000000..f5bc22b
--- /dev/null
@@ -0,0 +1,195 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Except for this comment, this file is a verbatim copy of the file
+// with the same name in $GOROOT/src/go/internal/gccgoimporter.
+
+package gccgoimporter
+
+import (
+       "go/types"
+       "testing"
+)
+
+// importablePackages is a list of packages that we verify that we can
+// import. This should be all standard library packages in all relevant
+// versions of gccgo. Note that since gccgo follows a different release
+// cycle, and since different systems have different versions installed,
+// we can't use the last-two-versions rule of the gc toolchain.
+var importablePackages = [...]string{
+       "archive/tar",
+       "archive/zip",
+       "bufio",
+       "bytes",
+       "compress/bzip2",
+       "compress/flate",
+       "compress/gzip",
+       "compress/lzw",
+       "compress/zlib",
+       "container/heap",
+       "container/list",
+       "container/ring",
+       "crypto/aes",
+       "crypto/cipher",
+       "crypto/des",
+       "crypto/dsa",
+       "crypto/ecdsa",
+       "crypto/elliptic",
+       "crypto",
+       "crypto/hmac",
+       "crypto/md5",
+       "crypto/rand",
+       "crypto/rc4",
+       "crypto/rsa",
+       "crypto/sha1",
+       "crypto/sha256",
+       "crypto/sha512",
+       "crypto/subtle",
+       "crypto/tls",
+       "crypto/x509",
+       "crypto/x509/pkix",
+       "database/sql/driver",
+       "database/sql",
+       "debug/dwarf",
+       "debug/elf",
+       "debug/gosym",
+       "debug/macho",
+       "debug/pe",
+       "encoding/ascii85",
+       "encoding/asn1",
+       "encoding/base32",
+       "encoding/base64",
+       "encoding/binary",
+       "encoding/csv",
+       "encoding/gob",
+       // "encoding", // Added in GCC 4.9.
+       "encoding/hex",
+       "encoding/json",
+       "encoding/pem",
+       "encoding/xml",
+       "errors",
+       "expvar",
+       "flag",
+       "fmt",
+       "go/ast",
+       "go/build",
+       "go/doc",
+       // "go/format", // Added in GCC 4.8.
+       "go/parser",
+       "go/printer",
+       "go/scanner",
+       "go/token",
+       "hash/adler32",
+       "hash/crc32",
+       "hash/crc64",
+       "hash/fnv",
+       "hash",
+       "html",
+       "html/template",
+       "image/color",
+       // "image/color/palette", // Added in GCC 4.9.
+       "image/draw",
+       "image/gif",
+       "image",
+       "image/jpeg",
+       "image/png",
+       "index/suffixarray",
+       "io",
+       "io/ioutil",
+       "log",
+       "log/syslog",
+       "math/big",
+       "math/cmplx",
+       "math",
+       "math/rand",
+       "mime",
+       "mime/multipart",
+       "net",
+       "net/http/cgi",
+       // "net/http/cookiejar", // Added in GCC 4.8.
+       "net/http/fcgi",
+       "net/http",
+       "net/http/httptest",
+       "net/http/httputil",
+       "net/http/pprof",
+       "net/mail",
+       "net/rpc",
+       "net/rpc/jsonrpc",
+       "net/smtp",
+       "net/textproto",
+       "net/url",
+       "os/exec",
+       "os",
+       "os/signal",
+       "os/user",
+       "path/filepath",
+       "path",
+       "reflect",
+       "regexp",
+       "regexp/syntax",
+       "runtime/debug",
+       "runtime",
+       "runtime/pprof",
+       "sort",
+       "strconv",
+       "strings",
+       "sync/atomic",
+       "sync",
+       "syscall",
+       "testing",
+       "testing/iotest",
+       "testing/quick",
+       "text/scanner",
+       "text/tabwriter",
+       "text/template",
+       "text/template/parse",
+       "time",
+       "unicode",
+       "unicode/utf16",
+       "unicode/utf8",
+}
+
+func TestInstallationImporter(t *testing.T) {
+       // This test relies on gccgo being around.
+       gpath := gccgoPath()
+       if gpath == "" {
+               t.Skip("This test needs gccgo")
+       }
+
+       var inst GccgoInstallation
+       err := inst.InitFromDriver(gpath)
+       if err != nil {
+               t.Fatal(err)
+       }
+       imp := inst.GetImporter(nil, nil)
+
+       // Ensure we don't regress the number of packages we can parse. First import
+       // all packages into the same map and then each individually.
+       pkgMap := make(map[string]*types.Package)
+       for _, pkg := range importablePackages {
+               _, err = imp(pkgMap, pkg, ".", nil)
+               if err != nil {
+                       t.Error(err)
+               }
+       }
+
+       for _, pkg := range importablePackages {
+               _, err = imp(make(map[string]*types.Package), pkg, ".", nil)
+               if err != nil {
+                       t.Error(err)
+               }
+       }
+
+       // Test for certain specific entities in the imported data.
+       for _, test := range [...]importerTest{
+               {pkgpath: "io", name: "Reader", want: "type Reader interface{Read(p []byte) (n int, err error)}"},
+               {pkgpath: "io", name: "ReadWriter", want: "type ReadWriter interface{Reader; Writer}"},
+               {pkgpath: "math", name: "Pi", want: "const Pi untyped float"},
+               {pkgpath: "math", name: "Sin", want: "func Sin(x float64) float64"},
+               {pkgpath: "sort", name: "Ints", want: "func Ints(a []int)"},
+               {pkgpath: "unsafe", name: "Pointer", want: "type Pointer"},
+       } {
+               runImporterTest(t, imp, nil, &test)
+       }
+}