]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go/internal/module: fix inverted condition in MatchPathMajor
authorJay Conrod <jayconrod@google.com>
Wed, 16 Oct 2019 18:32:03 +0000 (14:32 -0400)
committerJay Conrod <jayconrod@google.com>
Wed, 16 Oct 2019 23:14:14 +0000 (23:14 +0000)
This was spotted in CL 200767. This change just ensures internal
packages match their equivalents in x/mod.

Also pulled in test added in CL 201517.

Change-Id: I51d23d62697c256548f411930fcb6bccce51bf34
Reviewed-on: https://go-review.googlesource.com/c/go/+/201497
Run-TryBot: Jay Conrod <jayconrod@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
src/cmd/go/internal/module/module.go
src/cmd/go/internal/module/module_test.go

index 5ef9fdc132b37f33f50e8e9ad5f2f6cd4017b3b4..8d24c693f30c64443bb3d88562b483d8a5035a94 100644 (file)
@@ -503,14 +503,17 @@ func splitGopkgIn(path string) (prefix, pathMajor string, ok bool) {
 // MatchPathMajor reports whether the semantic version v
 // matches the path major version pathMajor.
 //
-// MatchPathMajor returns true if and only if CheckPathMajor returns non-nil.
+// MatchPathMajor returns true if and only if CheckPathMajor returns nil.
 func MatchPathMajor(v, pathMajor string) bool {
-       return CheckPathMajor(v, pathMajor) != nil
+       return CheckPathMajor(v, pathMajor) == nil
 }
 
 // CheckPathMajor returns a non-nil error if the semantic version v
 // does not match the path major version pathMajor.
 func CheckPathMajor(v, pathMajor string) error {
+       // TODO(jayconrod): return errors or panic for invalid inputs. This function
+       // (and others) was covered by integration tests for cmd/go, and surrounding
+       // code protected against invalid inputs like non-canonical versions.
        if strings.HasPrefix(pathMajor, ".v") && strings.HasSuffix(pathMajor, "-unstable") {
                pathMajor = strings.TrimSuffix(pathMajor, "-unstable")
        }
index 8f385afe2e6d8bf2d867eafc53313248a2a475ac..e61fa9f525a2c1f3ba76313e23efd31769385727 100644 (file)
@@ -318,3 +318,26 @@ func TestUnescapePath(t *testing.T) {
                }
        }
 }
+
+func TestMatchPathMajor(t *testing.T) {
+       for _, test := range []struct {
+               v, pathMajor string
+               want         bool
+       }{
+               {"v0.0.0", "", true},
+               {"v0.0.0", "/v2", false},
+               {"v0.0.0", ".v0", true},
+               {"v0.0.0-20190510104115-cbcb75029529", ".v1", true},
+               {"v1.0.0", "/v2", false},
+               {"v1.0.0", ".v1", true},
+               {"v1.0.0", ".v1-unstable", true},
+               {"v2.0.0+incompatible", "", true},
+               {"v2.0.0", "", false},
+               {"v2.0.0", "/v2", true},
+               {"v2.0.0", ".v2", true},
+       } {
+               if got := MatchPathMajor(test.v, test.pathMajor); got != test.want {
+                       t.Errorf("MatchPathMajor(%q, %q) = %v, want %v", test.v, test.pathMajor, got, test.want)
+               }
+       }
+}