modfile: ensure that Cleanup removes extraneous entries after SetRequire
Updates golang/go#34822
Change-Id: If6981c8673c2843f5075d6d9a478bcf80f26e2fb
Reviewed-on: https://go-review.googlesource.com/c/mod/+/204821
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
diff --git a/modfile/rule.go b/modfile/rule.go
index 95fefec..66b08d9 100644
--- a/modfile/rule.go
+++ b/modfile/rule.go
@@ -555,6 +555,8 @@
if v, ok := need[r.Mod.Path]; ok {
r.Mod.Version = v
r.Indirect = indirect[r.Mod.Path]
+ } else {
+ *r = Require{}
}
}
diff --git a/modfile/rule_test.go b/modfile/rule_test.go
index 73e3386..f009f0b 100644
--- a/modfile/rule_test.go
+++ b/modfile/rule_test.go
@@ -75,6 +75,7 @@
x.y/b v1.2.3
x.y/a v1.2.3
+ x.y/d v1.2.3
)
`,
[]struct {
@@ -158,6 +159,11 @@
if !bytes.Equal(out, golden) {
t.Errorf("have:\n%s\nwant:\n%s", out, golden)
}
+
+ f.Cleanup()
+ if len(f.Require) != len(mods) {
+ t.Errorf("after Cleanup, len(Require) = %v; want %v", len(f.Require), len(mods))
+ }
})
}
}