xref: /openbsd/regress/bin/ksh/ifs.t (revision 73471bf0)
1name: IFS-space-1
2description:
3	Simple test, default IFS
4stdin:
5	showargs() { for i; do echo -n " <$i>"; done; echo; }
6	set -- A B C
7	showargs 1 $*
8	showargs 2 "$*"
9	showargs 3 $@
10	showargs 4 "$@"
11expected-stdout:
12	 <1> <A> <B> <C>
13	 <2> <A B C>
14	 <3> <A> <B> <C>
15	 <4> <A> <B> <C>
16---
17
18name: IFS-colon-1
19description:
20	Simple test, IFS=:
21stdin:
22	showargs() { for i; do echo -n " <$i>"; done; echo; }
23	IFS=:
24	set -- A B C
25	showargs 1 $*
26	showargs 2 "$*"
27	showargs 3 $@
28	showargs 4 "$@"
29expected-stdout:
30	 <1> <A> <B> <C>
31	 <2> <A:B:C>
32	 <3> <A> <B> <C>
33	 <4> <A> <B> <C>
34---
35
36name: IFS-null-1
37description:
38	Simple test, IFS=""
39stdin:
40	showargs() { for i; do echo -n " <$i>"; done; echo; }
41	IFS=""
42	set -- A B C
43	showargs 1 $*
44	showargs 2 "$*"
45	showargs 3 $@
46	showargs 4 "$@"
47expected-stdout:
48	 <1> <A> <B> <C>
49	 <2> <ABC>
50	 <3> <A> <B> <C>
51	 <4> <A> <B> <C>
52---
53
54name: IFS-space-colon-1
55description:
56	Simple test, IFS=<white-space>:
57stdin:
58	showargs() { for i; do echo -n " <$i>"; done; echo; }
59	IFS="$IFS:"
60	set --
61	showargs 1 $*
62	showargs 2 "$*"
63	showargs 3 $@
64	showargs 4 "$@"
65	showargs 5 : "$@"
66expected-stdout:
67	 <1>
68	 <2> <>
69	 <3>
70	 <4>
71	 <5> <:>
72---
73
74name: IFS-space-colon-2
75description:
76	Simple test, IFS=<white-space>:
77	At&t ksh fails this, POSIX says the test is correct.
78stdin:
79	showargs() { for i; do echo -n " <$i>"; done; echo; }
80	IFS="$IFS:"
81	set --
82	showargs :"$@"
83expected-stdout:
84	 <:>
85---
86
87name: IFS-space-colon-3
88description:
89	Simple test, IFS=<white-space>:
90	pdksh fails both of these tests
91stdin:
92	showargs() { for i; do echo -n " <$i>"; done; echo; }
93	IFS="$IFS:"
94	x=
95	set --
96	showargs "$x$@"
97	showargs "$@$x"
98expected-fail: yes
99expected-stdout:
100	 <>
101	 <>
102---
103
104name: IFS-space-colon-4
105description:
106	Simple test, IFS=<white-space>:
107stdin:
108	showargs() { for i; do echo -n " <$i>"; done; echo; }
109	IFS="$IFS:"
110	set --
111	showargs "$@$@"
112expected-stdout:
113
114---
115
116name: IFS-space-colon-5
117description:
118	Simple test, IFS=<white-space>:
119	Don't know what POSIX thinks of this.  at&t ksh does not do this.
120stdin:
121	showargs() { for i; do echo -n " <$i>"; done; echo; }
122	IFS="$IFS:"
123	set --
124	showargs "${@:-}"
125expected-stdout:
126	 <>
127---
128
129name: IFS-subst-1
130description:
131	Simple test, IFS=<white-space>:
132stdin:
133	showargs() { for i; do echo -n " <$i>"; done; echo; }
134	IFS="$IFS:"
135	x=":b: :"
136	echo -n '1:'; for i in $x ; do echo -n " [$i]" ; done ; echo
137	echo -n '2:'; for i in :b:: ; do echo -n " [$i]" ; done ; echo
138	showargs 3 $x
139	showargs 4 :b::
140	x="a:b:"
141	echo -n '5:'; for i in $x ; do echo -n " [$i]" ; done ; echo
142	showargs 6 $x
143	x="a::c"
144	echo -n '7:'; for i in $x ; do echo -n " [$i]" ; done ; echo
145	showargs 8 $x
146	echo -n '9:'; for i in ${FOO-`echo -n h:i`th:ere} ; do echo -n " [$i]" ; done ; echo
147	showargs 10 ${FOO-`echo -n h:i`th:ere}
148	showargs 11 "${FOO-`echo -n h:i`th:ere}"
149	x=" A :  B::D"
150	echo -n '12:'; for i in $x ; do echo -n " [$i]" ; done ; echo
151	showargs 13 $x
152expected-stdout:
153	1: [] [b] []
154	2: [:b::]
155	 <3> <> <b> <>
156	 <4> <:b::>
157	5: [a] [b]
158	 <6> <a> <b>
159	7: [a] [] [c]
160	 <8> <a> <> <c>
161	9: [h] [ith] [ere]
162	 <10> <h> <ith> <ere>
163	 <11> <h:ith:ere>
164	12: [A] [B] [] [D]
165	 <13> <A> <B> <> <D>
166---
167
168