diff options
author | Bjørn Erik Pedersen <[email protected]> | 2021-08-26 17:24:52 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2021-08-31 11:19:51 +0200 |
commit | 0fc2ce9e4bf0524994a861b7300e4332f6f8d390 (patch) | |
tree | 61a0951413b80ff4daefcbcdbfacab3f54614b44 /htesting | |
parent | 32569285c181c8798ef594c12d3cfd7f9a252a04 (diff) | |
download | hugo-0fc2ce9e4bf0524994a861b7300e4332f6f8d390.tar.gz hugo-0fc2ce9e4bf0524994a861b7300e4332f6f8d390.zip |
Update to Go 1.17
Go 1.17 now lazy-loads dependencies when `go.mod` is version `go17`. This does not work for us for new projects started with `hugo mod init`.
Before this commit, starting a project with Go 1.17 with `hugo mod init` and then start adding dependencies with transitive dependenies to `config.toml` would treat the transitive dependencies as new, and you would potentially get a too recent version of those.
Note that this does not effect existing projects, where all dependencies are already recorded in `go.mod`.
Fixes #8930
Diffstat (limited to 'htesting')
-rw-r--r-- | htesting/test_helpers.go | 27 | ||||
-rw-r--r-- | htesting/test_helpers_test.go | 31 |
2 files changed, 58 insertions, 0 deletions
diff --git a/htesting/test_helpers.go b/htesting/test_helpers.go index 813c9bd04..9a1fe86ef 100644 --- a/htesting/test_helpers.go +++ b/htesting/test_helpers.go @@ -16,7 +16,9 @@ package htesting import ( "math/rand" "os" + "regexp" "runtime" + "strconv" "strings" "time" @@ -103,3 +105,28 @@ func IsGitHubAction() bool { func SupportsAll() bool { return IsGitHubAction() } + +// GoMinorVersion returns the minor version of the current Go version, +// e.g. 16 for Go 1.16. +func GoMinorVersion() int { + return extractMinorVersionFromGoTag(runtime.Version()) +} + +var goMinorVersionRe = regexp.MustCompile(`go1.(\d*)`) + +func extractMinorVersionFromGoTag(tag string) int { + // The tag may be on the form go1.17, go1.17.5 go1.17rc2 -- or just a commit hash. + match := goMinorVersionRe.FindStringSubmatch(tag) + + if len(match) == 2 { + i, err := strconv.Atoi(match[1]) + if err != nil { + return -1 + } + return i + } + + // a commit hash, not useful. + return -1 + +} diff --git a/htesting/test_helpers_test.go b/htesting/test_helpers_test.go new file mode 100644 index 000000000..3e767ac9d --- /dev/null +++ b/htesting/test_helpers_test.go @@ -0,0 +1,31 @@ +// Copyright 2021 The Hugo Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package htesting + +import ( + "testing" + + qt "github.com/frankban/quicktest" +) + +func TestExtractMinorVersionFromGoTag(t *testing.T) { + + c := qt.New(t) + + c.Assert(extractMinorVersionFromGoTag("go1.17"), qt.Equals, 17) + c.Assert(extractMinorVersionFromGoTag("go1.16.7"), qt.Equals, 16) + c.Assert(extractMinorVersionFromGoTag("go1.17beta1"), qt.Equals, 17) + c.Assert(extractMinorVersionFromGoTag("asdfadf"), qt.Equals, -1) + +} |