summaryrefslogtreecommitdiff
path: root/tests/subst.at
diff options
context:
space:
mode:
Diffstat (limited to 'tests/subst.at')
-rw-r--r--tests/subst.at96
1 files changed, 96 insertions, 0 deletions
diff --git a/tests/subst.at b/tests/subst.at
new file mode 100644
index 0000000000000..71feb978e6a64
--- /dev/null
+++ b/tests/subst.at
@@ -0,0 +1,96 @@
+# Optional substitutions
+
+AT_SETUP([Command substitution])
+
+AT_DATA([backq.csh],
+[[set a=(a`echo 1 2; echo 3 4`b)
+echo $#a
+set a=(a"`echo 1 2; echo 3 4`b")
+echo $#a
+unset csubstnonl
+echo `echo 1; \\
+echo 2`
+set csubstnonl
+echo `echo 1; \\
+ echo 2`
+]])
+AT_CHECK([tcsh -f backq.csh], 1,
+[4
+2
+1 2
+1
+],
+[ : Command not found.
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([Filename substitution])
+
+AT_DATA([files.csh],
+[[mkdir d
+cd d
+touch foo baz bar .quux '*'
+echo *a* *[ox] [f.]* .q* ./*[ox] ./[f.]* ./.q* \*
+echo [a-g]* [^b]* ^b?r
+echo { ba{z,r} } {}
+echo nothing* fo*
+set nonomatch
+echo nothing*
+set noglob
+echo foo* ab{c,d} ^fo*
+]])
+AT_CHECK([tcsh -f files.csh], ,
+[bar baz foo foo .quux ./foo ./foo ./.quux *
+bar baz foo * foo * baz foo
+{ baz bar } {}
+foo
+nothing*
+foo* ab{c,d} ^fo*
+])
+
+AT_CHECK([echo 'echo ~; echo "$HOME"' | tcsh -f | uniq | wc -l | tr -d ' \t'],
+, [1
+])
+
+AT_CHECK([echo "echo ~$(id -un)/foo; echo \"$HOME/foo\"" | tcsh -f | uniq dnl
+ | wc -l | tr -d ' \t'], , [1
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([Directory stack substitution])
+
+AT_DATA([dirstack.csh],
+[[set home=$cwd
+pushd /
+pushd /dev
+echo =0/:foo
+echo =1/:foo
+echo =-
+set noglob
+echo =1
+unset noglob
+sh -c 'echo 1 >&2'
+(echo =5)
+sh -c 'echo 2 >&2'
+set nonomatch
+echo =5
+]])
+AT_CHECK([tcsh -f dirstack.csh | sed "s,$PWD,CWD,"], ,
+[/ ~ @&t@
+/dev / ~ @&t@
+/dev/:foo
+//:foo
+CWD
+=1
+=5
+],
+[1
+Directory stack not that deep.
+2
+])
+
+AT_CLEANUP