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) {
|
||||
tmp, cleanup := makeTree(t, map[string]string{
|
||||
"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