diff options
-rw-r--r-- | Test/01grammar.ztst | 311 |
1 files changed, 0 insertions, 311 deletions
diff --git a/Test/01grammar.ztst b/Test/01grammar.ztst deleted file mode 100644 index b400b3fce..000000000 --- a/Test/01grammar.ztst +++ /dev/null @@ -1,311 +0,0 @@ -# -# This file contains tests corresponding to the `Shell Grammar' texinfo node. -# - -%prep - - mkdir basic.tmp && cd basic.tmp - touch foo bar - -%test -# -# Tests for `Simple Commands and Pipelines' -# - echo foo | cat | sed 's/foo/bar/' -0:Basic pipeline handling ->bar - - false | true -0:Exit status of pipeline with builtins (true) - - true | false -1:Exit status of pipeline with builtins (false) - - fn() { local foo; read foo; print $foo; } - coproc fn - print -p coproc test output - read -p bar - print $bar -0:Basic coprocess handling ->coproc test output - - true | false && print true || print false -0:Basic sublist (i) ->false - - false | true && print true || print false -0:Basic sublist (ii) ->true - - (cd /NonExistentDirectory >&/dev/null) || print false -0:Basic subshell list with error ->false - - { cd /NonExistentDirectory >&/dev/null } || print false -0:Basic current shell list with error ->false - -# -# Tests for `Precommand Modifiers' -# - - $ZTST_testdir/../Src/zsh -fc "[[ \$0 = \"-$ZTST_testdir/../Src/zsh\" ]]" -0:`-' precommand modifier - - echo f* - noglob echo f* -0:`noglob' precommand modifier ->foo ->f* - - (exec /bin/sh; echo bar) -0:`exec' precommand modifier - - cat() { echo Function cat executed; } - command cat && unfunction cat -0:`command' precommand modifier -<External command cat executed ->External command cat executed - - cd() { echo Not cd at all; } - builtin cd . && unfunction cd -0:`builtin' precommand modifier - -# -# Tests for `Complex Commands' -# - - if true; then - print true-1 - elif true; then - print true-2 - else - print false - fi -0:`if ...' (i) ->true-1 - - if false; then - print true-1 - elif true; then - print true-2 - else - print false - fi -0:`if ...' (ii) ->true-2 - - if false; then - print true-1 - elif false; then - print true-2 - else - print false - fi -0:`if ...' (iii) ->false - - if true; - : - fi -1d:`if ...' (iv) -?ZTST_execchunk:-1: parse error near `fi' - - for name in word to term; do - print $name - done -0:`for' loop ->word ->to ->term - - for (( name = 0; name < 3; name++ )); do - print $name - done -0:arithmetic `for' loop ->0 ->1 ->2 - - name=0 - while (( name < 3 )); do - print $name - (( name++ )) - done -0:`while' loop ->0 ->1 ->2 - - name=0 - until (( name == 3 )); do - print $name - (( name++ )) - done -0:`until' loop ->0 ->1 ->2 - - repeat 3 do - echo over and over - done -0:`repeat' loop ->over and over ->over and over ->over and over - - word=Trinity - case $word in - Michaelmas) print 0 - ;; - Hilary) print 1 - ;; - Trinity) print 2 - ;; - *) print 3 - ;; - esac -0:`case' loop, old syntax ->2 - - word=Trinity - case $word in - (Michaelmas) print 0 - ;; - (Hilary) print 1 - ;; - (Trinity) print 2 - ;; - (*) print 3 - ;; - esac -0:`case' loop, new syntax ->2 - - word=Hilary - case $word in - (Michaelmas) print 0 - ;; - (Hilary) print 1 - ;& - (Trinity) print 2 - ;& - (*) print 3 - ;; - esac -0:`case' loop, new syntax, cascaded ->1 ->2 ->3 - -## This doesn't work, because zsh tries to read from the terminal -## even in a non-interactive shell. The manual implies it always reads -## from stdin, even in an interactive shell. -# PS3="input> " -# select name in one two three; do -# print $name -# done -#0:`select' loop -#<2 -#>1) one 2) two 3) three -#>input> -#>two - - function name1 name2 () { print This is $0; } - name2 - name1 name2() { print This is still $0; } - name2 -0:`function' keyword ->This is name2 ->This is still name2 - - (time cat) >&/dev/null -0:`time' keyword (status only) - - if [[ -f foo && -d . && -n $ZTST_testdir ]]; then - true - else - false - fi -0:basic [[ ... ]] test - -# -# Tests for `Alternate Forms For Complex Commands' -# - - if (true) { print true-1 } elif (true) { print true-2 } else { print false } - if (false) { print true-1 } elif (true) { print true-2 } else { print false } - if (false) { print true-1 } elif (false) { print true-2 } else { print false } -0:Alternate `if' with braces ->true-1 ->true-2 ->false - - if true; print true -0:Short form of `if' ->true - - for name ( word1 word2 word3 ) print $name -0:Form of `for' with parentheses. ->word1 ->word2 ->word3 - - for name in alpha beta gamma; print $name -0:Short form of `for' ->alpha ->beta ->gamma - - for (( val = 2; val < 10; val *= val )) print $val -0:Short arithmetic `for' ->2 ->4 - - foreach name ( verbiage words periphrasis ) - print $name - end -0:Csh-like `for' ->verbiage ->words ->periphrasis - -# see comment with braces used in if loops - val=0; - while (( val < 2 )) { print $((val++)); } -0:Alternative `while' ->0 ->1 - - val=2; - until (( val == 0 )) { print $((val--)); } -0:Alternative `until' ->2 ->1 - - repeat 3 print Hip hip hooray -0:Short `repeat' ->Hip hip hooray ->Hip hip hooray ->Hip hip hooray - - case bravo { - (alpha) print schmalpha - ;; - (bravo) print schmavo - ;; - (charlie) print schmarlie - ;; - } -0:`case' with braces ->schmavo - - print 'This test hangs the shell when it fails...' >&8 - name=0 -# The number 4375 here is chosen to produce more than 16384 bytes of output - while (( name < 4375 )); do - print -n $name - (( name++ )) - done < /dev/null | { read name; print done } -0:Bug regression: `while' loop with redirection and pipeline ->done |