go/packages: skip TestLoadImportsC when Go has been built without cgo
This test is unsurprisingly failing on the nocgo builder because the cgo packages don't exist on those builders. Updates golang/go#28040 Change-Id: I633b73bb48e76824645e4e8dd141fb42c9adc19f Reviewed-on: https://go-review.googlesource.com/c/140121 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
59602fdee8
commit
e60d0f5bfd
|
@ -282,52 +282,6 @@ func TestLoadImportsTestVariants(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestLoadImportsC(t *testing.T) {
|
|
||||||
// This test checks that when a package depends on the
|
|
||||||
// test variant of "syscall", "unsafe", or "runtime/cgo", that dependency
|
|
||||||
// is not removed when those packages are added when it imports "C".
|
|
||||||
//
|
|
||||||
// For this test to work, the external test of syscall must have a dependency
|
|
||||||
// on net, and net must import "syscall" and "C".
|
|
||||||
if runtime.GOOS == "windows" {
|
|
||||||
t.Skipf("skipping on windows; packages on windows do not satisfy conditions for test.")
|
|
||||||
}
|
|
||||||
if runtime.GOOS == "plan9" {
|
|
||||||
// See https://github.com/golang/go/issues/27100.
|
|
||||||
t.Skip(`skipping on plan9; for some reason "net [syscall.test]" is not loaded`)
|
|
||||||
}
|
|
||||||
|
|
||||||
cfg := &packages.Config{
|
|
||||||
Mode: packages.LoadImports,
|
|
||||||
Tests: true,
|
|
||||||
}
|
|
||||||
initial, err := packages.Load(cfg, "syscall", "net")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("failed to load imports: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
_, all := importGraph(initial)
|
|
||||||
|
|
||||||
for _, test := range []struct {
|
|
||||||
pattern string
|
|
||||||
wantImport string // an import to check for
|
|
||||||
}{
|
|
||||||
{"net", "syscall:syscall"},
|
|
||||||
{"net [syscall.test]", "syscall:syscall [syscall.test]"},
|
|
||||||
{"syscall_test [syscall.test]", "net:net [syscall.test]"},
|
|
||||||
} {
|
|
||||||
// Test the import paths.
|
|
||||||
pkg := all[test.pattern]
|
|
||||||
if pkg == nil {
|
|
||||||
t.Errorf("package %q not loaded", test.pattern)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if imports := strings.Join(imports(pkg), " "); !strings.Contains(imports, test.wantImport) {
|
|
||||||
t.Errorf("package %q: got \n%s, \nwant to have %s", test.pattern, imports, test.wantImport)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestLoadAbsolutePath(t *testing.T) {
|
func TestLoadAbsolutePath(t *testing.T) {
|
||||||
tmp, cleanup := makeTree(t, map[string]string{
|
tmp, cleanup := makeTree(t, map[string]string{
|
||||||
"gopatha/src/a/a.go": `package a`,
|
"gopatha/src/a/a.go": `package a`,
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
// Copyright 2018 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.
|
||||||
|
|
||||||
|
// +build cgo
|
||||||
|
|
||||||
|
package packages_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"golang.org/x/tools/go/packages"
|
||||||
|
"runtime"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestLoadImportsC(t *testing.T) {
|
||||||
|
// This test checks that when a package depends on the
|
||||||
|
// test variant of "syscall", "unsafe", or "runtime/cgo", that dependency
|
||||||
|
// is not removed when those packages are added when it imports "C".
|
||||||
|
//
|
||||||
|
// For this test to work, the external test of syscall must have a dependency
|
||||||
|
// on net, and net must import "syscall" and "C".
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
t.Skipf("skipping on windows; packages on windows do not satisfy conditions for test.")
|
||||||
|
}
|
||||||
|
if runtime.GOOS == "plan9" {
|
||||||
|
// See https://github.com/golang/go/issues/27100.
|
||||||
|
t.Skip(`skipping on plan9; for some reason "net [syscall.test]" is not loaded`)
|
||||||
|
}
|
||||||
|
|
||||||
|
cfg := &packages.Config{
|
||||||
|
Mode: packages.LoadImports,
|
||||||
|
Tests: true,
|
||||||
|
}
|
||||||
|
initial, err := packages.Load(cfg, "syscall", "net")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to load imports: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, all := importGraph(initial)
|
||||||
|
|
||||||
|
for _, test := range []struct {
|
||||||
|
pattern string
|
||||||
|
wantImport string // an import to check for
|
||||||
|
}{
|
||||||
|
{"net", "syscall:syscall"},
|
||||||
|
{"net [syscall.test]", "syscall:syscall [syscall.test]"},
|
||||||
|
{"syscall_test [syscall.test]", "net:net [syscall.test]"},
|
||||||
|
} {
|
||||||
|
// Test the import paths.
|
||||||
|
pkg := all[test.pattern]
|
||||||
|
if pkg == nil {
|
||||||
|
t.Errorf("package %q not loaded", test.pattern)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if imports := strings.Join(imports(pkg), " "); !strings.Contains(imports, test.wantImport) {
|
||||||
|
t.Errorf("package %q: got \n%s, \nwant to have %s", test.pattern, imports, test.wantImport)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue