From a0026646e9ae74dae9fab65406ae17c3ac2a69b9 Mon Sep 17 00:00:00 2001 From: gammazero <11790789+gammazero@users.noreply.github.com> Date: Mon, 4 Aug 2025 10:57:35 -1000 Subject: [PATCH] replace gopkg.in/check.v1 with github.com/stretchr/testify --- examples/fs_test.go | 80 +++++-------- fuzz/go.mod | 4 +- fuzz/go.sum | 13 +- go.mod | 8 +- go.sum | 7 +- key_test.go | 192 +++++++++++++----------------- keytransform/keytransform_test.go | 51 +++----- namespace/namespace_test.go | 73 +++++------- 8 files changed, 170 insertions(+), 258 deletions(-) diff --git a/examples/fs_test.go b/examples/fs_test.go index 9a9c550f..766ddf60 100644 --- a/examples/fs_test.go +++ b/examples/fs_test.go @@ -1,41 +1,24 @@ package examples import ( - "bytes" "context" "testing" - . "gopkg.in/check.v1" - ds "github.com/ipfs/go-datastore" query "github.com/ipfs/go-datastore/query" + "github.com/stretchr/testify/require" ) -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { TestingT(t) } - -type DSSuite struct { - dir string - ds ds.Datastore -} - -var _ = Suite(&DSSuite{}) - -func (ks *DSSuite) SetUpTest(c *C) { - ks.dir = c.MkDir() - ks.ds, _ = NewDatastore(ks.dir) -} - -func (ks *DSSuite) TestOpen(c *C) { +func TestOpen(t *testing.T) { _, err := NewDatastore("/tmp/foo/bar/baz") - c.Assert(err, Not(Equals), nil) + require.Error(t, err) // setup ds - _, err = NewDatastore(ks.dir) - c.Assert(err, Equals, nil) + _, err = NewDatastore(t.TempDir()) + require.NoError(t, err) } -func (ks *DSSuite) TestBasic(c *C) { +func TestBasic(t *testing.T) { ctx := context.Background() keys := strsToKeys([]string{ @@ -47,21 +30,21 @@ func (ks *DSSuite) TestBasic(c *C) { "foo/bar/baz/barb", }) + dstore, err := NewDatastore(t.TempDir()) + require.NoError(t, err) for _, k := range keys { - err := ks.ds.Put(ctx, k, []byte(k.String())) - c.Check(err, Equals, nil) + err := dstore.Put(ctx, k, []byte(k.String())) + require.NoError(t, err) } for _, k := range keys { - v, err := ks.ds.Get(ctx, k) - c.Check(err, Equals, nil) - c.Check(bytes.Equal(v, []byte(k.String())), Equals, true) + v, err := dstore.Get(ctx, k) + require.NoError(t, err) + require.Equal(t, []byte(k.String()), v) } - r, err := ks.ds.Query(ctx, query.Query{Prefix: "/foo/bar/"}) - if err != nil { - c.Check(err, Equals, nil) - } + r, err := dstore.Query(ctx, query.Query{Prefix: "/foo/bar/"}) + require.NoError(t, err) expect := []string{ "/foo/bar/baz", @@ -69,26 +52,23 @@ func (ks *DSSuite) TestBasic(c *C) { "/foo/bar/baz/barb", } all, err := r.Rest() - if err != nil { - c.Fatal(err) - } - c.Check(len(all), Equals, len(expect)) + require.NoError(t, err) + require.Equal(t, len(all), len(expect)) for _, k := range expect { found := false for _, e := range all { if e.Key == k { found = true + break } } - if !found { - c.Error("did not find expected key: ", k) - } + require.True(t, found, "did not find expected key:", k) } } -func (ks *DSSuite) TestDiskUsage(c *C) { +func TestDiskUsage(t *testing.T) { ctx := context.Background() keys := strsToKeys([]string{ @@ -100,21 +80,23 @@ func (ks *DSSuite) TestDiskUsage(c *C) { "foo/bar/baz/barb", }) + dstore, err := NewDatastore(t.TempDir()) + require.NoError(t, err) + totalBytes := 0 for _, k := range keys { value := []byte(k.String()) totalBytes += len(value) - err := ks.ds.Put(ctx, k, value) - c.Check(err, Equals, nil) + err := dstore.Put(ctx, k, value) + require.NoError(t, err) } - if ps, ok := ks.ds.(ds.PersistentDatastore); ok { - if s, err := ps.DiskUsage(ctx); s != uint64(totalBytes) || err != nil { - c.Error("unexpected size is: ", s) - } - } else { - c.Error("should implement PersistentDatastore") - } + ps, ok := dstore.(ds.PersistentDatastore) + require.True(t, ok, "should implement PersistentDatastore") + + s, err := ps.DiskUsage(ctx) + require.NoError(t, err) + require.Equal(t, uint64(totalBytes), s, "unexpected size") } func strsToKeys(strs []string) []ds.Key { diff --git a/fuzz/go.mod b/fuzz/go.mod index 96ecf3fc..cbc41d77 100644 --- a/fuzz/go.mod +++ b/fuzz/go.mod @@ -1,6 +1,6 @@ module github.com/ipfs/go-datastore/fuzz -go 1.23 +go 1.23.0 require ( github.com/ipfs/go-datastore v0.8.0 @@ -18,3 +18,5 @@ require ( go.uber.org/zap v1.24.0 // indirect golang.org/x/sys v0.4.0 // indirect ) + +replace github.com/ipfs/go-datastore => ../ diff --git a/fuzz/go.sum b/fuzz/go.sum index 0667e463..dfd75a93 100644 --- a/fuzz/go.sum +++ b/fuzz/go.sum @@ -7,17 +7,14 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/ipfs/go-datastore v0.8.0 h1:n8xKnoSTo/28L5KM+Jfz4kfohD889/afdWcDHve9VuY= -github.com/ipfs/go-datastore v0.8.0/go.mod h1:BGN3N+sLTEWQUHMtOjmm2GKccMJnVFPgSLp6kshNqRk= +github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk= +github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= github.com/ipfs/go-ds-flatfs v0.5.3 h1:NQsaiepf8k93rbiTb6eY/0Qaoako2cEVsXT++Q/t9Bw= github.com/ipfs/go-ds-flatfs v0.5.3/go.mod h1:hCh3OKNvlqPQ+retNJy8402Oej6QpX4U18OYzLrfLR8= github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= @@ -31,8 +28,8 @@ github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= @@ -77,8 +74,6 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/go.mod b/go.mod index f56af7eb..9d8fd6ed 100644 --- a/go.mod +++ b/go.mod @@ -6,18 +6,18 @@ require ( github.com/google/uuid v1.6.0 github.com/ipfs/go-detect-race v0.0.1 github.com/ipfs/go-ipfs-delay v0.0.1 + github.com/stretchr/testify v1.10.0 go.opentelemetry.io/otel v1.37.0 go.opentelemetry.io/otel/trace v1.37.0 go.uber.org/multierr v1.11.0 - gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c ) require ( + github.com/davecgh/go-spew v1.1.1 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/kr/pretty v0.3.1 // indirect - github.com/kr/text v0.2.0 // indirect - github.com/rogpeppe/go-internal v1.13.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/metric v1.37.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index c4b1a480..69eb8955 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,3 @@ -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -14,17 +13,12 @@ github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= github.com/ipfs/go-ipfs-delay v0.0.1 h1:r/UXYyRcddO6thwOnhiznIAiSvxMECGgtv35Xs1IeRQ= github.com/ipfs/go-ipfs-delay v0.0.1/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= @@ -39,6 +33,7 @@ go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mx go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/key_test.go b/key_test.go index c24415e8..210ecdf2 100644 --- a/key_test.go +++ b/key_test.go @@ -7,17 +7,10 @@ import ( "testing" . "github.com/ipfs/go-datastore" - . "gopkg.in/check.v1" + "github.com/stretchr/testify/require" ) -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { TestingT(t) } - -type KeySuite struct{} - -var _ = Suite(&KeySuite{}) - -func (ks *KeySuite) SubtestKey(s string, c *C) { +func subtestKey(t *testing.T, s string) { fixed := path.Clean("/" + s) namespaces := strings.Split(fixed, "/")[1:] lastNamespace := namespaces[len(namespaces)-1] @@ -33,120 +26,108 @@ func (ks *KeySuite) SubtestKey(s string, c *C) { kpath := path.Clean(kparent + "/" + ktype) kinstance := fixed + ":" + "inst" - c.Log("Testing: ", NewKey(s)) - - c.Check(NewKey(s).String(), Equals, fixed) - c.Check(NewKey(s), Equals, NewKey(s)) - c.Check(NewKey(s).String(), Equals, NewKey(s).String()) - c.Check(NewKey(s).Name(), Equals, kname) - c.Check(NewKey(s).Type(), Equals, ktype) - c.Check(NewKey(s).Path().String(), Equals, kpath) - c.Check(NewKey(s).Instance("inst").String(), Equals, kinstance) - - c.Check(NewKey(s).Child(NewKey("cchildd")).String(), Equals, kchild) - c.Check(NewKey(s).Child(NewKey("cchildd")).Parent().String(), Equals, fixed) - c.Check(NewKey(s).ChildString("cchildd").String(), Equals, kchild) - c.Check(NewKey(s).ChildString("cchildd").Parent().String(), Equals, fixed) - c.Check(NewKey(s).Parent().String(), Equals, kparent) - c.Check(len(NewKey(s).List()), Equals, len(namespaces)) - c.Check(len(NewKey(s).Namespaces()), Equals, len(namespaces)) + t.Log("Testing: ", NewKey(s)) + + require.Equal(t, fixed, NewKey(s).String()) + require.Equal(t, NewKey(s), NewKey(s)) + require.Equal(t, NewKey(s).String(), NewKey(s).String()) + require.Equal(t, kname, NewKey(s).Name()) + require.Equal(t, ktype, NewKey(s).Type()) + require.Equal(t, kpath, NewKey(s).Path().String()) + require.Equal(t, kinstance, NewKey(s).Instance("inst").String()) + + require.Equal(t, kchild, NewKey(s).Child(NewKey("cchildd")).String()) + require.Equal(t, fixed, NewKey(s).Child(NewKey("cchildd")).Parent().String()) + require.Equal(t, kchild, NewKey(s).ChildString("cchildd").String()) + require.Equal(t, fixed, NewKey(s).ChildString("cchildd").Parent().String()) + require.Equal(t, kparent, NewKey(s).Parent().String()) + require.Len(t, NewKey(s).List(), len(namespaces)) + require.Len(t, NewKey(s).Namespaces(), len(namespaces)) for i, e := range NewKey(s).List() { - c.Check(namespaces[i], Equals, e) + require.Equal(t, e, namespaces[i]) } - c.Check(NewKey(s), Equals, NewKey(s)) - c.Check(NewKey(s).Equal(NewKey(s)), Equals, true) - c.Check(NewKey(s).Equal(NewKey("/fdsafdsa/"+s)), Equals, false) + require.Equal(t, NewKey(s), NewKey(s)) + require.True(t, NewKey(s).Equal(NewKey(s))) + require.False(t, NewKey(s).Equal(NewKey("/fdsafdsa/"+s))) // less - c.Check(NewKey(s).Less(NewKey(s).Parent()), Equals, false) - c.Check(NewKey(s).Less(NewKey(s).ChildString("foo")), Equals, true) + require.False(t, NewKey(s).Less(NewKey(s).Parent())) + require.True(t, NewKey(s).Less(NewKey(s).ChildString("foo"))) } -func (ks *KeySuite) TestKeyBasic(c *C) { - ks.SubtestKey("", c) - ks.SubtestKey("abcde", c) - ks.SubtestKey("disahfidsalfhduisaufidsail", c) - ks.SubtestKey("/fdisahfodisa/fdsa/fdsafdsafdsafdsa/fdsafdsa/", c) - ks.SubtestKey("4215432143214321432143214321", c) - ks.SubtestKey("/fdisaha////fdsa////fdsafdsafdsafdsa/fdsafdsa/", c) - ks.SubtestKey("abcde:fdsfd", c) - ks.SubtestKey("disahfidsalfhduisaufidsail:fdsa", c) - ks.SubtestKey("/fdisahfodisa/fdsa/fdsafdsafdsafdsa/fdsafdsa/:", c) - ks.SubtestKey("4215432143214321432143214321:", c) - ks.SubtestKey("fdisaha////fdsa////fdsafdsafdsafdsa/fdsafdsa/f:fdaf", c) +func TestKeyBasic(t *testing.T) { + subtestKey(t, "") + subtestKey(t, "abcde") + subtestKey(t, "disahfidsalfhduisaufidsail") + subtestKey(t, "/fdisahfodisa/fdsa/fdsafdsafdsafdsa/fdsafdsa/") + subtestKey(t, "4215432143214321432143214321") + subtestKey(t, "/fdisaha////fdsa////fdsafdsafdsafdsa/fdsafdsa/") + subtestKey(t, "abcde:fdsfd") + subtestKey(t, "disahfidsalfhduisaufidsail:fdsa") + subtestKey(t, "/fdisahfodisa/fdsa/fdsafdsafdsafdsa/fdsafdsa/:") + subtestKey(t, "4215432143214321432143214321:") + subtestKey(t, "fdisaha////fdsa////fdsafdsafdsafdsa/fdsafdsa/f:fdaf") } -func CheckTrue(c *C, cond bool) { - c.Check(cond, Equals, true) -} - -func (ks *KeySuite) TestKeyAncestry(c *C) { +func TestKeyAncestry(t *testing.T) { k1 := NewKey("/A/B/C") k2 := NewKey("/A/B/C/D") k3 := NewKey("/AB") k4 := NewKey("/A") - c.Check(k1.String(), Equals, "/A/B/C") - c.Check(k2.String(), Equals, "/A/B/C/D") - CheckTrue(c, k1.IsAncestorOf(k2)) - CheckTrue(c, k2.IsDescendantOf(k1)) - CheckTrue(c, k4.IsAncestorOf(k2)) - CheckTrue(c, k4.IsAncestorOf(k1)) - CheckTrue(c, !k4.IsDescendantOf(k2)) - CheckTrue(c, !k4.IsDescendantOf(k1)) - CheckTrue(c, !k3.IsDescendantOf(k4)) - CheckTrue(c, !k4.IsAncestorOf(k3)) - CheckTrue(c, k2.IsDescendantOf(k4)) - CheckTrue(c, k1.IsDescendantOf(k4)) - CheckTrue(c, !k2.IsAncestorOf(k4)) - CheckTrue(c, !k1.IsAncestorOf(k4)) - CheckTrue(c, !k2.IsAncestorOf(k2)) - CheckTrue(c, !k1.IsAncestorOf(k1)) - c.Check(k1.Child(NewKey("D")).String(), Equals, k2.String()) - c.Check(k1.ChildString("D").String(), Equals, k2.String()) - c.Check(k1.String(), Equals, k2.Parent().String()) - c.Check(k1.Path().String(), Equals, k2.Parent().Path().String()) + require.Equal(t, "/A/B/C", k1.String()) + require.Equal(t, "/A/B/C/D", k2.String()) + require.True(t, k1.IsAncestorOf(k2)) + require.True(t, k2.IsDescendantOf(k1)) + require.True(t, k4.IsAncestorOf(k2)) + require.True(t, k4.IsAncestorOf(k1)) + require.False(t, k4.IsDescendantOf(k2)) + require.False(t, k4.IsDescendantOf(k1)) + require.False(t, k3.IsDescendantOf(k4)) + require.False(t, k4.IsAncestorOf(k3)) + require.True(t, k2.IsDescendantOf(k4)) + require.True(t, k1.IsDescendantOf(k4)) + require.False(t, k2.IsAncestorOf(k4)) + require.False(t, k1.IsAncestorOf(k4)) + require.False(t, k2.IsAncestorOf(k2)) + require.False(t, k1.IsAncestorOf(k1)) + require.Equal(t, k2.String(), k1.Child(NewKey("D")).String()) + require.Equal(t, k2.String(), k1.ChildString("D").String()) + require.Equal(t, k1.String(), k2.Parent().String()) + require.Equal(t, k1.Path().String(), k2.Parent().Path().String()) } -func (ks *KeySuite) TestType(c *C) { +func TestType(t *testing.T) { k1 := NewKey("/A/B/C:c") k2 := NewKey("/A/B/C:c/D:d") - CheckTrue(c, k1.IsAncestorOf(k2)) - CheckTrue(c, k2.IsDescendantOf(k1)) - c.Check(k1.Type(), Equals, "C") - c.Check(k2.Type(), Equals, "D") - c.Check(k1.Type(), Equals, k2.Parent().Type()) + require.True(t, k1.IsAncestorOf(k2)) + require.True(t, k2.IsDescendantOf(k1)) + require.Equal(t, "C", k1.Type()) + require.Equal(t, "D", k2.Type()) + require.Equal(t, k1.Type(), k2.Parent().Type()) } -func (ks *KeySuite) TestRandom(c *C) { +func TestRandom(t *testing.T) { keys := map[Key]bool{} for i := 0; i < 1000; i++ { r := RandomKey() _, found := keys[r] - CheckTrue(c, !found) + require.False(t, found) keys[r] = true } - CheckTrue(c, len(keys) == 1000) + require.Len(t, keys, 1000) } -func (ks *KeySuite) TestLess(c *C) { - - checkLess := func(a, b string) { - ak := NewKey(a) - bk := NewKey(b) - c.Check(ak.Less(bk), Equals, true) - c.Check(bk.Less(ak), Equals, false) - } - - checkLess("/a/b/c", "/a/b/c/d") - checkLess("/a/b", "/a/b/c/d") - checkLess("/a", "/a/b/c/d") - checkLess("/a/a/c", "/a/b/c") - checkLess("/a/a/d", "/a/b/c") - checkLess("/a/b/c/d/e/f/g/h", "/b") - checkLess("/", "/a") +func TestLess(t *testing.T) { + require.Less(t, "/a/b/c", "/a/b/c/d") + require.Less(t, "/a/b", "/a/b/c/d") + require.Less(t, "/a", "/a/b/c/d") + require.Less(t, "/a/a/c", "/a/b/c") + require.Less(t, "/a/a/d", "/a/b/c") + require.Less(t, "/a/b/c/d/e/f/g/h", "/b") + require.Less(t, "/", "/a") } func TestKeyMarshalJSON(t *testing.T) { @@ -164,18 +145,13 @@ func TestKeyMarshalJSON(t *testing.T) { if !(err == nil && c.err == "" || err != nil && err.Error() == c.err) { t.Errorf("case %d marshal error mismatch: expected: %s, got: %s", i, c.err, err) } - if !bytes.Equal(c.data, out) { - t.Errorf("case %d value mismatch: expected: %s, got: %s", i, string(c.data), string(out)) - } + require.Truef(t, bytes.Equal(c.data, out), "case %d value mismatch: expected: %s, got: %s", i, string(c.data), string(out)) if c.err == "" { key := Key{} - if err := key.UnmarshalJSON(out); err != nil { - t.Errorf("case %d error parsing key from json output: %s", i, err.Error()) - } - if !c.key.Equal(key) { - t.Errorf("case %d parsed key from json output mismatch. expected: %s, got: %s", i, c.key.String(), key.String()) - } + err = key.UnmarshalJSON(out) + require.NoErrorf(t, err, "case %d error parsing key from json output", i) + require.Truef(t, c.key.Equal(key), "case %d parsed key from json output mismatch. expected: %s, got: %s", i, c.key.String(), key.String()) } } } @@ -198,10 +174,7 @@ func TestKeyUnmarshalJSON(t *testing.T) { if !(err == nil && c.err == "" || err != nil && err.Error() == c.err) { t.Errorf("case %d marshal error mismatch: expected: %s, got: %s", i, c.err, err) } - - if !key.Equal(c.key) { - t.Errorf("case %d key mismatch: expected: %s, got: %s", i, c.key, key) - } + require.Truef(t, key.Equal(c.key), "case %d key mismatch: expected: %s, got: %s", i, c.key, key) } } @@ -218,9 +191,8 @@ func TestKey_RootNamespace(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := RawKey(tt.key).RootNamespace(); got != tt.want { - t.Errorf("RootNamespace() = %v, want %v", got, tt.want) - } + got := RawKey(tt.key).RootNamespace() + require.Equal(t, tt.want, got, "RootNamespace() returned wrong value") }) } } diff --git a/keytransform/keytransform_test.go b/keytransform/keytransform_test.go index 689d74a7..530eefe9 100644 --- a/keytransform/keytransform_test.go +++ b/keytransform/keytransform_test.go @@ -1,26 +1,17 @@ package keytransform_test import ( - "bytes" "context" "sort" "testing" - . "gopkg.in/check.v1" - ds "github.com/ipfs/go-datastore" kt "github.com/ipfs/go-datastore/keytransform" dsq "github.com/ipfs/go-datastore/query" dstest "github.com/ipfs/go-datastore/test" + "github.com/stretchr/testify/require" ) -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { TestingT(t) } - -type DSSuite struct{} - -var _ = Suite(&DSSuite{}) - var pair = &kt.Pair{ Convert: func(k ds.Key) ds.Key { return ds.NewKey("/abc").Child(k) @@ -35,7 +26,7 @@ var pair = &kt.Pair{ }, } -func (ks *DSSuite) TestBasic(c *C) { +func TestBasic(t *testing.T) { ctx := context.Background() mpds := dstest.NewTestDatastore(true) @@ -52,32 +43,32 @@ func (ks *DSSuite) TestBasic(c *C) { for _, k := range keys { err := ktds.Put(ctx, k, []byte(k.String())) - c.Check(err, Equals, nil) + require.NoError(t, err) } for _, k := range keys { v1, err := ktds.Get(ctx, k) - c.Check(err, Equals, nil) - c.Check(bytes.Equal(v1, []byte(k.String())), Equals, true) + require.NoError(t, err) + require.Equal(t, []byte(k.String()), v1) v2, err := mpds.Get(ctx, ds.NewKey("abc").Child(k)) - c.Check(err, Equals, nil) - c.Check(bytes.Equal(v2, []byte(k.String())), Equals, true) + require.NoError(t, err) + require.Equal(t, []byte(k.String()), v2) } run := func(d ds.Datastore, q dsq.Query) []ds.Key { r, err := d.Query(ctx, q) - c.Check(err, Equals, nil) + require.NoError(t, err) e, err := r.Rest() - c.Check(err, Equals, nil) + require.NoError(t, err) return ds.EntryKeys(e) } listA := run(mpds, dsq.Query{}) listB := run(ktds, dsq.Query{}) - c.Check(len(listA), Equals, len(listB)) + require.Equal(t, len(listA), len(listB)) // sort them cause yeah. sort.Sort(ds.KeySlice(listA)) @@ -85,24 +76,16 @@ func (ks *DSSuite) TestBasic(c *C) { for i, kA := range listA { kB := listB[i] - c.Check(pair.Invert(kA), Equals, kB) - c.Check(kA, Equals, pair.Convert(kB)) + require.Equal(t, kB, pair.Invert(kA)) + require.Equal(t, pair.Convert(kB), kA) } - c.Log("listA: ", listA) - c.Log("listB: ", listB) + t.Log("listA: ", listA) + t.Log("listB: ", listB) - if err := ktds.Check(ctx); err != dstest.ErrTest { - c.Errorf("Unexpected Check() error: %s", err) - } - - if err := ktds.CollectGarbage(ctx); err != dstest.ErrTest { - c.Errorf("Unexpected CollectGarbage() error: %s", err) - } - - if err := ktds.Scrub(ctx); err != dstest.ErrTest { - c.Errorf("Unexpected Scrub() error: %s", err) - } + require.ErrorIs(t, ktds.Check(ctx), dstest.ErrTest) + require.ErrorIs(t, ktds.CollectGarbage(ctx), dstest.ErrTest) + require.ErrorIs(t, ktds.Scrub(ctx), dstest.ErrTest) } func strsToKeys(strs []string) []ds.Key { diff --git a/namespace/namespace_test.go b/namespace/namespace_test.go index b873ddf3..792c0c2e 100644 --- a/namespace/namespace_test.go +++ b/namespace/namespace_test.go @@ -1,32 +1,23 @@ package namespace_test import ( - "bytes" "context" "sort" "testing" - . "gopkg.in/check.v1" - ds "github.com/ipfs/go-datastore" ns "github.com/ipfs/go-datastore/namespace" dsq "github.com/ipfs/go-datastore/query" dstest "github.com/ipfs/go-datastore/test" + "github.com/stretchr/testify/require" ) -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { TestingT(t) } - -type DSSuite struct{} - -var _ = Suite(&DSSuite{}) - -func (ks *DSSuite) TestBasic(c *C) { - ks.testBasic(c, "abc") - ks.testBasic(c, "") +func TestBasic(t *testing.T) { + testBasic(t, "abc") + testBasic(t, "") } -func (ks *DSSuite) testBasic(c *C, prefix string) { +func testBasic(t *testing.T, prefix string) { ctx := context.Background() mpds := ds.NewMapDatastore() @@ -43,32 +34,32 @@ func (ks *DSSuite) testBasic(c *C, prefix string) { for _, k := range keys { err := nsds.Put(ctx, k, []byte(k.String())) - c.Check(err, Equals, nil) + require.NoError(t, err) } for _, k := range keys { v1, err := nsds.Get(ctx, k) - c.Check(err, Equals, nil) - c.Check(bytes.Equal(v1, []byte(k.String())), Equals, true) + require.NoError(t, err) + require.Equal(t, []byte(k.String()), v1) v2, err := mpds.Get(ctx, ds.NewKey(prefix).Child(k)) - c.Check(err, Equals, nil) - c.Check(bytes.Equal(v2, []byte(k.String())), Equals, true) + require.NoError(t, err) + require.Equal(t, []byte(k.String()), v2) } run := func(d ds.Datastore, q dsq.Query) []ds.Key { r, err := d.Query(ctx, q) - c.Check(err, Equals, nil) + require.NoError(t, err) e, err := r.Rest() - c.Check(err, Equals, nil) + require.NoError(t, err) return ds.EntryKeys(e) } listA := run(mpds, dsq.Query{}) listB := run(nsds, dsq.Query{}) - c.Check(len(listA), Equals, len(listB)) + require.Equal(t, len(listA), len(listB)) // sort them cause yeah. sort.Sort(ds.KeySlice(listA)) @@ -76,12 +67,12 @@ func (ks *DSSuite) testBasic(c *C, prefix string) { for i, kA := range listA { kB := listB[i] - c.Check(nsds.InvertKey(kA), Equals, kB) - c.Check(kA, Equals, nsds.ConvertKey(kB)) + require.Equal(t, kB, nsds.InvertKey(kA)) + require.Equal(t, nsds.ConvertKey(kB), kA) } } -func (ks *DSSuite) TestQuery(c *C) { +func TestQuery(t *testing.T) { ctx := context.Background() mpds := dstest.NewTestDatastore(true) @@ -98,11 +89,11 @@ func (ks *DSSuite) TestQuery(c *C) { for _, k := range keys { err := mpds.Put(ctx, k, []byte(k.String())) - c.Check(err, Equals, nil) + require.NoError(t, err) } qres, err := nsds.Query(ctx, dsq.Query{}) - c.Check(err, Equals, nil) + require.NoError(t, err) expect := []dsq.Entry{ {Key: "/bar", Size: len([]byte("/foo/bar")), Value: []byte("/foo/bar")}, @@ -111,43 +102,35 @@ func (ks *DSSuite) TestQuery(c *C) { } results, err := qres.Rest() - c.Check(err, Equals, nil) + require.NoError(t, err) sort.Slice(results, func(i, j int) bool { return results[i].Key < results[j].Key }) for i, ent := range results { - c.Check(ent.Key, Equals, expect[i].Key) - c.Check(string(ent.Value), Equals, string(expect[i].Value)) + require.Equal(t, expect[i].Key, ent.Key) + require.Equal(t, string(expect[i].Value), string(ent.Value)) } qres.Close() qres, err = nsds.Query(ctx, dsq.Query{Prefix: "bar"}) - c.Check(err, Equals, nil) + require.NoError(t, err) expect = []dsq.Entry{ {Key: "/bar/baz", Size: len([]byte("/foo/bar/baz")), Value: []byte("/foo/bar/baz")}, } results, err = qres.Rest() - c.Check(err, Equals, nil) + require.NoError(t, err) sort.Slice(results, func(i, j int) bool { return results[i].Key < results[j].Key }) for i, ent := range results { - c.Check(ent.Key, Equals, expect[i].Key) - c.Check(string(ent.Value), Equals, string(expect[i].Value)) + require.Equal(t, expect[i].Key, ent.Key) + require.Equal(t, string(expect[i].Value), string(ent.Value)) } - if err := nsds.Check(ctx); err != dstest.ErrTest { - c.Errorf("Unexpected Check() error: %s", err) - } - - if err := nsds.CollectGarbage(ctx); err != dstest.ErrTest { - c.Errorf("Unexpected CollectGarbage() error: %s", err) - } - - if err := nsds.Scrub(ctx); err != dstest.ErrTest { - c.Errorf("Unexpected Scrub() error: %s", err) - } + require.ErrorIs(t, nsds.Check(ctx), dstest.ErrTest) + require.ErrorIs(t, nsds.CollectGarbage(ctx), dstest.ErrTest) + require.ErrorIs(t, nsds.Scrub(ctx), dstest.ErrTest) } func strsToKeys(strs []string) []ds.Key {