aboutsummaryrefslogtreecommitdiff
path: root/tests/syntax.at
diff options
context:
space:
mode:
Diffstat (limited to 'tests/syntax.at')
-rw-r--r--tests/syntax.at163
1 files changed, 163 insertions, 0 deletions
diff --git a/tests/syntax.at b/tests/syntax.at
new file mode 100644
index 000000000000..2a2abd05b898
--- /dev/null
+++ b/tests/syntax.at
@@ -0,0 +1,163 @@
+# Command syntax
+
+AT_SETUP([Command combinations])
+
+AT_CHECK([tcsh -f -c 'echo ok|tr ok OK'], ,
+[OK
+])
+
+AT_CHECK([tcsh -f -c 'echo 1;echo 2'], ,
+[1
+2
+])
+
+AT_CHECK([tcsh -f -c 'true || echo fail'])
+
+AT_CHECK([tcsh -f -c 'false || echo OK'], ,
+[OK
+])
+
+AT_CHECK([tcsh -f -c 'true && echo OK'], ,
+[OK
+])
+
+AT_CHECK([tcsh -f -c 'false && echo fail'], 1)
+
+AT_CHECK([[tcsh -f -c '(sleep 1; echo async) & echo sync; wait' \
+| sed 's/ [0123456789]*$/ /']], ,
+[[[1] @&t@
+sync
+async
+[1] Done ( sleep 1; echo async )
+]])
+
+AT_CLEANUP
+
+
+AT_SETUP([Command execution])
+
+AT_CHECK([tcsh -f -c '((true | cd ..; pwd); cd ..; pwd)' | uniq | wc -l dnl
+ | tr -d ' \t'], ,
+[1
+])
+
+AT_DATA([other_script.csh],
+[[echo OK
+]])
+chmod u+x other_script.csh
+AT_CHECK([tcsh -f -c 'set path=(. $path); other_script.csh'], ,
+[OK
+])
+
+AT_DATA([input],
+[[OK
+]])
+AT_CHECK([tcsh -f -c 'cat < input'], ,
+[OK
+])
+
+AT_DATA([heredoc.csh],
+[[set var=-
+cat << EOF
+\$\\\`
+a`echo b`c
+foo${var}bar
+EOF
+cat << E\OF
+$var
+E\OF
+cat << "E"OF
+$var
+"E"OF
+cat << EO'F'
+$var
+EO'F'
+cat << `EOF`
+$var
+`EOF`
+]])
+AT_CHECK([tcsh -f heredoc.csh], ,
+[[$\`
+abc
+foo-bar
+$var
+$var
+$var
+$var
+]])
+
+AT_CHECK([tcsh -f -c 'echo OK > output'])
+AT_CHECK([cat output], ,
+[OK
+])
+
+touch output
+AT_CHECK([tcsh -f -c 'set noclobber; echo OK > output'], 1, [],
+[output: File exists.
+])
+
+touch output
+AT_CHECK([tcsh -f -c 'set noclobber; echo OK >! output'])
+AT_CHECK([cat output], ,
+[OK
+])
+
+AT_CHECK([tcsh -f -c '(echo OK; $this_does_not_exist) >& output'], 1)
+AT_CHECK([cat output], ,
+[OK
+this_does_not_exist: Undefined variable.
+])
+
+touch output
+AT_CHECK([tcsh -f -c 'set noclobber; echo OK >& output'], 1, [],
+[output: File exists.
+])
+
+touch output
+AT_CHECK([tcsh -f -c 'set noclobber; echo OK >&! output'])
+AT_CHECK([cat output], ,
+[OK
+])
+
+echo > output
+AT_CHECK([tcsh -f -c 'echo OK >> output'])
+AT_CHECK([cat output], ,
+[
+OK
+])
+
+echo > output
+AT_CHECK([tcsh -f -c '(echo OK; echo $this_does_not_exist) >>& output'], 1)
+AT_CHECK([cat output], ,
+[
+OK
+this_does_not_exist: Undefined variable.
+])
+
+rm -f output
+AT_CHECK([tcsh -f -c 'set noclobber; echo OK >> output'], 1, [],
+[output: No such file or directory.
+])
+
+rm -f output
+AT_CHECK([tcsh -f -c 'set noclobber; echo OK >>! output'])
+AT_CHECK([cat output], ,
+[OK
+])
+
+rm -f output
+AT_CHECK([tcsh -f -c 'set noclobber; echo OK >>& output'], 1, [],
+[output: No such file or directory.
+])
+
+rm -f output
+AT_CHECK([tcsh -f -c 'set noclobber; echo OK >>&! output'])
+AT_CHECK([cat output], ,
+[OK
+])
+
+AT_CHECK([tcsh -f -c '(echo $this_does_not_exist) |& cat'], 1,
+[this_does_not_exist: Undefined variable.
+])
+
+AT_CLEANUP