diff options
author | kraai <kraai@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2001-10-30 23:11:20 +0000 |
---|---|---|
committer | kraai <kraai@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2001-10-30 23:11:20 +0000 |
commit | 6fd181afd97102bb355120d6a384a9fd5de932c8 (patch) | |
tree | e258582c0f14f06750e480e2c244260e79860fd0 | |
parent | 99f25757d3ddfdbe764f04ee037b19b748b7caec (diff) | |
download | busybox-w32-6fd181afd97102bb355120d6a384a9fd5de932c8.tar.gz busybox-w32-6fd181afd97102bb355120d6a384a9fd5de932c8.tar.bz2 busybox-w32-6fd181afd97102bb355120d6a384a9fd5de932c8.zip |
Merge test suite.
git-svn-id: svn://busybox.net/trunk/busybox@3603 69ca8d6d-28ef-0310-b511-8ec308f3f277
73 files changed, 660 insertions, 0 deletions
diff --git a/testsuite/COPYING b/testsuite/COPYING new file mode 100644 index 000000000..d60c31a97 --- /dev/null +++ b/testsuite/COPYING | |||
@@ -0,0 +1,340 @@ | |||
1 | GNU GENERAL PUBLIC LICENSE | ||
2 | Version 2, June 1991 | ||
3 | |||
4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. | ||
5 | 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
6 | Everyone is permitted to copy and distribute verbatim copies | ||
7 | of this license document, but changing it is not allowed. | ||
8 | |||
9 | Preamble | ||
10 | |||
11 | The licenses for most software are designed to take away your | ||
12 | freedom to share and change it. By contrast, the GNU General Public | ||
13 | License is intended to guarantee your freedom to share and change free | ||
14 | software--to make sure the software is free for all its users. This | ||
15 | General Public License applies to most of the Free Software | ||
16 | Foundation's software and to any other program whose authors commit to | ||
17 | using it. (Some other Free Software Foundation software is covered by | ||
18 | the GNU Library General Public License instead.) You can apply it to | ||
19 | your programs, too. | ||
20 | |||
21 | When we speak of free software, we are referring to freedom, not | ||
22 | price. Our General Public Licenses are designed to make sure that you | ||
23 | have the freedom to distribute copies of free software (and charge for | ||
24 | this service if you wish), that you receive source code or can get it | ||
25 | if you want it, that you can change the software or use pieces of it | ||
26 | in new free programs; and that you know you can do these things. | ||
27 | |||
28 | To protect your rights, we need to make restrictions that forbid | ||
29 | anyone to deny you these rights or to ask you to surrender the rights. | ||
30 | These restrictions translate to certain responsibilities for you if you | ||
31 | distribute copies of the software, or if you modify it. | ||
32 | |||
33 | For example, if you distribute copies of such a program, whether | ||
34 | gratis or for a fee, you must give the recipients all the rights that | ||
35 | you have. You must make sure that they, too, receive or can get the | ||
36 | source code. And you must show them these terms so they know their | ||
37 | rights. | ||
38 | |||
39 | We protect your rights with two steps: (1) copyright the software, and | ||
40 | (2) offer you this license which gives you legal permission to copy, | ||
41 | distribute and/or modify the software. | ||
42 | |||
43 | Also, for each author's protection and ours, we want to make certain | ||
44 | that everyone understands that there is no warranty for this free | ||
45 | software. If the software is modified by someone else and passed on, we | ||
46 | want its recipients to know that what they have is not the original, so | ||
47 | that any problems introduced by others will not reflect on the original | ||
48 | authors' reputations. | ||
49 | |||
50 | Finally, any free program is threatened constantly by software | ||
51 | patents. We wish to avoid the danger that redistributors of a free | ||
52 | program will individually obtain patent licenses, in effect making the | ||
53 | program proprietary. To prevent this, we have made it clear that any | ||
54 | patent must be licensed for everyone's free use or not licensed at all. | ||
55 | |||
56 | The precise terms and conditions for copying, distribution and | ||
57 | modification follow. | ||
58 | |||
59 | GNU GENERAL PUBLIC LICENSE | ||
60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | ||
61 | |||
62 | 0. This License applies to any program or other work which contains | ||
63 | a notice placed by the copyright holder saying it may be distributed | ||
64 | under the terms of this General Public License. The "Program", below, | ||
65 | refers to any such program or work, and a "work based on the Program" | ||
66 | means either the Program or any derivative work under copyright law: | ||
67 | that is to say, a work containing the Program or a portion of it, | ||
68 | either verbatim or with modifications and/or translated into another | ||
69 | language. (Hereinafter, translation is included without limitation in | ||
70 | the term "modification".) Each licensee is addressed as "you". | ||
71 | |||
72 | Activities other than copying, distribution and modification are not | ||
73 | covered by this License; they are outside its scope. The act of | ||
74 | running the Program is not restricted, and the output from the Program | ||
75 | is covered only if its contents constitute a work based on the | ||
76 | Program (independent of having been made by running the Program). | ||
77 | Whether that is true depends on what the Program does. | ||
78 | |||
79 | 1. You may copy and distribute verbatim copies of the Program's | ||
80 | source code as you receive it, in any medium, provided that you | ||
81 | conspicuously and appropriately publish on each copy an appropriate | ||
82 | copyright notice and disclaimer of warranty; keep intact all the | ||
83 | notices that refer to this License and to the absence of any warranty; | ||
84 | and give any other recipients of the Program a copy of this License | ||
85 | along with the Program. | ||
86 | |||
87 | You may charge a fee for the physical act of transferring a copy, and | ||
88 | you may at your option offer warranty protection in exchange for a fee. | ||
89 | |||
90 | 2. You may modify your copy or copies of the Program or any portion | ||
91 | of it, thus forming a work based on the Program, and copy and | ||
92 | distribute such modifications or work under the terms of Section 1 | ||
93 | above, provided that you also meet all of these conditions: | ||
94 | |||
95 | a) You must cause the modified files to carry prominent notices | ||
96 | stating that you changed the files and the date of any change. | ||
97 | |||
98 | b) You must cause any work that you distribute or publish, that in | ||
99 | whole or in part contains or is derived from the Program or any | ||
100 | part thereof, to be licensed as a whole at no charge to all third | ||
101 | parties under the terms of this License. | ||
102 | |||
103 | c) If the modified program normally reads commands interactively | ||
104 | when run, you must cause it, when started running for such | ||
105 | interactive use in the most ordinary way, to print or display an | ||
106 | announcement including an appropriate copyright notice and a | ||
107 | notice that there is no warranty (or else, saying that you provide | ||
108 | a warranty) and that users may redistribute the program under | ||
109 | these conditions, and telling the user how to view a copy of this | ||
110 | License. (Exception: if the Program itself is interactive but | ||
111 | does not normally print such an announcement, your work based on | ||
112 | the Program is not required to print an announcement.) | ||
113 | |||
114 | These requirements apply to the modified work as a whole. If | ||
115 | identifiable sections of that work are not derived from the Program, | ||
116 | and can be reasonably considered independent and separate works in | ||
117 | themselves, then this License, and its terms, do not apply to those | ||
118 | sections when you distribute them as separate works. But when you | ||
119 | distribute the same sections as part of a whole which is a work based | ||
120 | on the Program, the distribution of the whole must be on the terms of | ||
121 | this License, whose permissions for other licensees extend to the | ||
122 | entire whole, and thus to each and every part regardless of who wrote it. | ||
123 | |||
124 | Thus, it is not the intent of this section to claim rights or contest | ||
125 | your rights to work written entirely by you; rather, the intent is to | ||
126 | exercise the right to control the distribution of derivative or | ||
127 | collective works based on the Program. | ||
128 | |||
129 | In addition, mere aggregation of another work not based on the Program | ||
130 | with the Program (or with a work based on the Program) on a volume of | ||
131 | a storage or distribution medium does not bring the other work under | ||
132 | the scope of this License. | ||
133 | |||
134 | 3. You may copy and distribute the Program (or a work based on it, | ||
135 | under Section 2) in object code or executable form under the terms of | ||
136 | Sections 1 and 2 above provided that you also do one of the following: | ||
137 | |||
138 | a) Accompany it with the complete corresponding machine-readable | ||
139 | source code, which must be distributed under the terms of Sections | ||
140 | 1 and 2 above on a medium customarily used for software interchange; or, | ||
141 | |||
142 | b) Accompany it with a written offer, valid for at least three | ||
143 | years, to give any third party, for a charge no more than your | ||
144 | cost of physically performing source distribution, a complete | ||
145 | machine-readable copy of the corresponding source code, to be | ||
146 | distributed under the terms of Sections 1 and 2 above on a medium | ||
147 | customarily used for software interchange; or, | ||
148 | |||
149 | c) Accompany it with the information you received as to the offer | ||
150 | to distribute corresponding source code. (This alternative is | ||
151 | allowed only for noncommercial distribution and only if you | ||
152 | received the program in object code or executable form with such | ||
153 | an offer, in accord with Subsection b above.) | ||
154 | |||
155 | The source code for a work means the preferred form of the work for | ||
156 | making modifications to it. For an executable work, complete source | ||
157 | code means all the source code for all modules it contains, plus any | ||
158 | associated interface definition files, plus the scripts used to | ||
159 | control compilation and installation of the executable. However, as a | ||
160 | special exception, the source code distributed need not include | ||
161 | anything that is normally distributed (in either source or binary | ||
162 | form) with the major components (compiler, kernel, and so on) of the | ||
163 | operating system on which the executable runs, unless that component | ||
164 | itself accompanies the executable. | ||
165 | |||
166 | If distribution of executable or object code is made by offering | ||
167 | access to copy from a designated place, then offering equivalent | ||
168 | access to copy the source code from the same place counts as | ||
169 | distribution of the source code, even though third parties are not | ||
170 | compelled to copy the source along with the object code. | ||
171 | |||
172 | 4. You may not copy, modify, sublicense, or distribute the Program | ||
173 | except as expressly provided under this License. Any attempt | ||
174 | otherwise to copy, modify, sublicense or distribute the Program is | ||
175 | void, and will automatically terminate your rights under this License. | ||
176 | However, parties who have received copies, or rights, from you under | ||
177 | this License will not have their licenses terminated so long as such | ||
178 | parties remain in full compliance. | ||
179 | |||
180 | 5. You are not required to accept this License, since you have not | ||
181 | signed it. However, nothing else grants you permission to modify or | ||
182 | distribute the Program or its derivative works. These actions are | ||
183 | prohibited by law if you do not accept this License. Therefore, by | ||
184 | modifying or distributing the Program (or any work based on the | ||
185 | Program), you indicate your acceptance of this License to do so, and | ||
186 | all its terms and conditions for copying, distributing or modifying | ||
187 | the Program or works based on it. | ||
188 | |||
189 | 6. Each time you redistribute the Program (or any work based on the | ||
190 | Program), the recipient automatically receives a license from the | ||
191 | original licensor to copy, distribute or modify the Program subject to | ||
192 | these terms and conditions. You may not impose any further | ||
193 | restrictions on the recipients' exercise of the rights granted herein. | ||
194 | You are not responsible for enforcing compliance by third parties to | ||
195 | this License. | ||
196 | |||
197 | 7. If, as a consequence of a court judgment or allegation of patent | ||
198 | infringement or for any other reason (not limited to patent issues), | ||
199 | conditions are imposed on you (whether by court order, agreement or | ||
200 | otherwise) that contradict the conditions of this License, they do not | ||
201 | excuse you from the conditions of this License. If you cannot | ||
202 | distribute so as to satisfy simultaneously your obligations under this | ||
203 | License and any other pertinent obligations, then as a consequence you | ||
204 | may not distribute the Program at all. For example, if a patent | ||
205 | license would not permit royalty-free redistribution of the Program by | ||
206 | all those who receive copies directly or indirectly through you, then | ||
207 | the only way you could satisfy both it and this License would be to | ||
208 | refrain entirely from distribution of the Program. | ||
209 | |||
210 | If any portion of this section is held invalid or unenforceable under | ||
211 | any particular circumstance, the balance of the section is intended to | ||
212 | apply and the section as a whole is intended to apply in other | ||
213 | circumstances. | ||
214 | |||
215 | It is not the purpose of this section to induce you to infringe any | ||
216 | patents or other property right claims or to contest validity of any | ||
217 | such claims; this section has the sole purpose of protecting the | ||
218 | integrity of the free software distribution system, which is | ||
219 | implemented by public license practices. Many people have made | ||
220 | generous contributions to the wide range of software distributed | ||
221 | through that system in reliance on consistent application of that | ||
222 | system; it is up to the author/donor to decide if he or she is willing | ||
223 | to distribute software through any other system and a licensee cannot | ||
224 | impose that choice. | ||
225 | |||
226 | This section is intended to make thoroughly clear what is believed to | ||
227 | be a consequence of the rest of this License. | ||
228 | |||
229 | 8. If the distribution and/or use of the Program is restricted in | ||
230 | certain countries either by patents or by copyrighted interfaces, the | ||
231 | original copyright holder who places the Program under this License | ||
232 | may add an explicit geographical distribution limitation excluding | ||
233 | those countries, so that distribution is permitted only in or among | ||
234 | countries not thus excluded. In such case, this License incorporates | ||
235 | the limitation as if written in the body of this License. | ||
236 | |||
237 | 9. The Free Software Foundation may publish revised and/or new versions | ||
238 | of the General Public License from time to time. Such new versions will | ||
239 | be similar in spirit to the present version, but may differ in detail to | ||
240 | address new problems or concerns. | ||
241 | |||
242 | Each version is given a distinguishing version number. If the Program | ||
243 | specifies a version number of this License which applies to it and "any | ||
244 | later version", you have the option of following the terms and conditions | ||
245 | either of that version or of any later version published by the Free | ||
246 | Software Foundation. If the Program does not specify a version number of | ||
247 | this License, you may choose any version ever published by the Free Software | ||
248 | Foundation. | ||
249 | |||
250 | 10. If you wish to incorporate parts of the Program into other free | ||
251 | programs whose distribution conditions are different, write to the author | ||
252 | to ask for permission. For software which is copyrighted by the Free | ||
253 | Software Foundation, write to the Free Software Foundation; we sometimes | ||
254 | make exceptions for this. Our decision will be guided by the two goals | ||
255 | of preserving the free status of all derivatives of our free software and | ||
256 | of promoting the sharing and reuse of software generally. | ||
257 | |||
258 | NO WARRANTY | ||
259 | |||
260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | ||
261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN | ||
262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | ||
263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | ||
264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS | ||
266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE | ||
267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | ||
268 | REPAIR OR CORRECTION. | ||
269 | |||
270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | ||
271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | ||
272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | ||
273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING | ||
274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED | ||
275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY | ||
276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER | ||
277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | ||
278 | POSSIBILITY OF SUCH DAMAGES. | ||
279 | |||
280 | END OF TERMS AND CONDITIONS | ||
281 | |||
282 | How to Apply These Terms to Your New Programs | ||
283 | |||
284 | If you develop a new program, and you want it to be of the greatest | ||
285 | possible use to the public, the best way to achieve this is to make it | ||
286 | free software which everyone can redistribute and change under these terms. | ||
287 | |||
288 | To do so, attach the following notices to the program. It is safest | ||
289 | to attach them to the start of each source file to most effectively | ||
290 | convey the exclusion of warranty; and each file should have at least | ||
291 | the "copyright" line and a pointer to where the full notice is found. | ||
292 | |||
293 | <one line to give the program's name and a brief idea of what it does.> | ||
294 | Copyright (C) <year> <name of author> | ||
295 | |||
296 | This program is free software; you can redistribute it and/or modify | ||
297 | it under the terms of the GNU General Public License as published by | ||
298 | the Free Software Foundation; either version 2 of the License, or | ||
299 | (at your option) any later version. | ||
300 | |||
301 | This program is distributed in the hope that it will be useful, | ||
302 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
304 | GNU General Public License for more details. | ||
305 | |||
306 | You should have received a copy of the GNU General Public License | ||
307 | along with this program; if not, write to the Free Software | ||
308 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
309 | |||
310 | |||
311 | Also add information on how to contact you by electronic and paper mail. | ||
312 | |||
313 | If the program is interactive, make it output a short notice like this | ||
314 | when it starts in an interactive mode: | ||
315 | |||
316 | Gnomovision version 69, Copyright (C) year name of author | ||
317 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. | ||
318 | This is free software, and you are welcome to redistribute it | ||
319 | under certain conditions; type `show c' for details. | ||
320 | |||
321 | The hypothetical commands `show w' and `show c' should show the appropriate | ||
322 | parts of the General Public License. Of course, the commands you use may | ||
323 | be called something other than `show w' and `show c'; they could even be | ||
324 | mouse-clicks or menu items--whatever suits your program. | ||
325 | |||
326 | You should also get your employer (if you work as a programmer) or your | ||
327 | school, if any, to sign a "copyright disclaimer" for the program, if | ||
328 | necessary. Here is a sample; alter the names: | ||
329 | |||
330 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program | ||
331 | `Gnomovision' (which makes passes at compilers) written by James Hacker. | ||
332 | |||
333 | <signature of Ty Coon>, 1 April 1989 | ||
334 | Ty Coon, President of Vice | ||
335 | |||
336 | This General Public License does not permit incorporating your program into | ||
337 | proprietary programs. If your program is a subroutine library, you may | ||
338 | consider it more useful to permit linking proprietary applications with the | ||
339 | library. If this is what you want to do, use the GNU Library General | ||
340 | Public License instead of this License. | ||
diff --git a/testsuite/README b/testsuite/README new file mode 100644 index 000000000..1afb9ebd2 --- /dev/null +++ b/testsuite/README | |||
@@ -0,0 +1,21 @@ | |||
1 | To use this testsuite, unpack it as a subdirectory of your BusyBox | ||
2 | build tree. Then change directory into the testsuite and run | ||
3 | `./runtest'. | ||
4 | |||
5 | For the entire testsuite, the copyright is as follows: | ||
6 | |||
7 | Copyright (C) 2001 Matt Kraai | ||
8 | |||
9 | This program is free software; you can redistribute it and/or | ||
10 | modify it under the terms of the GNU General Public License | ||
11 | as published by the Free Software Foundation; either version 2 | ||
12 | of the License, or (at your option) any later version. | ||
13 | |||
14 | This program is distributed in the hope that it will be useful, | ||
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | GNU General Public License for more details. | ||
18 | |||
19 | You should have received a copy of the GNU General Public License | ||
20 | along with this program; if not, write to the Free Software | ||
21 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
diff --git a/testsuite/TODO b/testsuite/TODO new file mode 100644 index 000000000..24126318a --- /dev/null +++ b/testsuite/TODO | |||
@@ -0,0 +1,23 @@ | |||
1 | This testsuite is quite obviously a work in progress. As such, | ||
2 | there are a number of good extensions. If you are looking for | ||
3 | something to do, feel free to tackle one or more of the following: | ||
4 | |||
5 | Buildroot support | ||
6 | Erik has put together a handy package for constructing and | ||
7 | testing busybox called buildroot. Integrating this into | ||
8 | the testsuite would allow for greater test coverage (e.g., | ||
9 | init, mount, and other privileged applications). | ||
10 | |||
11 | BB_FEATURE support | ||
12 | BusyBox contains a number of features which are controlled | ||
13 | by compile-time defines. A method to run tests based on | ||
14 | these features would be great. | ||
15 | |||
16 | libbb unit testing | ||
17 | Being able to test the functions of libbb individually may | ||
18 | help to prevent regressions. | ||
19 | |||
20 | Standardization | ||
21 | This testsuite is totally bastardized. It would be better | ||
22 | to use an existing test framework, such as dejagnu, greg, | ||
23 | or a XUnit clone (shunit?). | ||
diff --git a/testsuite/basename/basename-does-not-remove-identical-extension b/testsuite/basename/basename-does-not-remove-identical-extension new file mode 100644 index 000000000..4448fdec4 --- /dev/null +++ b/testsuite/basename/basename-does-not-remove-identical-extension | |||
@@ -0,0 +1 @@ | |||
test xfoo = x`busybox basename foo foo` | |||
diff --git a/testsuite/cat/cat-prints-a-file b/testsuite/cat/cat-prints-a-file new file mode 100644 index 000000000..e3f35a86e --- /dev/null +++ b/testsuite/cat/cat-prints-a-file | |||
@@ -0,0 +1,3 @@ | |||
1 | echo I WANT > foo | ||
2 | busybox cat foo >bar | ||
3 | cmp foo bar | ||
diff --git a/testsuite/cat/cat-prints-a-file-and-standard-input b/testsuite/cat/cat-prints-a-file-and-standard-input new file mode 100644 index 000000000..bc9231882 --- /dev/null +++ b/testsuite/cat/cat-prints-a-file-and-standard-input | |||
@@ -0,0 +1,7 @@ | |||
1 | echo I WANT > foo | ||
2 | echo SOMETHING | busybox cat foo - >bar | ||
3 | cat >baz <<EOF | ||
4 | I WANT | ||
5 | SOMETHING | ||
6 | EOF | ||
7 | cmp bar baz | ||
diff --git a/testsuite/cmp/cmp-detects-difference b/testsuite/cmp/cmp-detects-difference new file mode 100644 index 000000000..b5544f9a8 --- /dev/null +++ b/testsuite/cmp/cmp-detects-difference | |||
@@ -0,0 +1,7 @@ | |||
1 | echo foo >foo | ||
2 | echo bar >bar | ||
3 | if busybox cmp -s foo bar; then | ||
4 | return 1 | ||
5 | else | ||
6 | return 0 | ||
7 | fi | ||
diff --git a/testsuite/cp/cp-copies-empty-file b/testsuite/cp/cp-copies-empty-file new file mode 100644 index 000000000..ad25aa12e --- /dev/null +++ b/testsuite/cp/cp-copies-empty-file | |||
@@ -0,0 +1,3 @@ | |||
1 | touch foo | ||
2 | busybox cp foo bar | ||
3 | cmp foo bar | ||
diff --git a/testsuite/cp/cp-copies-large-file b/testsuite/cp/cp-copies-large-file new file mode 100644 index 000000000..c2225c6d8 --- /dev/null +++ b/testsuite/cp/cp-copies-large-file | |||
@@ -0,0 +1,3 @@ | |||
1 | dd if=/dev/zero of=foo seek=10k count=1 2>/dev/null | ||
2 | busybox cp foo bar | ||
3 | cmp foo bar | ||
diff --git a/testsuite/cp/cp-copies-small-file b/testsuite/cp/cp-copies-small-file new file mode 100644 index 000000000..d52a887c0 --- /dev/null +++ b/testsuite/cp/cp-copies-small-file | |||
@@ -0,0 +1,3 @@ | |||
1 | echo I WANT > foo | ||
2 | busybox cp foo bar | ||
3 | cmp foo bar | ||
diff --git a/testsuite/cp/cp-follows-links b/testsuite/cp/cp-follows-links new file mode 100644 index 000000000..2d9f05e9f --- /dev/null +++ b/testsuite/cp/cp-follows-links | |||
@@ -0,0 +1,4 @@ | |||
1 | touch foo | ||
2 | ln -s foo bar | ||
3 | busybox cp bar baz | ||
4 | test -f baz | ||
diff --git a/testsuite/cp/cp-preserves-links b/testsuite/cp/cp-preserves-links new file mode 100644 index 000000000..a5269e8d3 --- /dev/null +++ b/testsuite/cp/cp-preserves-links | |||
@@ -0,0 +1,4 @@ | |||
1 | touch foo | ||
2 | ln -s foo bar | ||
3 | busybox cp -d bar baz | ||
4 | test -L baz | ||
diff --git a/testsuite/cp/cp-preserves-source-file b/testsuite/cp/cp-preserves-source-file new file mode 100644 index 000000000..f0f5065f4 --- /dev/null +++ b/testsuite/cp/cp-preserves-source-file | |||
@@ -0,0 +1,3 @@ | |||
1 | touch foo | ||
2 | busybox cp foo bar | ||
3 | test -f foo | ||
diff --git a/testsuite/cut/cut-cuts-a-character b/testsuite/cut/cut-cuts-a-character new file mode 100644 index 000000000..d6c5efa3a --- /dev/null +++ b/testsuite/cut/cut-cuts-a-character | |||
@@ -0,0 +1 @@ | |||
test $(echo abcd | busybox cut -c 3) = c | |||
diff --git a/testsuite/cut/cut-cuts-a-closed-range b/testsuite/cut/cut-cuts-a-closed-range new file mode 100644 index 000000000..9680b7650 --- /dev/null +++ b/testsuite/cut/cut-cuts-a-closed-range | |||
@@ -0,0 +1 @@ | |||
test $(echo abcd | busybox cut -c 1-2) = ab | |||
diff --git a/testsuite/cut/cut-cuts-a-field b/testsuite/cut/cut-cuts-a-field new file mode 100644 index 000000000..4c7f44007 --- /dev/null +++ b/testsuite/cut/cut-cuts-a-field | |||
@@ -0,0 +1 @@ | |||
test $(echo -e "f1\tf2\tf3" | busybox cut -f 2) = f2 | |||
diff --git a/testsuite/cut/cut-cuts-an-open-range b/testsuite/cut/cut-cuts-an-open-range new file mode 100644 index 000000000..1fbf27742 --- /dev/null +++ b/testsuite/cut/cut-cuts-an-open-range | |||
@@ -0,0 +1 @@ | |||
test $(echo abcd | busybox cut -c -3) = abc | |||
diff --git a/testsuite/cut/cut-cuts-an-unclosed-range b/testsuite/cut/cut-cuts-an-unclosed-range new file mode 100644 index 000000000..a2b0cdb03 --- /dev/null +++ b/testsuite/cut/cut-cuts-an-unclosed-range | |||
@@ -0,0 +1 @@ | |||
test $(echo abcd | busybox cut -c 3-) = cd | |||
diff --git a/testsuite/dd/dd-accepts-if b/testsuite/dd/dd-accepts-if new file mode 100644 index 000000000..03d1af853 --- /dev/null +++ b/testsuite/dd/dd-accepts-if | |||
@@ -0,0 +1,2 @@ | |||
1 | echo I WANT >foo | ||
2 | test "$(busybox dd if=foo 2>/dev/null)" = "I WANT" | ||
diff --git a/testsuite/dd/dd-accepts-of b/testsuite/dd/dd-accepts-of new file mode 100644 index 000000000..84405e622 --- /dev/null +++ b/testsuite/dd/dd-accepts-of | |||
@@ -0,0 +1,2 @@ | |||
1 | echo I WANT | busybox dd of=foo 2>/dev/null | ||
2 | echo I WANT | cmp foo - | ||
diff --git a/testsuite/dd/dd-copies-from-standard-input-to-standard-output b/testsuite/dd/dd-copies-from-standard-input-to-standard-output new file mode 100644 index 000000000..d890eb04c --- /dev/null +++ b/testsuite/dd/dd-copies-from-standard-input-to-standard-output | |||
@@ -0,0 +1 @@ | |||
test "$(echo I WANT | busybox dd 2>/dev/null)" = "I WANT" | |||
diff --git a/testsuite/dd/dd-prints-count-to-standard-error b/testsuite/dd/dd-prints-count-to-standard-error new file mode 100644 index 000000000..2187dc027 --- /dev/null +++ b/testsuite/dd/dd-prints-count-to-standard-error | |||
@@ -0,0 +1,2 @@ | |||
1 | echo I WANT | busybox dd of=foo >/dev/null 2>bar | ||
2 | grep -q records bar | ||
diff --git a/testsuite/dirname/dirname-handles-absolute-path b/testsuite/dirname/dirname-handles-absolute-path new file mode 100644 index 000000000..ca1a51b3a --- /dev/null +++ b/testsuite/dirname/dirname-handles-absolute-path | |||
@@ -0,0 +1 @@ | |||
test $(busybox dirname /foo/bar/baz) = /foo/bar | |||
diff --git a/testsuite/dirname/dirname-handles-empty-path b/testsuite/dirname/dirname-handles-empty-path new file mode 100644 index 000000000..04134a58f --- /dev/null +++ b/testsuite/dirname/dirname-handles-empty-path | |||
@@ -0,0 +1 @@ | |||
test $(busybox dirname '') = . | |||
diff --git a/testsuite/dirname/dirname-handles-multiple-slashes b/testsuite/dirname/dirname-handles-multiple-slashes new file mode 100644 index 000000000..286f25361 --- /dev/null +++ b/testsuite/dirname/dirname-handles-multiple-slashes | |||
@@ -0,0 +1 @@ | |||
test $(busybox dirname foo/bar///baz) = foo/bar | |||
diff --git a/testsuite/dirname/dirname-handles-relative-path b/testsuite/dirname/dirname-handles-relative-path new file mode 100644 index 000000000..ffe4ab459 --- /dev/null +++ b/testsuite/dirname/dirname-handles-relative-path | |||
@@ -0,0 +1 @@ | |||
test $(busybox dirname foo/bar/baz) = foo/bar | |||
diff --git a/testsuite/dirname/dirname-handles-root b/testsuite/dirname/dirname-handles-root new file mode 100644 index 000000000..6bd62b8a1 --- /dev/null +++ b/testsuite/dirname/dirname-handles-root | |||
@@ -0,0 +1 @@ | |||
test $(busybox dirname /) = / | |||
diff --git a/testsuite/dirname/dirname-handles-single-component b/testsuite/dirname/dirname-handles-single-component new file mode 100644 index 000000000..24f9ae163 --- /dev/null +++ b/testsuite/dirname/dirname-handles-single-component | |||
@@ -0,0 +1 @@ | |||
test $(busybox dirname foo) = . | |||
diff --git a/testsuite/echo/echo-does-not-print-newline b/testsuite/echo/echo-does-not-print-newline new file mode 100644 index 000000000..2ed03caf5 --- /dev/null +++ b/testsuite/echo/echo-does-not-print-newline | |||
@@ -0,0 +1 @@ | |||
test `busybox echo -n word | wc -c` -eq 4 | |||
diff --git a/testsuite/echo/echo-prints-argument b/testsuite/echo/echo-prints-argument new file mode 100644 index 000000000..98779dbbb --- /dev/null +++ b/testsuite/echo/echo-prints-argument | |||
@@ -0,0 +1 @@ | |||
test `busybox echo fubar` = fubar | |||
diff --git a/testsuite/echo/echo-prints-arguments b/testsuite/echo/echo-prints-arguments new file mode 100644 index 000000000..4e4e3b434 --- /dev/null +++ b/testsuite/echo/echo-prints-arguments | |||
@@ -0,0 +1 @@ | |||
test "`busybox echo foo bar`" = "foo bar" | |||
diff --git a/testsuite/echo/echo-prints-newline b/testsuite/echo/echo-prints-newline new file mode 100644 index 000000000..838671efe --- /dev/null +++ b/testsuite/echo/echo-prints-newline | |||
@@ -0,0 +1 @@ | |||
test `busybox echo word | wc -c` -eq 5 | |||
diff --git a/testsuite/false/false-is-silent b/testsuite/false/false-is-silent new file mode 100644 index 000000000..8a9aa0c7f --- /dev/null +++ b/testsuite/false/false-is-silent | |||
@@ -0,0 +1 @@ | |||
busybox false 2>&1 | cmp - /dev/null | |||
diff --git a/testsuite/false/false-returns-failure b/testsuite/false/false-returns-failure new file mode 100644 index 000000000..30ee2997f --- /dev/null +++ b/testsuite/false/false-returns-failure | |||
@@ -0,0 +1,5 @@ | |||
1 | if busybox false; then | ||
2 | return 1 | ||
3 | else | ||
4 | return 0 | ||
5 | fi | ||
diff --git a/testsuite/find/find-supports-minus-xdev b/testsuite/find/find-supports-minus-xdev new file mode 100644 index 000000000..1c8818cdc --- /dev/null +++ b/testsuite/find/find-supports-minus-xdev | |||
@@ -0,0 +1,2 @@ | |||
1 | # XFAIL | ||
2 | busybox find . -xdev >/dev/null 2>&1 | ||
diff --git a/testsuite/grep/grep-is-also-egrep b/testsuite/grep/grep-is-also-egrep new file mode 100644 index 000000000..f28afda62 --- /dev/null +++ b/testsuite/grep/grep-is-also-egrep | |||
@@ -0,0 +1,2 @@ | |||
1 | # UNSUPPORTED: CONFIG_FEATURE_GREP_EGREP_ALIAS | ||
2 | echo foo | busybox egrep foo | ||
diff --git a/testsuite/gunzip/gunzip-reads-from-standard-input b/testsuite/gunzip/gunzip-reads-from-standard-input new file mode 100644 index 000000000..0ab9fdd78 --- /dev/null +++ b/testsuite/gunzip/gunzip-reads-from-standard-input | |||
@@ -0,0 +1,2 @@ | |||
1 | echo foo | gzip -c | busybox gunzip -c > output | ||
2 | echo foo | cmp - output | ||
diff --git a/testsuite/gzip/gzip-accepts-single-minus b/testsuite/gzip/gzip-accepts-single-minus new file mode 100644 index 000000000..8b51fdfed --- /dev/null +++ b/testsuite/gzip/gzip-accepts-single-minus | |||
@@ -0,0 +1 @@ | |||
echo foo | busybox gzip - >/dev/null | |||
diff --git a/testsuite/mkdir/mkdir-makes-a-directory b/testsuite/mkdir/mkdir-makes-a-directory new file mode 100644 index 000000000..6ca5c4d52 --- /dev/null +++ b/testsuite/mkdir/mkdir-makes-a-directory | |||
@@ -0,0 +1,2 @@ | |||
1 | busybox mkdir foo | ||
2 | test -d foo | ||
diff --git a/testsuite/mkdir/mkdir-makes-parent-directories b/testsuite/mkdir/mkdir-makes-parent-directories new file mode 100644 index 000000000..992facb46 --- /dev/null +++ b/testsuite/mkdir/mkdir-makes-parent-directories | |||
@@ -0,0 +1,2 @@ | |||
1 | busybox mkdir -p foo/bar | ||
2 | test -d foo -a -d foo/bar | ||
diff --git a/testsuite/msh/msh-supports-underscores-in-variable-names b/testsuite/msh/msh-supports-underscores-in-variable-names new file mode 100644 index 000000000..9c7834b37 --- /dev/null +++ b/testsuite/msh/msh-supports-underscores-in-variable-names | |||
@@ -0,0 +1 @@ | |||
test "`busybox msh -c 'FOO_BAR=foo; echo $FOO_BAR'`" = foo | |||
diff --git a/testsuite/mv/mv-moves-file b/testsuite/mv/mv-moves-file new file mode 100644 index 000000000..edb4c3751 --- /dev/null +++ b/testsuite/mv/mv-moves-file | |||
@@ -0,0 +1,3 @@ | |||
1 | touch foo | ||
2 | busybox mv foo bar | ||
3 | test ! -f foo -a -f bar | ||
diff --git a/testsuite/rmdir/rmdir-removes-parent-directories b/testsuite/rmdir/rmdir-removes-parent-directories new file mode 100644 index 000000000..222f5dec7 --- /dev/null +++ b/testsuite/rmdir/rmdir-removes-parent-directories | |||
@@ -0,0 +1,3 @@ | |||
1 | mkdir -p foo/bar | ||
2 | busybox rmdir -p foo/bar | ||
3 | test ! -d foo | ||
diff --git a/testsuite/runtest b/testsuite/runtest new file mode 100755 index 000000000..b19be3dd8 --- /dev/null +++ b/testsuite/runtest | |||
@@ -0,0 +1,97 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | PATH=$(dirname $(pwd)):$PATH | ||
4 | |||
5 | run_applet_testcase () | ||
6 | { | ||
7 | local applet=$1 | ||
8 | local testcase=$2 | ||
9 | |||
10 | local status=0 | ||
11 | local U= | ||
12 | local X= | ||
13 | |||
14 | local uc_applet=$(echo $applet | tr a-z A-Z) | ||
15 | local testname=$(basename $testcase) | ||
16 | |||
17 | if grep -q "^# CONFIG_${uc_applet} is not set$" ../.config; then | ||
18 | echo "UNSUPPORTED: $testname" | ||
19 | return 0 | ||
20 | fi | ||
21 | |||
22 | if grep -q "^# UNSUPPORTED: " $testcase; then | ||
23 | local feature=`sed -ne 's/.*UNSUPPORTED: //p' $testcase` | ||
24 | |||
25 | if grep -q "^# ${feature} is not set$" ../.config; then | ||
26 | echo "UNSUPPORTED: $testname" | ||
27 | return 0 | ||
28 | fi | ||
29 | fi | ||
30 | |||
31 | if grep -q "^# XFAIL$" $testcase; then | ||
32 | U=U | ||
33 | X=X | ||
34 | fi | ||
35 | |||
36 | mkdir tmp | ||
37 | pushd tmp >/dev/null | ||
38 | |||
39 | if . ../$testcase >/dev/null 2>&1; then | ||
40 | echo "${U}PASS: $testname" | ||
41 | if [ "$U" ]; then | ||
42 | status=1 | ||
43 | fi | ||
44 | else | ||
45 | echo "${X}FAIL: $testname" | ||
46 | if [ ! "$X" ]; then | ||
47 | status=1 | ||
48 | fi | ||
49 | fi | ||
50 | |||
51 | popd >/dev/null | ||
52 | rm -rf tmp | ||
53 | |||
54 | return $status | ||
55 | } | ||
56 | |||
57 | run_applet_tests () | ||
58 | { | ||
59 | local applet=$1 | ||
60 | |||
61 | local status=0 | ||
62 | |||
63 | for testcase in $applet/*; do | ||
64 | if [ "$testcase" = "$applet/CVS" ]; then | ||
65 | continue | ||
66 | fi | ||
67 | |||
68 | if run_applet_testcase $applet $testcase; then | ||
69 | : | ||
70 | else | ||
71 | status=1 | ||
72 | fi | ||
73 | done | ||
74 | |||
75 | return $status | ||
76 | } | ||
77 | |||
78 | |||
79 | status=0 | ||
80 | |||
81 | if [ $# -ne 0 ]; then | ||
82 | applets="$@" | ||
83 | else | ||
84 | applets="*" | ||
85 | fi | ||
86 | |||
87 | for applet in $applets; do | ||
88 | if [ "$applet" != CVS -a -d "$applet" ]; then | ||
89 | if run_applet_tests $applet; then | ||
90 | : | ||
91 | else | ||
92 | status=1 | ||
93 | fi | ||
94 | fi | ||
95 | done | ||
96 | |||
97 | exit $status | ||
diff --git a/testsuite/sed/sed-chains-substs b/testsuite/sed/sed-chains-substs new file mode 100644 index 000000000..266936ac4 --- /dev/null +++ b/testsuite/sed/sed-chains-substs | |||
@@ -0,0 +1 @@ | |||
test "$(echo foo | busybox sed -e s/foo/bar/ -e s/bar/baz/)" = baz | |||
diff --git a/testsuite/sed/sed-handles-embedded-slashes b/testsuite/sed/sed-handles-embedded-slashes new file mode 100644 index 000000000..cc287613d --- /dev/null +++ b/testsuite/sed/sed-handles-embedded-slashes | |||
@@ -0,0 +1 @@ | |||
test "$(echo fu/bar | busybox sed -e 's/[/]//')" = fubar | |||
diff --git a/testsuite/sed/sed-handles-empty-lines b/testsuite/sed/sed-handles-empty-lines new file mode 100644 index 000000000..2bb8f045a --- /dev/null +++ b/testsuite/sed/sed-handles-empty-lines | |||
@@ -0,0 +1 @@ | |||
test `echo | busybox sed -e 's/$/@/'` = @ | |||
diff --git a/testsuite/sed/sed-handles-unsatisfied-backrefs b/testsuite/sed/sed-handles-unsatisfied-backrefs new file mode 100644 index 000000000..61bff8837 --- /dev/null +++ b/testsuite/sed/sed-handles-unsatisfied-backrefs | |||
@@ -0,0 +1,6 @@ | |||
1 | busybox sed -e 's/.*root=/\1/' >output <<EOF | ||
2 | BOOT_IMAGE=vmlinuz root=/dev/hda5 initrd=init1 | ||
3 | EOF | ||
4 | cmp -s output - <<EOF | ||
5 | /dev/hda5 initrd=init1 | ||
6 | EOF | ||
diff --git a/testsuite/sed/sed-prints-line-once-for-multiple-substs b/testsuite/sed/sed-prints-line-once-for-multiple-substs new file mode 100644 index 000000000..ba8955d6e --- /dev/null +++ b/testsuite/sed/sed-prints-line-once-for-multiple-substs | |||
@@ -0,0 +1,4 @@ | |||
1 | busybox sed -e s/1/2/g -e s/3/4/g >output <<EOF | ||
2 | 1 | ||
3 | EOF | ||
4 | echo 2 | cmp -s output - | ||
diff --git a/testsuite/tar/tar-demands-at-least-one-ctx b/testsuite/tar/tar-demands-at-least-one-ctx new file mode 100644 index 000000000..3ac58e89e --- /dev/null +++ b/testsuite/tar/tar-demands-at-least-one-ctx | |||
@@ -0,0 +1,5 @@ | |||
1 | if busybox tar v; then | ||
2 | return 1 | ||
3 | else | ||
4 | return 0 | ||
5 | fi | ||
diff --git a/testsuite/tar/tar-demands-at-most-one-ctx b/testsuite/tar/tar-demands-at-most-one-ctx new file mode 100644 index 000000000..be2168135 --- /dev/null +++ b/testsuite/tar/tar-demands-at-most-one-ctx | |||
@@ -0,0 +1,5 @@ | |||
1 | if busybox tar tx; then | ||
2 | return 1 | ||
3 | else | ||
4 | return 0 | ||
5 | fi | ||
diff --git a/testsuite/tar/tar-extracts-file b/testsuite/tar/tar-extracts-file new file mode 100644 index 000000000..ca72f2489 --- /dev/null +++ b/testsuite/tar/tar-extracts-file | |||
@@ -0,0 +1,5 @@ | |||
1 | touch foo | ||
2 | tar cf foo.tar foo | ||
3 | rm foo | ||
4 | busybox tar xf foo.tar | ||
5 | test -f foo | ||
diff --git a/testsuite/tar/tar-extracts-multiple-files b/testsuite/tar/tar-extracts-multiple-files new file mode 100644 index 000000000..e26901e8c --- /dev/null +++ b/testsuite/tar/tar-extracts-multiple-files | |||
@@ -0,0 +1,5 @@ | |||
1 | touch foo bar | ||
2 | tar cf foo.tar foo bar | ||
3 | rm foo bar | ||
4 | busybox tar xf foo.tar | ||
5 | test -f foo -a -f bar | ||
diff --git a/testsuite/tar/tar-handles-cz-options b/testsuite/tar/tar-handles-cz-options new file mode 100644 index 000000000..b2806bbe3 --- /dev/null +++ b/testsuite/tar/tar-handles-cz-options | |||
@@ -0,0 +1,4 @@ | |||
1 | # XFAIL | ||
2 | touch foo | ||
3 | busybox tar czf foo.tar.gz foo | ||
4 | gzip -d foo.tar.gz | ||
diff --git a/testsuite/tar/tar-handles-empty-include-and-non-empty-exclude-list b/testsuite/tar/tar-handles-empty-include-and-non-empty-exclude-list new file mode 100644 index 000000000..cf0e4c925 --- /dev/null +++ b/testsuite/tar/tar-handles-empty-include-and-non-empty-exclude-list | |||
@@ -0,0 +1,4 @@ | |||
1 | touch foo | ||
2 | tar cf foo.tar foo | ||
3 | echo foo >foo.exclude | ||
4 | busybox tar xf foo.tar -X foo.exclude | ||
diff --git a/testsuite/tar/tar-handles-exclude-and-extract-lists b/testsuite/tar/tar-handles-exclude-and-extract-lists new file mode 100644 index 000000000..7f771b978 --- /dev/null +++ b/testsuite/tar/tar-handles-exclude-and-extract-lists | |||
@@ -0,0 +1,6 @@ | |||
1 | touch foo bar baz | ||
2 | tar cf foo.tar foo bar baz | ||
3 | echo foo >foo.exclude | ||
4 | rm foo bar baz | ||
5 | busybox tar xf foo.tar foo bar -X foo.exclude | ||
6 | test ! -f foo -a -f bar -a ! -f baz | ||
diff --git a/testsuite/tar/tar-handles-multiple-X-options b/testsuite/tar/tar-handles-multiple-X-options new file mode 100644 index 000000000..8321af859 --- /dev/null +++ b/testsuite/tar/tar-handles-multiple-X-options | |||
@@ -0,0 +1,8 @@ | |||
1 | touch foo | ||
2 | touch bar | ||
3 | tar cf foo.tar foo bar | ||
4 | echo foo > foo.exclude | ||
5 | echo bar > bar.exclude | ||
6 | rm foo bar | ||
7 | busybox tar xf foo.tar -X foo.exclude -X bar.exclude | ||
8 | test ! -f foo -a ! -f bar | ||
diff --git a/testsuite/tar/tar-handles-nested-exclude b/testsuite/tar/tar-handles-nested-exclude new file mode 100644 index 000000000..da1840863 --- /dev/null +++ b/testsuite/tar/tar-handles-nested-exclude | |||
@@ -0,0 +1,7 @@ | |||
1 | mkdir foo | ||
2 | touch foo/bar | ||
3 | tar cf foo.tar foo | ||
4 | rm -rf foo | ||
5 | echo foo/bar >foobar.exclude | ||
6 | busybox tar xf foo.tar foo -X foobar.exclude | ||
7 | test -d foo -a ! -f foo/bar | ||
diff --git a/testsuite/tee/tee-appends-input b/testsuite/tee/tee-appends-input new file mode 100644 index 000000000..cff20bf7f --- /dev/null +++ b/testsuite/tee/tee-appends-input | |||
@@ -0,0 +1,5 @@ | |||
1 | echo i\'m a little teapot >foo | ||
2 | cp foo bar | ||
3 | echo i\'m a little teapot >>foo | ||
4 | echo i\'m a little teapot | busybox tee -a bar >/dev/null | ||
5 | cmp foo bar | ||
diff --git a/testsuite/tee/tee-tees-input b/testsuite/tee/tee-tees-input new file mode 100644 index 000000000..26e217384 --- /dev/null +++ b/testsuite/tee/tee-tees-input | |||
@@ -0,0 +1,3 @@ | |||
1 | echo i\'m a little teapot >foo | ||
2 | echo i\'m a little teapot | busybox tee bar >baz | ||
3 | cmp foo bar && cmp foo baz | ||
diff --git a/testsuite/touch/touch-creates-file b/testsuite/touch/touch-creates-file new file mode 100644 index 000000000..4b4935421 --- /dev/null +++ b/testsuite/touch/touch-creates-file | |||
@@ -0,0 +1,2 @@ | |||
1 | busybox touch foo | ||
2 | test -f foo | ||
diff --git a/testsuite/touch/touch-does-not-create-file b/testsuite/touch/touch-does-not-create-file new file mode 100644 index 000000000..885259286 --- /dev/null +++ b/testsuite/touch/touch-does-not-create-file | |||
@@ -0,0 +1,2 @@ | |||
1 | busybox touch -c foo | ||
2 | test ! -f foo | ||
diff --git a/testsuite/true/true-is-silent b/testsuite/true/true-is-silent new file mode 100644 index 000000000..1d1bdb22f --- /dev/null +++ b/testsuite/true/true-is-silent | |||
@@ -0,0 +1 @@ | |||
busybox true 2>&1 | cmp - /dev/null | |||
diff --git a/testsuite/true/true-returns-success b/testsuite/true/true-returns-success new file mode 100644 index 000000000..cdf2d55e5 --- /dev/null +++ b/testsuite/true/true-returns-success | |||
@@ -0,0 +1 @@ | |||
busybox true | |||
diff --git a/testsuite/uuencode/uuencode-sets-standard-input-mode-correctly b/testsuite/uuencode/uuencode-sets-standard-input-mode-correctly new file mode 100644 index 000000000..0ccf23b59 --- /dev/null +++ b/testsuite/uuencode/uuencode-sets-standard-input-mode-correctly | |||
@@ -0,0 +1,6 @@ | |||
1 | saved_umask=$(umask) | ||
2 | umask 0 | ||
3 | busybox uuencode foo </dev/null | head -n 1 | grep -q 666 | ||
4 | status=$? | ||
5 | umask $saved_umask | ||
6 | return $status | ||
diff --git a/testsuite/wc/wc-counts-all b/testsuite/wc/wc-counts-all new file mode 100644 index 000000000..5e2cb6e4a --- /dev/null +++ b/testsuite/wc/wc-counts-all | |||
@@ -0,0 +1 @@ | |||
test "`echo i\'m a little teapot | busybox wc`" = ' 1 4 20' | |||
diff --git a/testsuite/wc/wc-counts-characters b/testsuite/wc/wc-counts-characters new file mode 100644 index 000000000..755864684 --- /dev/null +++ b/testsuite/wc/wc-counts-characters | |||
@@ -0,0 +1 @@ | |||
test `echo i\'m a little teapot | busybox wc -c` -eq 20 | |||
diff --git a/testsuite/wc/wc-counts-lines b/testsuite/wc/wc-counts-lines new file mode 100644 index 000000000..5be6ed089 --- /dev/null +++ b/testsuite/wc/wc-counts-lines | |||
@@ -0,0 +1 @@ | |||
test `echo i\'m a little teapot | busybox wc -l` -eq 1 | |||
diff --git a/testsuite/wc/wc-counts-words b/testsuite/wc/wc-counts-words new file mode 100644 index 000000000..331650e95 --- /dev/null +++ b/testsuite/wc/wc-counts-words | |||
@@ -0,0 +1 @@ | |||
test `echo i\'m a little teapot | busybox wc -w` -eq 4 | |||
diff --git a/testsuite/wc/wc-prints-longest-line-length b/testsuite/wc/wc-prints-longest-line-length new file mode 100644 index 000000000..78831fc13 --- /dev/null +++ b/testsuite/wc/wc-prints-longest-line-length | |||
@@ -0,0 +1 @@ | |||
test `echo i\'m a little teapot | busybox wc -L` -eq 19 | |||
diff --git a/testsuite/wget/wget--O-overrides--P b/testsuite/wget/wget--O-overrides--P new file mode 100644 index 000000000..fdb5d47c0 --- /dev/null +++ b/testsuite/wget/wget--O-overrides--P | |||
@@ -0,0 +1,3 @@ | |||
1 | mkdir foo | ||
2 | busybox wget -q -O index.html -P foo http://www.google.com/ | ||
3 | test -s index.html | ||
diff --git a/testsuite/wget/wget-retrieves-google-index b/testsuite/wget/wget-retrieves-google-index new file mode 100644 index 000000000..7be9a8087 --- /dev/null +++ b/testsuite/wget/wget-retrieves-google-index | |||
@@ -0,0 +1,2 @@ | |||
1 | busybox wget -q -O foo http://www.google.com/ | ||
2 | test -s foo | ||
diff --git a/testsuite/wget/wget-supports--P b/testsuite/wget/wget-supports--P new file mode 100644 index 000000000..9b4d095e6 --- /dev/null +++ b/testsuite/wget/wget-supports--P | |||
@@ -0,0 +1,3 @@ | |||
1 | mkdir foo | ||
2 | busybox wget -q -P foo http://www.google.com/ | ||
3 | test -s foo/index.html | ||