From b7fc43b225d74bb0651e4d376910bda53207f80d Mon Sep 17 00:00:00 2001 From: Adin Schmahmann Date: Wed, 26 Aug 2020 13:29:16 -0400 Subject: [PATCH 1/5] ci: remove gx --- .travis.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4cfe98c..5163d69 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,7 +10,6 @@ env: global: - GOTFLAGS="-race" matrix: - - BUILD_DEPTYPE=gx - BUILD_DEPTYPE=gomod @@ -24,7 +23,6 @@ script: cache: directories: - - $GOPATH/src/gx - $GOPATH/pkg/mod - $HOME/.cache/go-build From 7c9c258b97847a4d0cf64c6556c2dcdcd4987985 Mon Sep 17 00:00:00 2001 From: Adin Schmahmann Date: Wed, 26 Aug 2020 13:31:38 -0400 Subject: [PATCH 2/5] chore: bump go version --- .travis.yml | 3 ++- go.mod | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 5163d69..23775ec 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,8 @@ os: language: go go: - - 1.11.x + - 1.14.x + - 1.15.x env: global: diff --git a/go.mod b/go.mod index a048a15..b070559 100644 --- a/go.mod +++ b/go.mod @@ -1,5 +1,7 @@ module github.com/ipfs/go-path +go 1.14 + require ( github.com/ipfs/go-cid v0.0.2 github.com/ipfs/go-ipld-format v0.0.2 From ac811c4b484b06ea22da1071890e94fb4b7ab9be Mon Sep 17 00:00:00 2001 From: Adin Schmahmann Date: Wed, 26 Aug 2020 13:17:48 -0400 Subject: [PATCH 3/5] ResolveToLastNode no longer fetches nodes it does not need --- resolver/resolver.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/resolver/resolver.go b/resolver/resolver.go index 67bb9f6..9f15384 100644 --- a/resolver/resolver.go +++ b/resolver/resolver.go @@ -89,6 +89,10 @@ func (r *Resolver) ResolveToLastNode(ctx context.Context, fpath path.Path) (cid. return cid.Cid{}, nil, err } + if len(rest) == 0 { + return lnk.Cid, nil, nil + } + next, err := lnk.GetNode(ctx, r.DAG) if err != nil { return cid.Cid{}, nil, err From 6d87ec04ebe94d4c105b78fe64471ebdb2a26b70 Mon Sep 17 00:00:00 2001 From: Adin Schmahmann Date: Wed, 26 Aug 2020 13:59:39 -0400 Subject: [PATCH 4/5] test: add test that ResolveToLastNode does not perform unncessary fetches --- resolver/resolver_test.go | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/resolver/resolver_test.go b/resolver/resolver_test.go index 480ccdf..d3c6913 100644 --- a/resolver/resolver_test.go +++ b/resolver/resolver_test.go @@ -105,3 +105,43 @@ func TestRecurivePathResolution(t *testing.T) { p.String(), rCid.String(), cKey.String())) } } + +func TestResolveToLastNode_NoUnnecessaryFetching(t *testing.T) { + ctx := context.Background() + dagService := dagmock.Mock() + + a := randNode() + b := randNode() + + err := a.AddNodeLink("child", b) + if err != nil { + t.Fatal(err) + } + + err = dagService.Add(ctx, a) + if err != nil { + t.Fatal(err) + } + + aKey := a.Cid() + + segments := []string{aKey.String(), "child"} + p, err := path.FromSegments("/ipfs/", segments...) + if err != nil { + t.Fatal(err) + } + + resolver := resolver.NewBasicResolver(dagService) + resolvedCID, remainingPath, err := resolver.ResolveToLastNode(ctx, p) + if err != nil { + t.Fatal(err) + } + + if len(remainingPath) > 0 { + t.Fatal("cannot have remaining path") + } + + if !resolvedCID.Equals(b.Cid()) { + t.Fatal("resolved to the wrong CID") + } +} From 0b2d7c88af32cf24a626e09c3710ca0eb0888ddf Mon Sep 17 00:00:00 2001 From: Robin Date: Mon, 7 Dec 2020 02:48:18 +0800 Subject: [PATCH 5/5] merge ipfs 0.7.0 --- resolver/resolver_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resolver/resolver_test.go b/resolver/resolver_test.go index 6ffe7fa..e20de70 100644 --- a/resolver/resolver_test.go +++ b/resolver/resolver_test.go @@ -126,7 +126,7 @@ func TestResolveToLastNode_NoUnnecessaryFetching(t *testing.T) { aKey := a.Cid() segments := []string{aKey.String(), "child"} - p, err := path.FromSegments("/ipfs/", segments...) + p, err := path.FromSegments("/btfs/", segments...) if err != nil { t.Fatal(err) }