提交 fe7b01f1 作者: Jakub Sztandera 提交者: Jeromy Johnson

Resolve symlink if it is directly referenced in cli (#2897)

* Resolve symlink if it is directly referenced in cli

test: Directly referenced symlink should be resolved

License: MIT
Signed-off-by: 's avatarJakub Sztandera <kubuxu@protonmail.ch>

* sharness: add test for symlink in the middle

License: MIT
Signed-off-by: 's avatarJakub Sztandera <kubuxu@protonmail.ch>
上级 d72c9fcd
...@@ -388,7 +388,10 @@ func appendFile(fpath string, argDef *cmds.Argument, recursive, hidden bool) (fi ...@@ -388,7 +388,10 @@ func appendFile(fpath string, argDef *cmds.Argument, recursive, hidden bool) (fi
} }
fpath = filepath.ToSlash(filepath.Clean(fpath)) fpath = filepath.ToSlash(filepath.Clean(fpath))
fpath, err := filepath.EvalSymlinks(fpath)
if err != nil {
return nil, err
}
stat, err := os.Lstat(fpath) stat, err := os.Lstat(fpath)
if err != nil { if err != nil {
return nil, err return nil, err
......
...@@ -11,9 +11,13 @@ test_description="Test add -w" ...@@ -11,9 +11,13 @@ test_description="Test add -w"
test_expect_success "creating files succeeds" ' test_expect_success "creating files succeeds" '
mkdir -p files/foo && mkdir -p files/foo &&
mkdir -p files/bar && mkdir -p files/bar &&
mkdir -p files/badin
echo "some text" > files/foo/baz && echo "some text" > files/foo/baz &&
ln -s files/foo/baz files/bar/baz && ln -s ../foo/baz files/bar/baz &&
ln -s files/does/not/exist files/bad ln -s files/does/not/exist files/badin/bad &&
mkdir -p files2/a/b/c &&
echo "some other text" > files2/a/b/c/foo &&
ln -s b files2/a/d
' '
test_add_symlinks() { test_add_symlinks() {
...@@ -23,27 +27,34 @@ test_add_symlinks() { ...@@ -23,27 +27,34 @@ test_add_symlinks() {
' '
test_expect_success "output looks good" ' test_expect_success "output looks good" '
echo QmWdiHKoeSW8G1u7ATCgpx4yMoUhYaJBQGkyPLkS9goYZ8 > filehash_exp && echo QmQRgZT6xVFKJLVVpJDu3WcPkw2iqQ1jqK1F9jmdeq9zAv > filehash_exp &&
test_cmp filehash_exp filehash_out test_cmp filehash_exp filehash_out
' '
test_expect_success "adding a symlink adds the link itself" ' test_expect_success "adding a symlink adds the file itself" '
ipfs add -q files/bar/baz > goodlink_out ipfs add -q files/bar/baz > goodlink_out
' '
test_expect_success "output looks good" ' test_expect_success "output looks good" '
echo "QmdocmZeF7qwPT9Z8SiVhMSyKA2KKoA2J7jToW6z6WBmxR" > goodlink_exp && echo QmcPNXE5zjkWkM24xQ7Bi3VAm8fRxiaNp88jFsij7kSQF1 > goodlink_exp &&
test_cmp goodlink_exp goodlink_out test_cmp goodlink_exp goodlink_out
' '
test_expect_success "adding a broken symlink works" ' test_expect_success "adding a broken symlink works" '
ipfs add -q files/bad > badlink_out ipfs add -qr files/badin | head -1 > badlink_out
' '
test_expect_success "output looks good" ' test_expect_success "output looks good" '
echo "QmWYN8SEXCgNT2PSjB6BnxAx6NJQtazWoBkTRH9GRfPFFQ" > badlink_exp && echo "QmWYN8SEXCgNT2PSjB6BnxAx6NJQtazWoBkTRH9GRfPFFQ" > badlink_exp &&
test_cmp badlink_exp badlink_out test_cmp badlink_exp badlink_out
' '
test_expect_success "adding with symlink in middle of path is same as\
adding with no symlink" '
ipfs add -rq files2/a/b/c > no_sym &&
ipfs add -rq files2/a/d/c > sym &&
test_cmp no_sym sym
'
} }
test_init_ipfs test_init_ipfs
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论