aboutsummaryrefslogtreecommitdiff
path: root/unit-tests/test/script
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2016-10-26 21:22:10 +0300
committerBoris Kolpackov <boris@codesynthesis.com>2016-11-04 09:26:36 +0200
commit023d8d8b040d5fce821080b016b4ce25eb67550d (patch)
tree9524aa8cb18bcca33ec89f4cd4ef2b87fb3a65e8 /unit-tests/test/script
parent5daf46f700217521e8ba90c4be0e0369105544df (diff)
Add support of merge redirect to testscript parser
Diffstat (limited to 'unit-tests/test/script')
-rw-r--r--unit-tests/test/script/lexer/command-line.test12
-rw-r--r--unit-tests/test/script/lexer/script-line.test8
-rw-r--r--unit-tests/test/script/parser/redirect.test71
3 files changed, 91 insertions, 0 deletions
diff --git a/unit-tests/test/script/lexer/command-line.test b/unit-tests/test/script/lexer/command-line.test
index 765b59a..4a71d46 100644
--- a/unit-tests/test/script/lexer/command-line.test
+++ b/unit-tests/test/script/lexer/command-line.test
@@ -40,6 +40,18 @@ $* <:"1 >-" >>EOO # arg-out-null-redirect
>-
EOO
+$* <:"1>&2" >>EOO # merge-redirect
+'1'
+>&
+'2'
+EOO
+
+$* <:"1 >&2" >>EOO # arg-merge-redirect
+'1 '
+>&
+'2'
+EOO
+
$* <:"0<a b" >>EOO # in-str-redirect
'0'
<
diff --git a/unit-tests/test/script/lexer/script-line.test b/unit-tests/test/script/lexer/script-line.test
index a217591..36d440c 100644
--- a/unit-tests/test/script/lexer/script-line.test
+++ b/unit-tests/test/script/lexer/script-line.test
@@ -33,6 +33,14 @@ $* <"cmd <- 1>-" >>EOO # null-redirect
<newline>
EOO
+$* <"cmd 1>&2" >>EOO # merge-redirect
+'cmd'
+'1'
+>&
+'2'
+<newline>
+EOO
+
$* <"cmd <a 1>b" >>EOO # str-redirect
'cmd'
<
diff --git a/unit-tests/test/script/parser/redirect.test b/unit-tests/test/script/parser/redirect.test
index 83b40cd..3497fd9 100644
--- a/unit-tests/test/script/parser/redirect.test
+++ b/unit-tests/test/script/parser/redirect.test
@@ -3,3 +3,74 @@ cmd 0<<<a 1>>>b 2>>>&c
EOI
cmd <<<a >>>b 2>>>&c
EOO
+
+$* <<EOI >>EOO # out-merge1
+cmd 1>&2
+EOI
+cmd >&2
+EOO
+
+$* <<EOI >>EOO # out-merge2
+cmd 1>&2 2>&1 2>a
+EOI
+cmd >&2 2>a
+EOO
+
+$* <<EOI 2>>EOE != 0 # out-merge-fail1
+cmd 1>&a
+EOI
+testscript:1:8: error: invalid stdout merge redirect file descriptor 'a'
+ info: must be 2
+EOE
+
+$* <<EOI 2>>EOE != 0 # out-merge-fail2
+cmd 1>&1
+EOI
+testscript:1:8: error: invalid stdout merge redirect file descriptor '1'
+ info: must be 2
+EOE
+
+$* <<EOI 2>>EOE != 0 # out-merge-fail3
+cmd 1>&
+EOI
+testscript:1:8: error: missing stdout file descriptor
+EOE
+
+$* <<EOI >>EOO # err-merge1
+cmd 2>&1
+EOI
+cmd 2>&1
+EOO
+
+$* <<EOI >>EOO # err-merge2
+cmd 1>&2 2>&1 >a
+EOI
+cmd >a 2>&1
+EOO
+
+$* <<EOI 2>>EOE != 0 # err-merge-fail1
+cmd 2>&2
+EOI
+testscript:1:8: error: invalid stderr merge redirect file descriptor '2'
+ info: must be 1
+EOE
+
+$* <<EOI 2>>EOE != 0 # err-merge-fail2
+cmd 2>&2
+EOI
+testscript:1:8: error: invalid stderr merge redirect file descriptor '2'
+ info: must be 1
+EOE
+
+$* <<EOI 2>>EOE != 0 # err-merge-fail3
+cmd 2>&
+EOI
+testscript:1:8: error: missing stderr file descriptor
+EOE
+
+$* <<EOI 2>>EOE != 0 # merge-fail1
+cmd 1>&2 2>&1
+EOI
+testscript:1:14: error: stdout and stderr merge redirects
+ info: should not be specified both
+EOE