go/packages/packagestest: reflect new modules.txt requirements

To unblock CL 572200 failed tests, we need to update testIssue37629.

Change-Id: I765f71e873897a06c47162c4a84baddcb3fb0bc0
Reviewed-on: https://go-review.googlesource.com/c/tools/+/581755
Reviewed-by: Alan Donovan <adonovan@google.com>
Reviewed-by: Michael Matloob <matloob@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/go/packages/packages_test.go b/go/packages/packages_test.go
index 6acb33d..294f058 100644
--- a/go/packages/packages_test.go
+++ b/go/packages/packages_test.go
@@ -2432,11 +2432,19 @@
 
 	exported := packagestest.Export(t, exporter, []packagestest.Module{{
 		Name: "golang.org/fake",
-		Files: map[string]interface{}{
+		Files: map[string]any{
 			"c/c2.go":             `package c`,
 			"a/a.go":              `package a; import "b.com/b"; const A = b.B`,
 			"vendor/b.com/b/b.go": `package b; const B = 4`,
-		}}})
+			"vendor/modules.txt": `# b.com/b v1.0.0
+## explicit
+b.com/b`,
+		}}, {
+		Name: "b.com/b@v1.0.0",
+		Files: map[string]any{
+			"arbitrary.txt": "",
+		}},
+	})
 	rootDir := filepath.Dir(filepath.Dir(exported.File("golang.org/fake", "a/a.go")))
 	exported.Config.Overlay = map[string][]byte{
 		filepath.Join(rootDir, "c/c.go"): []byte(`package c; import "golang.org/fake/a"; const C = a.A`),
diff --git a/go/packages/packagestest/modules.go b/go/packages/packagestest/modules.go
index 089848c..0c8d3d8 100644
--- a/go/packages/packagestest/modules.go
+++ b/go/packages/packagestest/modules.go
@@ -5,6 +5,7 @@
 package packagestest
 
 import (
+	"bytes"
 	"context"
 	"fmt"
 	"os"
@@ -98,7 +99,8 @@
 	}
 
 	exported.written[exported.primary]["go.mod"] = filepath.Join(primaryDir, "go.mod")
-	primaryGomod := "module " + exported.primary + "\nrequire (\n"
+	var primaryGomod bytes.Buffer
+	fmt.Fprintf(&primaryGomod, "module %s\nrequire (\n", exported.primary)
 	for other := range exported.written {
 		if other == exported.primary {
 			continue
@@ -110,10 +112,10 @@
 			other = v.module
 			version = v.version
 		}
-		primaryGomod += fmt.Sprintf("\t%v %v\n", other, version)
+		fmt.Fprintf(&primaryGomod, "\t%v %v\n", other, version)
 	}
-	primaryGomod += ")\n"
-	if err := os.WriteFile(filepath.Join(primaryDir, "go.mod"), []byte(primaryGomod), 0644); err != nil {
+	fmt.Fprintf(&primaryGomod, ")\n")
+	if err := os.WriteFile(filepath.Join(primaryDir, "go.mod"), primaryGomod.Bytes(), 0644); err != nil {
 		return err
 	}