go/packages: update tests to reflect changes in golang.org/cl/198459

That change changes the name of an ad-hoc package go list produces
to contain the names of the files instead of just being called
"command-line-arguments". It also means go list will report multiple
packages for an ad-hoc package that's not saved on disk that contains
multiple sources.

Update test cases that depend on this behavior.

One thing to be aware of: the change in go list (without additional
changes in go/packages) will break users depending on ad-hoc
packages with multiple files, when the any of the  files don't exist
on disk. We're not adding a work-around in this cl because overlays
aren't guaranteed to be 100% correct and the LSP doesn't need this
functionality. If this turns out to be a problem we can fix it.

Change-Id: I342cd3cb54bf35992186ee02ddd9ac316ff1db4f
Reviewed-on: https://go-review.googlesource.com/c/tools/+/199097
Run-TryBot: Michael Matloob <matloob@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Cottrell <iancottrell@google.com>
diff --git a/go/packages/packages_test.go b/go/packages/packages_test.go
index 4d10d41..e5a1b52 100644
--- a/go/packages/packages_test.go
+++ b/go/packages/packages_test.go
@@ -2039,8 +2039,8 @@
 	if len(pkgs) == 0 && runtime.GOOS == "windows" {
 		t.Skip("Issue #31344: the ad-hoc command-line-arguments package isn't created on windows")
 	}
-	if len(pkgs) != 1 || pkgs[0].PkgPath != "command-line-arguments" {
-		t.Fatalf("packages.Load: want [command-line-arguments], got %v", pkgs)
+	if len(pkgs) != 1 || (pkgs[0].PkgPath != "command-line-arguments" && pkgs[0].PkgPath != "missing.go") {
+		t.Fatalf("packages.Load: want [command-line-arguments] or [missing.go], got %v", pkgs)
 	}
 	if len(pkgs[0].Errors) == 0 {
 		t.Errorf("result of Load: want package with errors, got none: %+v", pkgs[0])
@@ -2062,25 +2062,17 @@
 		}}})
 	defer exported.Cleanup()
 	config := packages.Config{Env: append(os.Environ(), "GOPACKAGESDRIVER=off")}
-	want := "named files must be .go files"
-	pkgs, err := packages.Load(&config, "a/a.go", "b/b.c")
+	pkgs, err := packages.Load(&config, "b/b.c")
 	if err != nil {
-		// Check if the error returned is the one we expected.
-		if !strings.Contains(err.Error(), want) {
-			t.Fatalf("want error message: %s, got: %s", want, err.Error())
-		}
 		return
 	}
-	if len(pkgs) != 1 || pkgs[0].PkgPath != "command-line-arguments" {
-		t.Fatalf("packages.Load: want [command-line-arguments], got %v", pkgs)
+	// Go <1.14 calls the package command-line-arguments while Go 1.14+ uses the file names.
+	if len(pkgs) != 1 || (pkgs[0].PkgPath != "command-line-arguments" && pkgs[0].PkgPath != "b/b.c") {
+		t.Fatalf("packages.Load: want [command-line-arguments] or [b/b.c], got %v", pkgs)
 	}
 	if len(pkgs[0].Errors) != 1 {
 		t.Fatalf("result of Load: want package with one error, got: %+v", pkgs[0])
 	}
-	got := pkgs[0].Errors[0].Error()
-	if !strings.Contains(got, want) {
-		t.Fatalf("want error message: %s, got: %s", want, got)
-	}
 }
 
 func TestReturnErrorWhenUsingGoFilesInMultipleDirectories(t *testing.T) {