From 9090804516c39cc67639e011f12fe2ab54d1a848 Mon Sep 17 00:00:00 2001 From: Michael Matloob Date: Thu, 30 Jan 2020 16:08:23 -0500 Subject: [PATCH] go/packages: make TestOverlayDeps deterministic It had a 50/50 chance of checking the test package for the import instead of the non-test package. Find the right package before checking it now. Fixes golang/go#36908 Change-Id: I3a044d83f55093961cf5221b315a54028fdd540d Reviewed-on: https://go-review.googlesource.com/c/tools/+/217084 Run-TryBot: Michael Matloob Reviewed-by: Rebecca Stambler --- go/packages/packages_test.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/go/packages/packages_test.go b/go/packages/packages_test.go index ab3b1cd686..0cc4379906 100644 --- a/go/packages/packages_test.go +++ b/go/packages/packages_test.go @@ -983,10 +983,19 @@ func testOverlayDeps(t *testing.T, exporter packagestest.Exporter) { packages.NeedImports | packages.NeedDeps | packages.NeedTypesSizes - initial, err := packages.Load(exported.Config, fmt.Sprintf("file=%s", exported.File("golang.org/fake", "c/c.go"))) + pkgs, err := packages.Load(exported.Config, fmt.Sprintf("file=%s", exported.File("golang.org/fake", "c/c.go"))) if err != nil { t.Error(err) } + + // Find package golang.org/fake/c + sort.Slice(pkgs, func(i, j int) bool { return pkgs[i].ID < pkgs[j].ID }) + pkgc := pkgs[0] + if pkgc.ID != "golang.org/fake/c" { + t.Errorf("expected first package in sorted list to be \"golang.org/fake/c\", got %v", pkgc.ID) + } + + // Make sure golang.org/fake/c imports net/http, as per the overlay. contains := func(imports map[string]*packages.Package, wantImport string) bool { for imp := range imports { if imp == wantImport { @@ -995,11 +1004,11 @@ func testOverlayDeps(t *testing.T, exporter packagestest.Exporter) { } return false } - for _, pkg := range initial { - if !contains(pkg.Imports, "net/http") { - t.Errorf("expected %s import in %s", "net/http", pkg.ID) - } + if !contains(pkgc.Imports, "net/http") { + t.Errorf("expected import of %s in package %s, got the following imports: %v", + "net/http", pkgc.ID, pkgc.Imports) } + } func TestNewPackagesInOverlay(t *testing.T) { packagestest.TestAll(t, testNewPackagesInOverlay) }