# file : tests/test/script/runner/set.testscript # 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 checked 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 : { : non-empty : $c <'"foo" "bar"' EOI : empty : $c <'' EOI : spaces : $c <'' 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 : empty : $c <'' EOI : spaces : $c <'""' 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 } } : deadline : { : not-reached : $c <'foo' EOI : non-pipe : $c <'foo' EOI : set-reached : $c <>~%EOE% != 0 $* -o 'foo' -l 10 | env -t 1 -- set bar EOI %testscript:.*: error: set terminated: execution timeout expired% %. EOE : driver-reached : $c <>~%EOE% != 0 env -t 1 -- $* -o 'foo' -l 10 | set bar EOI %testscript:.*: error: .+driver.* terminated: execution timeout expired% %. EOE : read-some-data : { s="----------------------------------------------------------------------" s="$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s" s="$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s" : failure : $c <>~%EOE% != 0 echo "$s" >=f; $* -o 'foo' -l 10 | cat f - | env -t 2 -- set bar EOI %testscript:.*: error: set terminated: execution timeout expired% %. EOE : success : : Note that the cat builtin ends up with the 'broken pipe' diagnostics or : similar. : $c <=f; timeout --success 2; $* -o 'foo' -l 10 | cat f - 2>>~%EOE% | set bar %cat: .+% EOE 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 }