summaryrefslogtreecommitdiff
path: root/bin/ksh/tests/ifs.t
diff options
context:
space:
mode:
Diffstat (limited to 'bin/ksh/tests/ifs.t')
-rw-r--r--bin/ksh/tests/ifs.t162
1 files changed, 162 insertions, 0 deletions
diff --git a/bin/ksh/tests/ifs.t b/bin/ksh/tests/ifs.t
new file mode 100644
index 00000000000..a927aa301fc
--- /dev/null
+++ b/bin/ksh/tests/ifs.t
@@ -0,0 +1,162 @@
+name: IFS-space-1
+description:
+ Simple test, default IFS
+stdin:
+ showargs() { for i; do echo -n " <$i>"; done; echo; }
+ set -- A B C
+ showargs 1 $*
+ showargs 2 "$*"
+ showargs 3 $@
+ showargs 4 "$@"
+expected-stdout:
+ <1> <A> <B> <C>
+ <2> <A B C>
+ <3> <A> <B> <C>
+ <4> <A> <B> <C>
+---
+
+name: IFS-colon-1
+description:
+ Simple test, IFS=:
+stdin:
+ showargs() { for i; do echo -n " <$i>"; done; echo; }
+ IFS=:
+ set -- A B C
+ showargs 1 $*
+ showargs 2 "$*"
+ showargs 3 $@
+ showargs 4 "$@"
+expected-stdout:
+ <1> <A> <B> <C>
+ <2> <A:B:C>
+ <3> <A> <B> <C>
+ <4> <A> <B> <C>
+---
+
+name: IFS-null-1
+description:
+ Simple test, IFS=""
+stdin:
+ showargs() { for i; do echo -n " <$i>"; done; echo; }
+ IFS=""
+ set -- A B C
+ showargs 1 $*
+ showargs 2 "$*"
+ showargs 3 $@
+ showargs 4 "$@"
+expected-stdout:
+ <1> <A B C>
+ <2> <ABC>
+ <3> <A B C>
+ <4> <A B C>
+---
+
+name: IFS-space-colon-1
+description:
+ Simple test, IFS=<white-space>:
+stdin:
+ showargs() { for i; do echo -n " <$i>"; done; echo; }
+ IFS="IFS:"
+ set --
+ showargs 1 $*
+ showargs 2 "$*"
+ showargs 3 $@
+ showargs 4 "$@"
+ showargs 5 : "$@"
+expected-stdout:
+ <1>
+ <2> <>
+ <3>
+ <4>
+ <5> <:>
+---
+
+name: IFS-space-colon-2
+description:
+ Simple test, IFS=<white-space>:
+ At&t ksh fails this, POSIX says the test is correct.
+stdin:
+ showargs() { for i; do echo -n " <$i>"; done; echo; }
+ IFS="IFS:"
+ set --
+ showargs :"$@"
+expected-stdout:
+ <:>
+---
+
+name: IFS-space-colon-3
+description:
+ Simple test, IFS=<white-space>:
+ pdksh fails both of these tests
+stdin:
+ showargs() { for i; do echo -n " <$i>"; done; echo; }
+ IFS="IFS:"
+ x=
+ set --
+ showargs "$x$@"
+ showargs "$@$x"
+expected-fail: yes
+expected-stdout:
+ <>
+ <>
+---
+
+name: IFS-space-colon-4
+description:
+ Simple test, IFS=<white-space>:
+stdin:
+ showargs() { for i; do echo -n " <$i>"; done; echo; }
+ IFS="IFS:"
+ set --
+ showargs "$@$@"
+expected-stdout:
+
+---
+
+name: IFS-space-colon-5
+description:
+ Simple test, IFS=<white-space>:
+ Don't know what POSIX thinks of this. at&t ksh does not do this.
+stdin:
+ showargs() { for i; do echo -n " <$i>"; done; echo; }
+ IFS="IFS:"
+ set --
+ showargs "${@:-}"
+expected-stdout:
+ <>
+---
+
+name: IFS-subst-1
+description:
+ Simple test, IFS=<white-space>:
+stdin:
+ showargs() { for i; do echo -n " <$i>"; done; echo; }
+ IFS="$IFS:"
+ x=":b: :"
+ echo -n '1:'; for i in $x ; do echo -n " [$i]" ; done ; echo
+ echo -n '2:'; for i in :b:: ; do echo -n " [$i]" ; done ; echo
+ showargs 3 $x
+ showargs 4 :b::
+ x="a:b:"
+ echo -n '5:'; for i in $x ; do echo -n " [$i]" ; done ; echo
+ showargs 6 $x
+ x="a::c"
+ echo -n '7:'; for i in $x ; do echo -n " [$i]" ; done ; echo
+ showargs 8 $x
+ echo -n '9:'; for i in ${FOO-`echo -n h:i`th:ere} ; do echo -n " [$i]" ; done ; echo
+ showargs 10 ${FOO-`echo -n h:i`th:ere}
+ showargs 11 "${FOO-`echo -n h:i`th:ere}"
+expected-stdout:
+ 1: [] [b] [] []
+ 2: [:b::]
+ <3> <> <b> <> <>
+ <4> <:b::>
+ 5: [a] [b] []
+ <6> <a> <b> <>
+ 7: [a] [] [c]
+ <8> <a> <> <c>
+ 9: [h] [ith] [ere]
+ <10> <h> <ith> <ere>
+ <11> <h:ith:ere>
+---
+