diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2018-09-03 16:37:32 +0200 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2018-09-04 16:29:59 +0300 |
commit | 5007870b52aa549971824959a55ad3bb886f09e0 (patch) | |
tree | b0ef7f24c0b9ece2ed23f3c1792f16da324e4171 /tests/test/script/runner/set.testscript | |
parent | 09d60452a80d14d9b8bf3a9395860b50683fa1e8 (diff) |
Rename .test/test{} to .testscript/testscript{}
Diffstat (limited to 'tests/test/script/runner/set.testscript')
-rw-r--r-- | tests/test/script/runner/set.testscript | 278 |
1 files changed, 278 insertions, 0 deletions
diff --git a/tests/test/script/runner/set.testscript b/tests/test/script/runner/set.testscript new file mode 100644 index 0000000..b10ce1e --- /dev/null +++ b/tests/test/script/runner/set.testscript @@ -0,0 +1,278 @@ +# file : tests/test/script/runner/set.testscript +# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +.include ../common.testscript + +: special +: +{ + : pipelining + : + $c <'set foo | cat >bar' && $b 2>>EOE != 0 + testscript:1:1: error: set builtin must be the last pipe command + EOE + + : redirecting + : + { + : stdout + : + $c <'set foo >bar' && $b 2>>EOE != 0 + testscript:1:1: error: set builtin stdout cannot be redirected + EOE + + : stderr + : + $c <'set foo 2>bar' && $b 2>>EOE != 0 + testscript:1:1: error: set builtin stderr cannot be redirected + EOE + } + + : status + : + $c <'set foo == 1' && $b 2>>EOE != 0 + testscript:1:1: error: set builtin exit code cannot be non-zero + EOE +} + +: arguments +: +{ + : none + : + $c <'set -e' && $b 2>>EOE != 0 + testscript:1:1: error: missing variable name + EOE + + : unexpected + : + $c <'set foo bar baz' && $b 2>>EOE != 0 + testscript:1:1: error: unexpected argument + EOE + + : empty-attrs + : + $c <"set '' baz" && $b 2>>EOE != 0 + testscript:1:1: error: empty variable attributes + EOE + + : empty-var + : + $c <"set ''" && $b 2>>EOE != 0 + testscript:1:1: error: empty variable name + EOE +} + +: whitespace-separated-list +: +{ + : non-exact + : + $c <<EOI && $b + set -w baz <' foo bar '; + echo $baz >'foo bar' + EOI + + : exact + : + { + : trailing-ws + : + $c <<EOI && $b + set -e -w baz <' foo bar '; + echo $baz >'foo bar ' + EOI + + : no-trailing-ws + : + : Note that we need to strip the default trailing newline as well with the + : ':' modifier. + : + $c <<EOI && $b + set -e -w baz <:' foo bar'; + echo $baz >'foo bar' + EOI + } +} + +: newline-separated-list +: +{ + : non-exact + : + $c <<EOI && $b + set -n baz <<EOF; + + foo + + bar + + EOF + echo $baz >' foo bar ' + EOI + + : exact + : + { + : trailing-newline + : + $c <<EOI && $b + set -e -n baz <<EOF; + + foo + + bar + + EOF + echo $baz >' foo bar ' + EOI + + : no-trailing-newline + : + $c <<EOI && $b + set -e -n baz <<:EOF; + + foo + + bar + EOF + echo $baz >' foo bar' + EOI + } +} + +: string +: +{ + : non-exact + : + $c <<EOI && $b + set baz <<EOF; + + foo + + bar + + EOF + echo $baz >>EOO + + foo + + bar + + EOO + EOI + + : roundtrip + : + echo 'foo' | set bar; + echo "$bar" >'foo' + + : exact + : + : Note that echo adds the trailing newline, so EOF and EOO here-documents + : differ by this newline. + : + { + : trailing-newline + : + $c <<EOI && $b + set -e baz <<EOF; + + foo + + bar + EOF + echo "$baz" >>EOO + + foo + + bar + + EOO + EOI + + : no-trailing-newline + : + $c <<EOI && $b + set -e baz <<:EOF; + + foo + + bar + EOF + echo "$baz" >>EOO + + foo + + bar + EOO + EOI + } +} + +: attributes +: +{ + : dir_path + : + $c <<EOI && $b + set [dir_path] bar <'foo'; + echo $bar >/'foo/' + EOI + + : null + : + $c <<EOI && $b + set [null] foo <-; + echo $foo >'' + EOI + + : none + : + $c <<EOI && $b 2>>EOE != 0 + set -w baz <'foo bar'; + echo "$baz" + EOI + testscript:2:8: error: concatenating variable expansion contains multiple values + EOE + + # @@ Move the following tests to build2 parser unit tests when created. + # + : empty-brackets + : + $c <<EOI && $b 2>>EOE != 0 + set -w '[]' baz <'foo bar'; + echo "$baz" + EOI + testscript:2:8: error: concatenating variable expansion contains multiple values + EOE + + : no-left-bracket + : + $c <<EOI && $b 2>>EOE != 0 + set -w x baz + EOI + <attributes>:1:1: error: expected '[' instead of 'x' + testscript:1:1: info: while parsing attributes 'x' + EOE + + : unknown + : + $c <<EOI && $b 2>>EOE != 0 + set -w [x] baz + EOI + <attributes>:1:1: error: unknown value attribute x + testscript:1:1: info: while parsing attributes '[x]' + EOE + + : junk + : + $c <<EOI && $b 2>>EOE != 0 + set -w '[string] x' baz + EOI + <attributes>:1:10: error: trailing junk after ']' + testscript:1:1: info: while parsing attributes '[string] x' + EOE +} |