# file : tests/test/script/runner/set.testscript # copyright : Copyright (c) 2014-2019 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 info: test id: 1 EOE : redirecting : { : stdout : $c <'set foo >bar' && $b 2>>EOE != 0 testscript:1:1: error: set builtin stdout cannot be redirected info: test id: 1 EOE : stderr : $c <'set foo 2>bar' && $b 2>>EOE != 0 testscript:1:1: error: set builtin stderr cannot be redirected info: test id: 1 EOE } : status : $c <'set foo == 1' && $b 2>>EOE != 0 testscript:1:1: error: set builtin exit code cannot be non-zero info: test id: 1 EOE } : options : { : unknown : $c <'set -u' && $b 2>>EOE != 0 testscript:1:1: error: set: unknown option '-u' info: test id: 1 EOE : both-newline-whitespace : $c <'set -nw' && $b 2>>EOE != 0 testscript:1:1: error: both -n|--newline and -w|--whitespace specified info: test id: 1 EOE } : arguments : { : none : $c <'set -e' && $b 2>>EOE != 0 testscript:1:1: error: missing variable name info: test id: 1 EOE : unexpected : $c <'set foo bar baz' && $b 2>>EOE != 0 testscript:1:1: error: unexpected argument 'baz' info: test id: 1 EOE : empty-attrs : $c <"set '' baz" && $b 2>>EOE != 0 testscript:1:1: error: empty variable attributes info: test id: 1 EOE : empty-var : $c <"set ''" && $b 2>>EOE != 0 testscript:1:1: error: empty variable name info: test id: 1 EOE } : whitespace-separated-list : { : non-exact : $c <'foo bar' EOI : exact : { : trailing-ws : $c <'foo bar ' EOI : no-trailing-ws : : Note that we need to strip the default trailing newline as well with the : ':' modifier. : $c <'foo bar' EOI } } : newline-separated-list : { : non-exact : $c <' foo bar ' EOI : exact : { : trailing-newline : $c <' foo bar ' EOI : no-trailing-newline : $c <' foo bar' EOI } } : string : { : non-exact : $c <>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 <>EOO foo bar EOO EOI : no-trailing-newline : $c <>EOO foo bar EOO EOI } } : attributes : { : dir_path : $c </'foo/' EOI : null : $c <'' EOI : none : $c <>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 <>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 <>EOE != 0 set -w x baz EOI :1:1: error: expected '[' instead of 'x' testscript:1:1: info: while parsing attributes 'x' info: test id: 1 EOE : unknown : $c <>EOE != 0 set -w [x] baz EOI :1:1: error: unknown value attribute x testscript:1:1: info: while parsing attributes '[x]' info: test id: 1 EOE : junk : $c <>EOE != 0 set -w '[string] x' baz EOI :1:10: error: trailing junk after ']' testscript:1:1: info: while parsing attributes '[string] x' info: test id: 1 EOE }