diff options
Diffstat (limited to 'tests/test/script/builtin/rm.testscript')
-rw-r--r-- | tests/test/script/builtin/rm.testscript | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/tests/test/script/builtin/rm.testscript b/tests/test/script/builtin/rm.testscript new file mode 100644 index 0000000..3dd2674 --- /dev/null +++ b/tests/test/script/builtin/rm.testscript @@ -0,0 +1,119 @@ +# file : tests/test/script/builtin/rm.testscript +# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +.include ../common.testscript + +: no-args +: +{ + : fail + : + : Removing with no arguments fails. + : + $c <'rm 2>"rm: missing file" == 1' && $b + + : force + : + : Removing with no arguments succeeds with -f option. + : + $c <'rm -f' && $b +} + +: file +: +{ + : exists + : + : Removing existing file succeeds. + : + $c <<EOI && $b + touch a &!a; + rm a + EOI + + : not-exists + : + { + : fail + : + : Removing non-existing file fails. + : + $c <<EOI && $b + rm a 2>>/~%EOE% == 1 + %rm: unable to remove '.+/file/not-exists/fail/test/1/a': .+% + EOE + EOI + + : force + : + : Removing non-existing file succeeds with -f option. + : + $c <'rm -f a' && $b + } +} + +: dir +: +{ + : default + : + : Removing directory fails by default. + : + $c <<EOI && $b + mkdir a; + rm a 2>"rm: '$normalize([path] $~/a)' is a directory" == 1 + EOI + + : recursive + : + : Removing directory succeeds with -r option. + : + $c <<EOI && $b + mkdir -p a/b &!a &!a/b; + rm -r a + EOI + + : scope + : + : Removing scope directory fails. + : + $c <<EOI && $b + rm -r ./ 2>"rm: '([string] $~)' contains test working directory '$~'" == 1 + EOI +} + +: path +: +{ + : empty + : + : Removing an empty path fails. + : + $c <<EOI && $b + rm '' 2>"rm: invalid path ''" == 1 + EOI + + : outside-scope + : + : Need to use a path that unlikely exists (not to remove something useful). + : + { + : fail + : + : Removing path outside the testscript working directory fails. + : + $c <<EOI && $b + rm ../../a/b/c 2>>/~%EOE% == 1 + %rm: '.+/path/outside-scope/fail/a/b/c' is out of working directory '.+/path/outside-scope/fail/test'% + EOE + EOI + + : force + : + : Removing path outside the testscript working directory succeeds with -f + : option. + : + $c <'rm -f ../../a/b/c' && $b + } +} |