aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <[email protected]>2024-07-30 10:08:19 +0200
committerBjørn Erik Pedersen <[email protected]>2024-07-31 16:44:06 +0200
commit78db8aebcaeb34730c3db60a666c5a319a13d233 (patch)
treee09e0ad102ce1bb31905a4d90b31990d0d9f981a
parent3140e0b994e4108220afedc3de8eaf42ff216904 (diff)
downloadhugo-78db8aebcaeb34730c3db60a666c5a319a13d233.tar.gz
hugo-78db8aebcaeb34730c3db60a666c5a319a13d233.zip
identity: Upgrade to github.com/mitchellh/hashstructure/v2 v2.0.2
``` name old time/op new time/op delta HashString/n28-10 131ns ± 7% 133ns ±19% ~ (p=0.343 n=4+4) HashString/n112-10 237ns ± 5% 241ns ± 3% ~ (p=0.229 n=4+4) HashString/n448-10 688ns ± 3% 687ns ± 1% ~ (p=0.886 n=4+4) HashString/n1792-10 2.51µs ± 3% 2.56µs ± 3% ~ (p=0.200 n=4+4) HashString/n7168-10 10.1µs ± 2% 10.0µs ± 4% ~ (p=0.686 n=4+4) name old alloc/op new alloc/op delta HashString/n28-10 80.0B ± 0% 80.0B ± 0% ~ (all equal) HashString/n112-10 160B ± 0% 160B ± 0% ~ (all equal) HashString/n448-10 496B ± 0% 496B ± 0% ~ (all equal) HashString/n1792-10 1.84kB ± 0% 1.84kB ± 0% ~ (all equal) HashString/n7168-10 8.24kB ± 0% 8.24kB ± 0% ~ (all equal) name old allocs/op new allocs/op delta HashString/n28-10 4.00 ± 0% 4.00 ± 0% ~ (all equal) HashString/n112-10 4.00 ± 0% 4.00 ± 0% ~ (all equal) HashString/n448-10 4.00 ± 0% 4.00 ± 0% ~ (all equal) HashString/n1792-10 4.00 ± 0% 4.00 ± 0% ~ (all equal) HashString/n7168-10 4.00 ± 0% 4.00 ± 0% ~ (all equal) ``` Closes #11644
-rw-r--r--config/namespace_test.go2
-rw-r--r--go.mod2
-rw-r--r--go.sum4
-rw-r--r--identity/identityhash.go4
-rw-r--r--resources/internal/key_test.go2
-rw-r--r--resources/resource_factories/create/remote_test.go13
-rw-r--r--resources/resource_transformers/js/options_test.go2
-rw-r--r--resources/resources_integration_test.go6
-rw-r--r--tpl/collections/reflect_helpers.go9
9 files changed, 20 insertions, 24 deletions
diff --git a/config/namespace_test.go b/config/namespace_test.go
index 9bd23e08e..3bbb28259 100644
--- a/config/namespace_test.go
+++ b/config/namespace_test.go
@@ -43,7 +43,7 @@ func TestNamespace(t *testing.T) {
c.Assert(err, qt.IsNil)
c.Assert(ns, qt.Not(qt.IsNil))
c.Assert(ns.SourceStructure, qt.DeepEquals, map[string]interface{}{"foo": "bar"})
- c.Assert(ns.SourceHash, qt.Equals, "14368731254619220105")
+ c.Assert(ns.SourceHash, qt.Equals, "5334326627423288605")
c.Assert(ns.Config, qt.DeepEquals, &tstNsExt{Foo: "bar"})
c.Assert(ns.Signature(), qt.DeepEquals, []*tstNsExt(nil))
}
diff --git a/go.mod b/go.mod
index c77f42783..4467afd59 100644
--- a/go.mod
+++ b/go.mod
@@ -53,7 +53,7 @@ require (
github.com/makeworld-the-better-one/dither/v2 v2.4.0
github.com/marekm4/color-extractor v1.2.1
github.com/mattn/go-isatty v0.0.20
- github.com/mitchellh/hashstructure v1.1.0
+ github.com/mitchellh/hashstructure/v2 v2.0.2
github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c
github.com/muesli/smartcrop v0.3.0
github.com/niklasfasching/go-org v1.7.0
diff --git a/go.sum b/go.sum
index f535465cf..2bcb46b91 100644
--- a/go.sum
+++ b/go.sum
@@ -377,8 +377,8 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
-github.com/mitchellh/hashstructure v1.1.0 h1:P6P1hdjqAAknpY/M1CGipelZgp+4y9ja9kmUZPXP+H0=
-github.com/mitchellh/hashstructure v1.1.0/go.mod h1:xUDAozZz0Wmdiufv0uyhnHkUTN6/6d8ulp4AwfLKrmA=
+github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4=
+github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE=
github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE=
github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
diff --git a/identity/identityhash.go b/identity/identityhash.go
index 8760ff64d..70371e567 100644
--- a/identity/identityhash.go
+++ b/identity/identityhash.go
@@ -16,7 +16,7 @@ package identity
import (
"strconv"
- "github.com/mitchellh/hashstructure"
+ "github.com/mitchellh/hashstructure/v2"
)
// HashString returns a hash from the given elements.
@@ -44,7 +44,7 @@ func HashUint64(vs ...any) uint64 {
o = elements
}
- hash, err := hashstructure.Hash(o, nil)
+ hash, err := hashstructure.Hash(o, hashstructure.FormatV2, nil)
if err != nil {
panic(err)
}
diff --git a/resources/internal/key_test.go b/resources/internal/key_test.go
index 38286333d..b3f54eebd 100644
--- a/resources/internal/key_test.go
+++ b/resources/internal/key_test.go
@@ -32,5 +32,5 @@ func TestResourceTransformationKey(t *testing.T) {
key := NewResourceTransformationKey("testing",
testStruct{Name: "test", V1: int64(10), V2: int32(20), V3: 30, V4: uint64(40)})
c := qt.New(t)
- c.Assert(key.Value(), qt.Equals, "testing_518996646957295636")
+ c.Assert(key.Value(), qt.Equals, "testing_5850874845946291698")
}
diff --git a/resources/resource_factories/create/remote_test.go b/resources/resource_factories/create/remote_test.go
index 49d0b1541..5284c4d19 100644
--- a/resources/resource_factories/create/remote_test.go
+++ b/resources/resource_factories/create/remote_test.go
@@ -121,15 +121,16 @@ func TestRemoteResourceKeys(t *testing.T) {
c := qt.New(t)
check := func(uri string, optionsm map[string]any, expect1, expect2 string) {
+ c.Helper()
got1, got2 := remoteResourceKeys(uri, optionsm)
c.Assert(got1, qt.Equals, expect1)
c.Assert(got2, qt.Equals, expect2)
}
- check("foo", nil, "5917621528921068675", "5917621528921068675")
- check("foo", map[string]any{"bar": "baz"}, "7294498335241413323", "7294498335241413323")
- check("foo", map[string]any{"key": "1234", "bar": "baz"}, "14904296279238663669", "7294498335241413323")
- check("foo", map[string]any{"key": "12345", "bar": "baz"}, "12191037851845371770", "7294498335241413323")
- check("asdf", map[string]any{"key": "1234", "bar": "asdf"}, "14904296279238663669", "3787889110563790121")
- check("asdf", map[string]any{"key": "12345", "bar": "asdf"}, "12191037851845371770", "3787889110563790121")
+ check("foo", nil, "10276615683545312752", "10276615683545312752")
+ check("foo", map[string]any{"bar": "baz"}, "9898282343037894676", "9898282343037894676")
+ check("foo", map[string]any{"key": "1234", "bar": "baz"}, "14904296279238663669", "9898282343037894676")
+ check("foo", map[string]any{"key": "12345", "bar": "baz"}, "12191037851845371770", "9898282343037894676")
+ check("asdf", map[string]any{"key": "1234", "bar": "asdf"}, "14904296279238663669", "3005610248808565917")
+ check("asdf", map[string]any{"key": "12345", "bar": "asdf"}, "12191037851845371770", "3005610248808565917")
}
diff --git a/resources/resource_transformers/js/options_test.go b/resources/resource_transformers/js/options_test.go
index de20cbd05..d2821c552 100644
--- a/resources/resource_transformers/js/options_test.go
+++ b/resources/resource_transformers/js/options_test.go
@@ -44,7 +44,7 @@ func TestOptionKey(t *testing.T) {
key := (&buildTransformation{optsm: opts}).Key()
- c.Assert(key.Value(), qt.Equals, "jsbuild_7891849149754191852")
+ c.Assert(key.Value(), qt.Equals, "jsbuild_9458638411414195026")
}
func TestToBuildOptions(t *testing.T) {
diff --git a/resources/resources_integration_test.go b/resources/resources_integration_test.go
index ba580b4dc..df489c9e5 100644
--- a/resources/resources_integration_test.go
+++ b/resources/resources_integration_test.go
@@ -159,9 +159,9 @@ resize 2|RelPermalink: {{ $image.RelPermalink }}|MediaType: {{ $image.MediaType
b := hugolib.Test(t, files)
b.AssertFileContent("public/index.html",
- "jpg|RelPermalink: /images/pixel_hu8aa3346827e49d756ff4e630147c42b5_70_filter_17010532266664966692.jpg|MediaType: image/jpeg|Width: 1|Height: 1|",
- "resize 1|RelPermalink: /images/pixel_hu8aa3346827e49d756ff4e630147c42b5_70_filter_6707036659822075562.jpg|MediaType: image/jpeg|Width: 20|Height: 30|",
- "resize 2|RelPermalink: /images/pixel_hu8aa3346827e49d756ff4e630147c42b5_70_filter_6707036659822075562.jpg|MediaType: image/jpeg|Width: 20|Height: 30|",
+ "jpg|RelPermalink: /images/pixel_hu8aa3346827e49d756ff4e630147c42b5_70_filter_14347832029652749901.jpg|MediaType: image/jpeg|Width: 1|Height: 1|",
+ "resize 1|RelPermalink: /images/pixel_hu8aa3346827e49d756ff4e630147c42b5_70_filter_14038289290831899195.jpg|MediaType: image/jpeg|Width: 20|Height: 30|",
+ "resize 2|RelPermalink: /images/pixel_hu8aa3346827e49d756ff4e630147c42b5_70_filter_14038289290831899195.jpg|MediaType: image/jpeg|Width: 20|Height: 30|",
)
}
diff --git a/tpl/collections/reflect_helpers.go b/tpl/collections/reflect_helpers.go
index 4687acdde..b1966841d 100644
--- a/tpl/collections/reflect_helpers.go
+++ b/tpl/collections/reflect_helpers.go
@@ -19,7 +19,7 @@ import (
"reflect"
"github.com/gohugoio/hugo/common/types"
- "github.com/mitchellh/hashstructure"
+ "github.com/gohugoio/hugo/identity"
)
var (
@@ -47,14 +47,9 @@ func numberToFloat(v reflect.Value) (float64, error) {
// to make them comparable
func normalize(v reflect.Value) any {
k := v.Kind()
-
switch {
case !v.Type().Comparable():
- h, err := hashstructure.Hash(v.Interface(), nil)
- if err != nil {
- panic(err)
- }
- return h
+ return identity.HashUint64(v.Interface())
case isNumber(k):
f, err := numberToFloat(v)
if err == nil {