From 909578abffce2cbb811857816f7f7cccd943a295 Mon Sep 17 00:00:00 2001 From: Paul Johnston Date: Mon, 19 Jun 2023 16:49:52 -0600 Subject: [PATCH 1/3] Add go.mod file, lint fixes --- Makefile | 4 ++-- go.mod | 5 +++++ go.sum | 32 ++++++++++++++++++++++++++++ go/objecthash/objecthash.go | 6 +++--- go/objecthash/objecthash_test.go | 36 ++++++++++++++++---------------- 5 files changed, 60 insertions(+), 23 deletions(-) create mode 100644 go.mod create mode 100644 go.sum diff --git a/Makefile b/Makefile index c90447b..f98ea36 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ test: c go_test ruby python java go_test: go_deps - GOPATH=`pwd` go test -timeout 1m -v go/objecthash/objecthash.go go/objecthash/objecthash_test.go + go test -timeout 1m -v go/objecthash/objecthash.go go/objecthash/objecthash_test.go ruby: cd ruby && rake @@ -26,4 +26,4 @@ libobjecthash.so: objecthash.c $(CC) -fPIC -shared -std=c99 -Wall -Werror -Wextra -o libobjecthash.so objecthash.c -lcrypto `pkg-config --libs --cflags icu-uc json-c openssl` go_deps: - GOPATH=`pwd` go get golang.org/x/text/unicode/norm + go get golang.org/x/text/unicode/norm diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..5627903 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module github.com/pcj/objecthash + +go 1.11 + +require golang.org/x/text v0.10.0 // indirect diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..eb7bcd8 --- /dev/null +++ b/go.sum @@ -0,0 +1,32 @@ +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/objecthash/objecthash.go b/go/objecthash/objecthash.go index b26e6b3..1d68e2f 100644 --- a/go/objecthash/objecthash.go +++ b/go/objecthash/objecthash.go @@ -139,7 +139,7 @@ func floatNormalize(originalFloat float64) (s string, err error) { s += fmt.Sprintf("%d:", e) // mantissa if f > 1 || f <= .5 { - return "", fmt.Errorf("Could not normalize float: %f", originalFloat) + return "", fmt.Errorf("could not normalize float: %f", originalFloat) } for f != 0 { if f >= 1 { @@ -149,10 +149,10 @@ func floatNormalize(originalFloat float64) (s string, err error) { s += `0` } if f >= 1 { - return "", fmt.Errorf("Could not normalize float: %f", originalFloat) + return "", fmt.Errorf("could not normalize float: %f", originalFloat) } if len(s) >= 1000 { - return "", fmt.Errorf("Could not normalize float: %f", originalFloat) + return "", fmt.Errorf("could not normalize float: %f", originalFloat) } f *= 2 } diff --git a/go/objecthash/objecthash_test.go b/go/objecthash/objecthash_test.go index c330dc4..d36ded1 100644 --- a/go/objecthash/objecthash_test.go +++ b/go/objecthash/objecthash_test.go @@ -19,12 +19,12 @@ func commonJSON(j string) { } } -func ExampleCommonJSONHash_Common() { +func Example_commonJSON_HashCommon() { commonJSON(`["foo", "bar"]`) // Output: 32ae896c413cfdc79eec68be9139c86ded8b279238467c216cf2bec4d5f1e4a2 } -func ExampleCommonJSONHash_FloatAndInt() { +func Example_commonJSONHash_FloatAndInt() { commonJSON(`["foo", {"bar":["baz", null, 1.0, 1.5, 0.0001, 1000.0, 2.0, -23.1234, 2.0]}]`) // Integers and floats are the same in common JSON commonJSON(`["foo", {"bar":["baz", null, 1, 1.5, 0.0001, 1000, 2, -23.1234, 2]}]`) @@ -33,12 +33,12 @@ func ExampleCommonJSONHash_FloatAndInt() { // 783a423b094307bcb28d005bc2f026ff44204442ef3513585e7e73b66e3c2213 } -func ExampleCommonJSONHash_KeyChange() { +func Example_commonJSONHash_KeyChange() { commonJSON(`["foo", {"b4r":["baz", null, 1, 1.5, 0.0001, 1000, 2, -23.1234, 2]}]`) // Output: 7e01f8b45da35386e4f9531ff1678147a215b8d2b1d047e690fd9ade6151e431 } -func ExampleCommonJSONHash_KeyOrderIndependence() { +func Example_commonJSONHash_KeyOrderIndependence() { commonJSON(`{"k1":"v1","k2":"v2","k3":"v3"}`) commonJSON(`{"k2":"v2","k1":"v1","k3":"v3"}`) // Output: @@ -46,14 +46,14 @@ func ExampleCommonJSONHash_KeyOrderIndependence() { // ddd65f1f7568269a30df7cafc26044537dc2f02a1a0d830da61762fc3e687057 } -func ExampleCommonJSONHash_InvalidJson() { +func Example_commonJSONHash_InvalidJson() { commonJSON(`["foo", bar]`) // Output: // invalid character 'b' looking for beginning of value } /* -func ExampleCommonJSONHash_UnicodeNormalisation() { +func Example_commonJSONHash_UnicodeNormalisation() { commonJSON("\"\u03d3\"") commonJSON("\"\u03d2\u0301\"") // Output: @@ -71,7 +71,7 @@ func printObjectHash(o interface{}) { } } -func ExampleObjectHash_JSON() { +func Example_printObjectHash_JSON() { // Same as equivalent JSON object o := []interface{}{`foo`, `bar`} printObjectHash(o) @@ -87,7 +87,7 @@ func ExampleObjectHash_JSON() { // 32ae896c413cfdc79eec68be9139c86ded8b279238467c216cf2bec4d5f1e4a2 } -func ExampleObjectHash_JSON2() { +func Example_printObjectHash_JSON2() { // Same as equivalent _Python_ JSON object o := []interface{}{`foo`, map[string]interface{}{`bar`: []interface{}{`baz`, nil, 1, 1.5, 0.0001, 1000, 2, -23.1234, 2}}} printObjectHash(o) @@ -109,7 +109,7 @@ func ExampleObjectHash_JSON2() { // 783a423b094307bcb28d005bc2f026ff44204442ef3513585e7e73b66e3c2213 } -func ExampleObjectHash_JSONStruct() { +func Example_printObjectHash_JSONStruct() { type x struct { Foo string Bar float64 @@ -127,7 +127,7 @@ func ExampleObjectHash_JSONStruct() { // edd3ec3058d604abcba6c4944b2a05ca1104cd1911cb78f93732634530f1e003 } -func ExampleObjectHash_JSONConsideredDangerous() { +func Example_printObjectHash_JSONConsideredDangerous() { n := 9007199254740992 nn, err := CommonJSONify(n) if err != nil { @@ -144,25 +144,25 @@ func ExampleObjectHash_JSONConsideredDangerous() { // 9e7d7d02dacab24905c2dc23391bd61d4081a9d541dfafd2469c881cc6c748e4 } -func ExampleObjectHash_Set() { +func Example_printObjectHash_Set() { o := map[string]interface{}{`thing1`: map[string]interface{}{`thing2`: Set{1, 2, `s`}}, `thing3`: 1234.567} printObjectHash(o) // Output: 618cf0582d2e716a70e99c2f3079d74892fec335e3982eb926835967cb0c246c } -func ExampleObjectHash_ComplexSet() { +func Example_printObjectHash_ComplexSet() { o := Set{`foo`, 23.6, Set{Set{}}, Set{Set{1}}} printObjectHash(o) // Output: 3773b0a5283f91243a304d2bb0adb653564573bc5301aa8bb63156266ea5d398 } -func ExampleObjectHash_ComplexSetRepeated() { +func Example_printObjectHash_ComplexSetRepeated() { o := Set{`foo`, 23.6, Set{Set{}}, Set{Set{1}}, Set{Set{}}} printObjectHash(o) // Output: 3773b0a5283f91243a304d2bb0adb653564573bc5301aa8bb63156266ea5d398 } -func ExampleObjectHash_ArraysAndSlices() { +func Example_printObjectHash_ArraysAndSlices() { a1 := [0]bool{} printObjectHash(a1) @@ -190,7 +190,7 @@ func ExampleObjectHash_ArraysAndSlices() { // 751293c15d3eacceb5643ac61f9c2f5a597378ef4538de8e7f9188feabf76a81 } -func ExampleObjectHash_ByteBlobs() { +func Example_printObjectHash_ByteBlobs() { // Empty byte blobs (arrays & slices) will have different hashes from empty lists. ba1 := [0]byte{} printObjectHash(ba1) @@ -219,7 +219,7 @@ func ExampleObjectHash_ByteBlobs() { // d877bf4e5023a6df5262218800a7162e240c84e44696bb2c3ad1c5e756f3dac1 } -func ExampleObjectHash_Maps() { +func Example_printObjectHash_Maps() { m1 := map[string]bool{} printObjectHash(m1) @@ -234,7 +234,7 @@ func ExampleObjectHash_Maps() { // 1eb24844c2bb924515efd56f3310d875a3aeaef54d690186d698bfd926a93322 } -func ExampleObjectHash_SpecialFloatValues() { +func Example_printObjectHash_SpecialFloatValues() { nan := math.NaN() printObjectHash(nan) @@ -249,7 +249,7 @@ func ExampleObjectHash_SpecialFloatValues() { // 1167518d5554ba86d9b176af0a57f29d425bedaa9847c245cc397b37533228f7 } -func ExampleObjectHash_UnsupportedType() { +func Example_printObjectHash_UnsupportedType() { f := func() {} printObjectHash(f) // Output: From b2925136bf0b7fdd7b33653789cb22ba489087de Mon Sep 17 00:00:00 2001 From: Paul Johnston Date: Mon, 19 Jun 2023 16:52:59 -0600 Subject: [PATCH 2/3] Cleanup go.mod/go.sum file. --- Makefile | 5 +---- go.mod | 2 -- go.sum | 32 -------------------------------- 3 files changed, 1 insertion(+), 38 deletions(-) diff --git a/Makefile b/Makefile index f98ea36..6a8f57a 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ test: c go_test ruby python java -go_test: go_deps +go_test: go test -timeout 1m -v go/objecthash/objecthash.go go/objecthash/objecthash_test.go ruby: @@ -24,6 +24,3 @@ objecthash_test: libobjecthash.so objecthash_test.c libobjecthash.so: objecthash.c $(CC) -fPIC -shared -std=c99 -Wall -Werror -Wextra -o libobjecthash.so objecthash.c -lcrypto `pkg-config --libs --cflags icu-uc json-c openssl` - -go_deps: - go get golang.org/x/text/unicode/norm diff --git a/go.mod b/go.mod index 5627903..d68d661 100644 --- a/go.mod +++ b/go.mod @@ -1,5 +1,3 @@ module github.com/pcj/objecthash go 1.11 - -require golang.org/x/text v0.10.0 // indirect diff --git a/go.sum b/go.sum index eb7bcd8..e69de29 100644 --- a/go.sum +++ b/go.sum @@ -1,32 +0,0 @@ -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= -golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 9b9e2d0ef194d6fbdad2dd6bd9694494cf59901b Mon Sep 17 00:00:00 2001 From: Paul Johnston Date: Mon, 19 Jun 2023 16:54:55 -0600 Subject: [PATCH 3/3] Fix module name for upstream --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index d68d661..fd3aa51 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,3 @@ -module github.com/pcj/objecthash +module github.com/benlaurie/objecthash go 1.11