# file : unit-tests/test/script/parser/redirect.test # copyright : Copyright (c) 2014-2017 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file # @@ Add tests for redirects other than file and merge. # @@ Does it make sense to split into separate files - one per redirect type? # : str : { : literal : { : portable-path : $* <>EOO cmd /bar 2>/baz EOI cmd /bar 2>/baz EOO } : regex : { : portable-path : $* <>EOO cmd >/~%foo% 2>/~%bar% EOI cmd >/~%foo% 2>/~%bar% EOO } } : doc : { : literal : { : portable-path : $* <>EOO cmd </EOO_ 2>/EOE_ foo EOI_ bar EOO_ baz EOE_ EOI cmd </EOO_ 2>/EOE_ foo EOI_ bar EOO_ baz EOE_ EOO } : regex : { : portable-path : $* <>EOO cmd >/~%EOF% 2>/~%EOE% foo EOF bar EOE EOI cmd >/~%EOF% 2>/~%EOE% foo EOF bar EOE EOO } } : file : { : cmp : $* <>EOO cmd 0<<>>b 2>>>c EOI cmd <<>>b 2>>>c EOO : write : $* <>EOO cmd 1>=b 2>+c EOI cmd >=b 2>+c EOO : quote : $* <>EOO cmd 0<<<"a f" 1>="b f" 2>+"c f" EOI cmd <<<'a f' >='b f' 2>+'c f' EOO : in : { : missed : $* <>EOE !=0 cmd <<< EOI testscript:1:8: error: missing stdin file EOE : empty : $* <>EOE !=0 cmd <<<"" EOI testscript:1:8: error: empty stdin redirect path EOE } : out : { : missed : $* <>EOE !=0 cmd >= EOI testscript:1:7: error: missing stdout file EOE : empty : $* <>EOE !=0 cmd >="" EOI testscript:1:7: error: empty stdout redirect path EOE } : err : { : missed : $* <>EOE !=0 cmd 2>= EOI testscript:1:8: error: missing stderr file EOE : empty : $* <>EOE !=0 cmd 2>="" EOI testscript:1:8: error: empty stderr redirect path EOE } } : merge { : out : { : err : $* <>EOO cmd 1>&2 EOI cmd >&2 EOO : no-mutual : $* <>EOO cmd 1>&2 2>&1 2>a EOI cmd >&2 2>a EOO : not-descriptor : $* <>EOE != 0 cmd 1>&a EOI testscript:1:8: error: stdout merge redirect file descriptor must be 2 EOE : self : $* <>EOE != 0 cmd 1>&1 EOI testscript:1:8: error: stdout merge redirect file descriptor must be 2 EOE : missed : $* <>EOE != 0 cmd 1>& EOI testscript:1:8: error: missing stdout file descriptor EOE } : err { : out : $* <>EOO cmd 2>&1 EOI cmd 2>&1 EOO : no-mutual : $* <>EOO cmd 1>&2 2>&1 >a EOI cmd >a 2>&1 EOO : not-descriptor : $* <>EOE != 0 cmd 2>&a EOI testscript:1:8: error: stderr merge redirect file descriptor must be 1 EOE : self : $* <>EOE != 0 cmd 2>&2 EOI testscript:1:8: error: stderr merge redirect file descriptor must be 1 EOE : missed : $* <>EOE != 0 cmd 2>& EOI testscript:1:8: error: missing stderr file descriptor EOE } : mutual : $* <>EOE != 0 cmd 1>&2 2>&1 EOI testscript:1:14: error: stdout and stderr redirected to each other EOE }