aboutsummaryrefslogtreecommitdiff
path: root/tests/test/script
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2017-01-14 21:06:53 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2017-01-19 17:56:07 +0300
commit78854e832f84d58236ca1009338a62640cd5a543 (patch)
tree77bc1341ecb77a2f28a0979c5678ef4abacdfe2a /tests/test/script
parenta83f3866667bca073c4d4c5d80b4deb5ac05906c (diff)
Add rmdir builtin
Diffstat (limited to 'tests/test/script')
-rw-r--r--tests/test/script/builtin/buildfile2
-rw-r--r--tests/test/script/builtin/rm.test71
-rw-r--r--tests/test/script/builtin/rmdir.test125
3 files changed, 165 insertions, 33 deletions
diff --git a/tests/test/script/builtin/buildfile b/tests/test/script/builtin/buildfile
index 8c4196d..fe25065 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 echo mkdir rm touch} $b
+./: test{cat echo mkdir rm rmdir touch} $b
diff --git a/tests/test/script/builtin/rm.test b/tests/test/script/builtin/rm.test
index a6de003..937633b 100644
--- a/tests/test/script/builtin/rm.test
+++ b/tests/test/script/builtin/rm.test
@@ -37,21 +37,25 @@
: not-exists
:
- : Removing non-existing file fails.
- :
- $c <<EOI;
- rm a 2>>/~%EOE% == 1
- %rm: unable to remove '.+/test/rm/file/not-exists/test/1/a': .+%
- EOE
- EOI
- $b
+ {
+ : fail
+ :
+ : Removing non-existing file fails.
+ :
+ $c <<EOI;
+ rm a 2>>/~%EOE% == 1
+ %rm: unable to remove '.+/file/not-exists/fail/test/1/a': .+%
+ EOE
+ EOI
+ $b
- : not-exists-force
- :
- : Removing non-existing file succeeds with -f option.
- :
- $c <'rm -f a';
- $b
+ : force
+ :
+ : Removing non-existing file succeeds with -f option.
+ :
+ $c <'rm -f a';
+ $b
+ }
}
: dir
@@ -101,23 +105,26 @@
: outside-scope
:
- : Removing path outside the testscript working directory fails. Need to use
- : a path that unlikely exists (not to remove something useful).
- :
- :
- $c <<EOI;
- rm ../../a/b/c 2>>/~%EOE% == 1
- %rm: '.+/path/outside-scope/a/b/c' is out of working directory '.+/outside-scope/test'%
- EOE
- EOI
- $b
+ : Need to use a path that unlikely exists (not to remove something useful).
+ :
+ {
+ : fail
+ :
+ : Removing path outside the testscript working directory fails.
+ :
+ $c <<EOI;
+ 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
+ $b
- : outside-scope-force
- :
- : Removing path outside the testscript working directory succeeds with -f
- : option. Need to use a path that unlikely exists (not to remove something
- : useful).
- :
- $c <'rm -f ../../a/b/c';
- $b
+ : force
+ :
+ : Removing path outside the testscript working directory succeeds with -f
+ : option.
+ :
+ $c <'rm -f ../../a/b/c';
+ $b
+ }
}
diff --git a/tests/test/script/builtin/rmdir.test b/tests/test/script/builtin/rmdir.test
new file mode 100644
index 0000000..7621425
--- /dev/null
+++ b/tests/test/script/builtin/rmdir.test
@@ -0,0 +1,125 @@
+# file : tests/test/script/builtin/rmdir.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 <'rmdir 2>"rmdir: missing directory" == 1';
+ $b
+
+ : force
+ :
+ : Removing with no arguments succeeds with -f option.
+ :
+ $c <'rmdir -f';
+ $b
+}
+
+: dir
+:
+{
+ : empty-path
+ :
+ : Removing an empty path fails.
+ :
+ $c <<EOI;
+ rmdir '' 2>"rmdir: invalid path ''" == 1
+ EOI
+ $b
+
+ : test-scope
+ :
+ : Removing scope directory fails.
+ :
+ $c <<EOI;
+ rmdir ./ 2>"rmdir: '$~' contains test working directory '$~'" == 1
+ EOI
+ $b
+
+ : outside-scope
+ :
+ : Need to use a path that unlikely exists (not to remove something useful).
+ :
+ {
+ : fail
+ :
+ : Removing directory outside the testscript working directory fails.
+ :
+ $c <<EOI;
+ rmdir ../../a/b/c 2>>/~%EOE% == 1
+ %rmdir: '.+/dir/outside-scope/fail/a/b/c' is out of working directory '.+/dir/outside-scope/fail/test'%
+ EOE
+ EOI
+ $b
+
+ : force
+ :
+ : Removing path outside the testscript working directory succeeds with -f
+ : option.
+ :
+ $c <'rmdir -f ../../a/b/c';
+ $b
+ }
+
+ : exists
+ :
+ : Removing existing directory succeeds.
+ :
+ $c <<EOI;
+ mkdir a &!a;
+ rmdir a
+ EOI
+ $b
+
+ : not-exists
+ :
+ {
+ : fail
+ : Removing non-existing directory fails.
+ :
+ $c <<EOI;
+ rmdir a 2>>/~%EOE% == 1
+ %rmdir: unable to remove '.+/dir/not-exists/fail/test/1/a': .+%
+ EOE
+ EOI
+ $b
+
+ : force
+ :
+ : Removing non-existing directory succeeds with -f option.
+ :
+ $c <'rmdir -f a';
+ $b
+ }
+
+ : not-empty
+ :
+ : Removing non-empty directory fails.
+ :
+ $c <<EOI;
+ mkdir -p a/b;
+ rmdir a 2>>/~%EOE% == 1
+ %rmdir: unable to remove '.+/dir/not-empty/test/1/a': .+%
+ EOE
+ EOI
+ $b
+
+ : not-dir
+ :
+ : Removing not a directory path fails.
+ :
+ $c <<EOI;
+ touch a;
+ rmdir a 2>>/~%EOE% == 1
+ %rmdir: unable to remove '.+/dir/not-dir/test/1/a': .+%
+ EOE
+ EOI
+ $b
+}