aboutsummaryrefslogtreecommitdiff
path: root/unit-tests
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2016-10-27 12:10:58 +0300
committerBoris Kolpackov <boris@codesynthesis.com>2016-11-04 09:26:36 +0200
commitadf27f5e17f4de774b3121c3669e3947ad4c9ca5 (patch)
tree8d81b3c921bd54a3358b621dd2945f36a167d03b /unit-tests
parent2b8601ca72b7b3cbb3b76d96102e9607efab16b7 (diff)
Add support of cleanups to testscript parser
Diffstat (limited to 'unit-tests')
-rw-r--r--unit-tests/test/script/lexer/command-line.test10
-rw-r--r--unit-tests/test/script/lexer/script-line.test9
-rw-r--r--unit-tests/test/script/parser/buildfile4
-rw-r--r--unit-tests/test/script/parser/cleanup.test35
4 files changed, 56 insertions, 2 deletions
diff --git a/unit-tests/test/script/lexer/command-line.test b/unit-tests/test/script/lexer/command-line.test
index 4a71d46..bc791dc 100644
--- a/unit-tests/test/script/lexer/command-line.test
+++ b/unit-tests/test/script/lexer/command-line.test
@@ -117,3 +117,13 @@ $* <:"1>>>&a b" >>EOO # out-file-app-redirect
>>>&
'a b'
EOO
+
+$* <:"&file" >>EOO # file-cleanup
+&
+'file'
+EOO
+
+$* <:"&dir/" >>EOO # dir-cleanup
+&
+'dir/'
+EOO
diff --git a/unit-tests/test/script/lexer/script-line.test b/unit-tests/test/script/lexer/script-line.test
index 36d440c..6c5038a 100644
--- a/unit-tests/test/script/lexer/script-line.test
+++ b/unit-tests/test/script/lexer/script-line.test
@@ -92,3 +92,12 @@ $* <"cmd <<<in >>>out 2>>>&err" >>EOO # file-redirect
'err'
<newline>
EOO
+
+$* <"cmd &file &dir/" >>EOO # cleanup
+'cmd'
+&
+'file'
+&
+'dir/'
+<newline>
+EOO
diff --git a/unit-tests/test/script/parser/buildfile b/unit-tests/test/script/parser/buildfile
index b053971..e64159e 100644
--- a/unit-tests/test/script/parser/buildfile
+++ b/unit-tests/test/script/parser/buildfile
@@ -11,7 +11,7 @@ filesystem config/{utility init operation} dump types-parsers \
test/{target script/{token lexer parser script}}
exe{driver}: cxx{driver} ../../../../build2/cxx{$src} $libs \
-test{pre-parse expansion redirect here-document command-re-parse scope \
- setup-teardown}
+test{cleanup command-re-parse expansion here-document pre-parse redirect \
+ scope setup-teardown}
include ../../../../build2/
diff --git a/unit-tests/test/script/parser/cleanup.test b/unit-tests/test/script/parser/cleanup.test
new file mode 100644
index 0000000..7fe746d
--- /dev/null
+++ b/unit-tests/test/script/parser/cleanup.test
@@ -0,0 +1,35 @@
+$* <<EOI >>EOO # file-dir
+cmd &file &dir/
+EOI
+cmd &file &dir/
+EOO
+
+$* <<EOI >>EOO # quote-file-dir
+cmd &"f ile" &"d ir/"
+EOI
+cmd &"f ile" &"d ir/"
+EOO
+
+$* <<EOI >>EOO # dup-file
+cmd &file &file
+EOI
+cmd &file &file
+EOO
+
+$* <<EOI 2>>EOE != 0 # file-fail1
+cmd & >file
+EOI
+testscript:1:7: error: missing cleanup path
+EOE
+
+$* <<EOI 2>>EOE != 0 # file-fail2
+cmd &
+EOI
+testscript:1:6: error: missing cleanup path
+EOE
+
+$* <<EOI 2>>EOE != 0 # file-fail3
+cmd &""
+EOI
+testscript:1:6: error: empty cleanup path
+EOE