# file : tests/test/script/builtin/rm.test # copyright : Copyright (c) 2014-2017 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file .include ../common.test : 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 } }