Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
d6fc414b
提交
d6fc414b
authored
5月 09, 2015
作者:
Juan Batiz-Benet
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1212 from wking/fix-recursive-path-resolution
path/resolver: Fix recursive path resolution
上级
cd37b674
19823c67
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
85 行增加
和
1 行删除
+85
-1
resolver.go
path/resolver.go
+2
-1
resolver_test.go
path/resolver_test.go
+83
-0
没有找到文件。
path/resolver.go
浏览文件 @
d6fc414b
...
@@ -122,7 +122,8 @@ func (s *Resolver) ResolveLinks(ctx context.Context, ndd *merkledag.Node, names
...
@@ -122,7 +122,8 @@ func (s *Resolver) ResolveLinks(ctx context.Context, ndd *merkledag.Node, names
// fetch object for link and assign to nd
// fetch object for link and assign to nd
ctx
,
cancel
:=
context
.
WithTimeout
(
ctx
,
time
.
Minute
)
ctx
,
cancel
:=
context
.
WithTimeout
(
ctx
,
time
.
Minute
)
defer
cancel
()
defer
cancel
()
nd
,
err
:=
s
.
DAG
.
Get
(
ctx
,
next
)
var
err
error
nd
,
err
=
s
.
DAG
.
Get
(
ctx
,
next
)
if
err
!=
nil
{
if
err
!=
nil
{
return
append
(
result
,
nd
),
err
return
append
(
result
,
nd
),
err
}
}
...
...
path/resolver_test.go
0 → 100644
浏览文件 @
d6fc414b
package
path_test
import
(
"fmt"
"testing"
datastore
"github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore"
sync
"github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore/sync"
context
"github.com/ipfs/go-ipfs/Godeps/_workspace/src/golang.org/x/net/context"
blockstore
"github.com/ipfs/go-ipfs/blocks/blockstore"
blockservice
"github.com/ipfs/go-ipfs/blockservice"
offline
"github.com/ipfs/go-ipfs/exchange/offline"
merkledag
"github.com/ipfs/go-ipfs/merkledag"
path
"github.com/ipfs/go-ipfs/path"
util
"github.com/ipfs/go-ipfs/util"
)
func
randNode
()
(
*
merkledag
.
Node
,
util
.
Key
)
{
node
:=
new
(
merkledag
.
Node
)
node
.
Data
=
make
([]
byte
,
32
)
util
.
NewTimeSeededRand
()
.
Read
(
node
.
Data
)
k
,
_
:=
node
.
Key
()
return
node
,
k
}
func
TestRecurivePathResolution
(
t
*
testing
.
T
)
{
ctx
:=
context
.
Background
()
dstore
:=
sync
.
MutexWrap
(
datastore
.
NewMapDatastore
())
bstore
:=
blockstore
.
NewBlockstore
(
dstore
)
bserv
,
err
:=
blockservice
.
New
(
bstore
,
offline
.
Exchange
(
bstore
))
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
dagService
:=
merkledag
.
NewDAGService
(
bserv
)
a
,
_
:=
randNode
()
b
,
_
:=
randNode
()
c
,
cKey
:=
randNode
()
err
=
b
.
AddNodeLink
(
"grandchild"
,
c
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
err
=
a
.
AddNodeLink
(
"child"
,
b
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
err
=
dagService
.
AddRecursive
(
a
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
aKey
,
err
:=
a
.
Key
()
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
segments
:=
[]
string
{
""
,
"ipfs"
,
aKey
.
String
(),
"child"
,
"grandchild"
}
p
,
err
:=
path
.
FromSegments
(
segments
...
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
resolver
:=
&
path
.
Resolver
{
DAG
:
dagService
}
node
,
err
:=
resolver
.
ResolvePath
(
ctx
,
p
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
key
,
err
:=
node
.
Key
()
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
if
key
.
String
()
!=
cKey
.
String
()
{
t
.
Fatal
(
fmt
.
Errorf
(
"recursive path resolution failed for %s: %s != %s"
,
p
.
String
(),
key
.
String
(),
cKey
.
String
()))
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论