summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan C. Mills <bcmills@google.com>2020-10-29 16:36:50 -0400
committerBryan C. Mills <bcmills@google.com>2020-10-30 18:06:13 +0000
commit6d087c807e558a7e4f7da29fd44998e6f605c27d (patch)
treed12827ab5a648dcdcbf25d4d60b73a258c2f71f0
parent8494a6243ee5c80da51da8f4e1ad4d719eddf409 (diff)
downloadgo-git-6d087c807e558a7e4f7da29fd44998e6f605c27d.tar.gz
cmd/go/internal/modload: handle NotExist errors in (*mvsReqs).Previous
Previous is used during downgrading. If the module proxy does not advertise any versions (for example, because it contains only pseudo-versions), then Previous should return "none" instead of a non-nil error. For #37438 Change-Id: I4edfec19cfeb3ffe50df4979f99a01321c442509 Reviewed-on: https://go-review.googlesource.com/c/go/+/266370 Trust: Bryan C. Mills <bcmills@google.com> Run-TryBot: Bryan C. Mills <bcmills@google.com> Reviewed-by: Jay Conrod <jayconrod@google.com> Reviewed-by: Michael Matloob <matloob@golang.org> TryBot-Result: Go Bot <gobot@golang.org>
-rw-r--r--src/cmd/go/internal/modload/mvs.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/cmd/go/internal/modload/mvs.go b/src/cmd/go/internal/modload/mvs.go
index 79ef2475b6..94373bc5f3 100644
--- a/src/cmd/go/internal/modload/mvs.go
+++ b/src/cmd/go/internal/modload/mvs.go
@@ -7,6 +7,7 @@ package modload
import (
"context"
"errors"
+ "os"
"sort"
"cmd/go/internal/modfetch"
@@ -102,6 +103,9 @@ func (*mvsReqs) Previous(m module.Version) (module.Version, error) {
// TODO(golang.org/issue/38714): thread tracing context through MVS.
list, err := versions(context.TODO(), m.Path, CheckAllowed)
if err != nil {
+ if errors.Is(err, os.ErrNotExist) {
+ return module.Version{Path: m.Path, Version: "none"}, nil
+ }
return module.Version{}, err
}
i := sort.Search(len(list), func(i int) bool { return semver.Compare(list[i], m.Version) >= 0 })