diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2017-06-14 17:56:49 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2017-06-15 21:08:07 +0300 |
commit | fc8c0e410697928d644f06dea772b51c3abc0e3f (patch) | |
tree | e136e0d5e3df77ef65818ea94fee1bdced9a074f /tests/test/script | |
parent | 87f97db9d5dbe2aefbeb6c49c4bb65aa3b8afbc7 (diff) |
Add support for ln testscript builtin
Diffstat (limited to 'tests/test/script')
-rw-r--r-- | tests/test/script/builtin/buildfile | 2 | ||||
-rw-r--r-- | tests/test/script/builtin/ln.test | 184 |
2 files changed, 185 insertions, 1 deletions
diff --git a/tests/test/script/builtin/buildfile b/tests/test/script/builtin/buildfile index f72688d..43649db 100644 --- a/tests/test/script/builtin/buildfile +++ b/tests/test/script/builtin/buildfile @@ -2,4 +2,4 @@ # copyright : Copyright (c) 2014-2017 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file -./: test{cat cp echo mkdir rm rmdir sed test touch} $b +./: test{*} $b diff --git a/tests/test/script/builtin/ln.test b/tests/test/script/builtin/ln.test new file mode 100644 index 0000000..99e2bcb --- /dev/null +++ b/tests/test/script/builtin/ln.test @@ -0,0 +1,184 @@ +# file : tests/test/script/builtin/ln.test +# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +.include ../common.test + +: args +: +{ + : -s-option + : + $c <'ln 2>"ln: missing -s option" == 1' && $b + + : none + : + $c <'ln -s 2>"ln: missing arguments" == 1' && $b + + : no-target + : + $c <'ln -s a 2>"ln: missing target path" == 1' && $b + + : no-trailing-sep + : + $c <<EOI && $b + ln -s a b c 2>"ln: multiple target paths with non-directory link path" == 1 + EOI + + : empty + : + { + : link + : + $c <<EOI && $b + ln -s '' 2>"ln: invalid path ''" == 1 + EOI + + : target1 + : + $c <<EOI && $b + ln -s '' a 2>"ln: invalid path ''" == 1 + EOI + + : target2 + : + $c <<EOI && $b + ln -s '' a b/ 2>"ln: invalid path ''" == 1 + EOI + } +} + +: file +: +: Test creating a file symlink. +: +{ + : non-existing-link-path + : + $c <<EOI && $b + touch a; + ln -s a b && test -f b + EOI + + : existing-link + : + { + : file + : + $c <<EOI && $b + touch a b; + ln -s a b 2>>/~%EOE% != 0 + %( + %ln: unable to create .+link '.+/b' to '.+/a': .+%| + %ln: unable to copy file '.+/a' to '.+/b': .+% + %) + EOE + EOI + + : dir + : + $c <<EOI && $b + touch a; + mkdir b; + ln -s a b 2>>/~%EOE% != 0 + %( + %ln: unable to create .+link '.+/b' to '.+/a': .+%| + %ln: unable to copy file '.+/a' to '.+/b': .+% + %) + EOE + EOI + } + + : non-existing + { + : target + : + $c <<EOI && $b + ln -s a b 2>>/~%EOE% != 0 + %ln: unable to create symlink to '.+/a': no such file or directory% + EOE + EOI + + : link-dir + : + $c <<EOI && $b + touch a; + ln -s a b/c 2>>/~%EOE% != 0 + %( + %ln: unable to create .+link '.+/b/c' to '.+/a': .+%| + %ln: unable to copy file '.+/a' to '.+/b/c': .+% + %) + EOE + EOI + } +} + +: dir +: +: Test creating a directory symlink. +: +{ + : non-existing-link-path + : + $c <<EOI && $b + mkdir a; + touch a/b; + ln -s a c && test -f c/b + EOI + + : existing-link + : + { + : dir + : + $c <<EOI && $b + mkdir a b; + ln -s a b 2>>/~%EOE% != 0 + %( + %ln: unable to create .+link '.+/b' to '.+/a': .+%| + %ln: unable to copy directory '.+/a' to '.+/b': .+% + %) + EOE + EOI + + : file + : + $c <<EOI && $b + mkdir a; + touch b; + ln -s a b 2>>/~%EOE% != 0 + %( + %ln: unable to create .+link '.+/b' to '.+/a': .+%| + %ln: unable to copy directory '.+/a' to '.+/b': .+% + %) + EOE + EOI + } + + : non-existing + { + : link-dir + : + $c <<EOI && $b + mkdir a; + ln -s a b/c 2>>/~%EOE% != 0 + %( + %ln: unable to create .+link '.+/b/c' to '.+/a': .+%| + %ln: unable to copy directory '.+/a' to '.+/b/c': .+% + %) + EOE + EOI + } +} + +: multiple-targets +: +: Test creating links for multiple targets in the specified directory. +: +{ + $c <<EOI && $b + touch a; + mkdir b c; + ln -s a b c/ && test -f c/a && test -d c/b + EOI +} |