aboutsummaryrefslogtreecommitdiffhomepage
path: root/htesting
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <[email protected]>2021-08-26 17:24:52 +0200
committerBjørn Erik Pedersen <[email protected]>2021-08-31 11:19:51 +0200
commit0fc2ce9e4bf0524994a861b7300e4332f6f8d390 (patch)
tree61a0951413b80ff4daefcbcdbfacab3f54614b44 /htesting
parent32569285c181c8798ef594c12d3cfd7f9a252a04 (diff)
downloadhugo-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.go27
-rw-r--r--htesting/test_helpers_test.go31
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)
+
+}