busybox/testsuite
Ron Yorston f020414413 cut: improve detection of invalid ranges
Commit 0068ce2fa (cut: add toybox-compatible options -O OUTSEP,
-D, -F LIST) added detection of reversed ranges.  Further
improvements are possible.

- The test for reversed ranges compared the start after it had been
  decremented with the end before decrement.  It thus missed ranges
  of the form 2-1.

- Zero isn't a valid start value for a range.  (Nor is it a valid
  end value, but that's caught by the test for a reversed range.)

- The code

        if (!*ltok)
            e = INT_MAX;

  duplicates a check that's already been made.

- Display the actual range in the error message to make it easier
  to find which range was at fault.

function                                             old     new   delta
.rodata                                           100273  100287     +14
cut_main                                            1239    1237      -2
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 14/-2)              Total: 12 bytes

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10 01:29:44 +01:00
..
basename
bunzip2 randomconfig fixes 2016-12-12 09:26:16 +01:00
bzcat randomconfig fixes 2016-12-12 09:26:16 +01:00
cat
cmp
cp
cut
date date,touch: allow timezone offsets in dates 2021-09-17 00:11:30 +02:00
dd dd: fix testsuite 2021-08-15 23:01:33 +02:00
dirname
du randomconfig fixes 3 2016-06-20 00:36:21 +02:00
echo testsuite: check CONFIG_DESKTOP before using 'od -t' 2018-11-27 16:57:36 +01:00
expr
false
find
gunzip
gzip gzip: add test that checks that -9 compresses better than -1 2016-08-15 01:31:17 +02:00
hostid fix bashisms in testsuite/ 2013-11-10 22:06:06 +01:00
hostname
id
ln
ls
md5sum
mkdir
mv cp,mv: fix -t DIR option 2021-06-25 00:23:29 +02:00
paste paste: new applet 2017-03-23 17:35:52 +01:00
pwd testsuite: allow tests to work in paths containing spaces 2018-04-09 20:35:48 +02:00
rm
rmdir
strings
tail
tar
tee
touch
tr
true
uptime
wc
wget
which testsuite: fix last "which" change 2014-01-23 14:41:53 +01:00
xargs testsuite: allow tests to work in paths containing spaces 2018-04-09 20:35:48 +02:00
all_sourcecode.tests
ar.tests randomconfig fixes 2 2016-06-19 21:54:04 +02:00
ash.tests
awk.tests awk: restore assignment precedence to be lower than ternary ?: 2024-07-09 15:30:46 +02:00
awk_t1.tar.bz2
bc.tests bc/dc: fix length(0) and length(0.000nnn) result 2021-02-26 14:23:13 +01:00
bc_add.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_add_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_arctangent.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_arctangent_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_array.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_array_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_arrays.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_arrays_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_bessel.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_bessel_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_boolean.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_boolean_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_cosine.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_cosine_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_decimal.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_decimal_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_divide.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_divide_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_exponent.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_exponent_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_log.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_log_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_misc.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_misc1.bc bc: fix "...; return}" to work, disallow "return ()" 2019-01-03 23:34:36 +01:00
bc_misc1_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_misc2.bc bc: partially rewrite parser, tests pass, ^C might be broken now 2018-12-16 16:10:38 +01:00
bc_misc2_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_misc_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_modulus.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_modulus_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_multiply.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_multiply_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_numbers1.bc bc: fix handling of "digits" above 9 2018-12-29 02:24:19 +01:00
bc_numbers1_results.txt bc: fix handling of "digits" above 9 2018-12-29 02:24:19 +01:00
bc_numbers2.bc bc: more fixes for unusual input bases 2018-12-29 03:08:12 +01:00
bc_numbers2_results.txt bc: more fixes for unusual input bases 2018-12-29 03:08:12 +01:00
bc_pi.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_pi_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_power.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_power_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_references.bc bc: implement pass-by-reference code from upstream 2019-01-25 16:22:15 +01:00
bc_references_results.txt bc: implement pass-by-reference code from upstream 2019-01-25 16:22:15 +01:00
bc_sine.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_sine_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_sqrt.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_sqrt_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_strings.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_strings_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_subtract.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_subtract_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_vars.bc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bc_vars_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
bunzip2.tests testsuite: fix bunzip2.tests expectations 2019-05-26 13:51:41 +02:00
busybox.tests testsuite: update busybox and bzcat tests 2018-02-12 15:32:02 +01:00
bz2_issue_11.bz2 bzip2: fix two crashes on corrupted archives 2018-04-08 20:05:04 +02:00
bz2_issue_12.bz2 bzip2: fix two crashes on corrupted archives 2018-04-08 20:05:04 +02:00
bzcat.tests testsuite/bzcat.tests: fix false positive take 2 2018-06-27 13:15:10 +02:00
cal.tests
cat.tests nl: ensure '-b n' option displays file content 2021-02-02 17:37:41 +01:00
comm.tests
cp.tests
cpio.tests randomconfig fixes 2020-06-23 21:28:19 +02:00
cryptpw.tests libbb: code shrink in des encryption, in setup_salt() 2021-11-28 12:21:23 +01:00
cut.tests cut: improve detection of invalid ranges 2024-12-10 01:29:44 +01:00
dc.tests bc/dc: fix length(0) and length(0.000nnn) result 2021-02-26 14:23:13 +01:00
dc_add.dc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_add_results.txt bc,dc: make BC_LINE_LENGTH/DC_LINE_LENGTH more compatible with GNU 2020-12-29 18:52:19 +01:00
dc_boolean.dc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_boolean_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_decimal.dc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_decimal_results.txt bc,dc: make BC_LINE_LENGTH/DC_LINE_LENGTH more compatible with GNU 2020-12-29 18:52:19 +01:00
dc_divide.dc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_divide_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_divmod.dc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_divmod_results.txt bc,dc: make BC_LINE_LENGTH/DC_LINE_LENGTH more compatible with GNU 2020-12-29 18:52:19 +01:00
dc_misc.dc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_misc_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_modexp.dc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_modexp_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_modulus.dc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_modulus_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_multiply.dc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_multiply_results.txt bc,dc: make BC_LINE_LENGTH/DC_LINE_LENGTH more compatible with GNU 2020-12-29 18:52:19 +01:00
dc_power.dc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_power_results.txt bc,dc: make BC_LINE_LENGTH/DC_LINE_LENGTH more compatible with GNU 2020-12-29 18:52:19 +01:00
dc_sqrt.dc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_sqrt_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_strings.dc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_strings_results.txt bc: prepare for char-by-char input handling 2018-12-26 18:32:43 +01:00
dc_subtract.dc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dc_subtract_results.txt bc,dc: make BC_LINE_LENGTH/DC_LINE_LENGTH more compatible with GNU 2020-12-29 18:52:19 +01:00
dcx_vars.dc testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
dcx_vars_results.txt testsuite: add bc and dc tests 2018-12-12 21:41:40 +01:00
diff.tests diff.tests: add testcases for -B and single line changes 2015-07-31 16:51:15 +02:00
ed.tests ed: fix line insertion before current line. Closes 15081 2024-09-27 20:14:04 +02:00
expand.tests
factor.tests factor: detect squares 2020-12-22 20:24:30 +01:00
find.tests find: implement -ok 2023-03-28 18:08:02 +02:00
fold.tests
grep.tests grep: for -L, exitcode 0 means files *without* matches were found, closes 13151 2020-08-15 00:39:30 +02:00
gunzip.tests
head.tests bc: rename config options 2018-12-28 13:32:04 +01:00
hexdump.tests hexdump: fix regression with -n4 -e '"%u"' 2024-12-09 11:17:14 +01:00
ls.mk_uni_tests
ls.tests
makedevs.device_table.txt
makedevs.tests randconfig fixes 2015-10-11 23:48:28 +02:00
md5sum.tests {md5,shaN}sum: make -c EMPTY fail 2016-07-11 19:51:08 +02:00
mdev.tests randomconfig fixes 2020-06-24 00:27:37 +02:00
mkfs.minix.tests
mount.testroot
mount.tests testsuite/mount.tests: accomodate umount failure seen on 5.18.0 2022-12-13 15:12:31 +01:00
nl.tests nl: ensure '-b n' option displays file content 2021-02-02 17:37:41 +01:00
od.tests od: -l,I,L indeed depend on sizeof(long), fix this 2023-05-26 20:17:04 +02:00
parse.tests sysctl: fix file parsing, do not require -w for VAR=VAL 2017-08-05 13:45:22 +02:00
patch.tests randomconfig fixes 2020-06-23 21:28:19 +02:00
pidof.tests testsuite/pidof.tests: fix false positive take 2 2018-06-27 14:50:00 +02:00
printf.tests printf: allow 0 as a flag and allow multiple flags 2021-12-17 21:13:26 +01:00
readlink.tests Spelling fixes in comments, documentation, tests and examples 2017-04-17 16:13:32 +02:00
README
realpath.tests libbb: better coreutils compatibility for realpath 2021-10-09 01:47:12 +02:00
rev.tests rev: correct output for long input lines 2021-08-22 00:08:18 +02:00
runtest remove "local" bashism from a few scripts 2017-01-24 20:52:42 +01:00
rx.tests
sed.tests sed: fix handling of escaped delimiters in s/// replacement 2022-01-23 19:04:27 +01:00
seq.tests seq: fix yet another case of negative parameters not working 2023-04-11 20:29:59 +02:00
sha1sum.tests testsuite/sha1sum.tests: fix false positive failure 2023-01-02 17:02:17 +01:00
sha3sum.tests sha3: fix to conform to final SHA3 padding standard, add -a BITS option 2016-08-29 14:05:25 +02:00
sha256sum.tests
sha512sum.tests
sort.tests sort: fix sort -s -u, closes 14871 2022-07-29 16:40:00 +02:00
start-stop-daemon.tests start-stop-daemon: add -d DIR chdir option 2023-11-07 07:12:40 +01:00
sum.tests testsuite: allow tests to work in paths containing spaces 2018-04-09 20:35:48 +02:00
tail.tests
tar.tests tar: fix testsuite 2021-08-16 00:48:50 +02:00
tar.utf8.tar.bz2 tar: handle pax-encoded utf8 filenames and link names. Closes 9406 2016-11-11 17:56:45 +01:00
taskset.tests
test.tests test: fix mishandling of "test '(' = '('" and similar 2014-07-01 14:16:28 +02:00
testing.sh od: add tests 2023-05-25 15:32:03 +02:00
time.tests time: implement %% and \escapes in -f FMT 2024-01-01 22:24:42 +01:00
TODO
tr.tests
tree.tests testsuite/tree.tests: fix false positive failure 2023-01-02 17:01:14 +01:00
tsort.tests tsort: new applet 2022-05-02 14:25:36 +02:00
umlwrapper.sh
uncompress.tests
unexpand.tests sysctl: do report EACCES errors on write 2020-06-09 15:58:32 +02:00
uniq.tests
unlzma.tests unlzma: fix a case where we could read before beginning of buffer 2021-06-15 15:14:00 +02:00
unlzma_issue_1.lzma unlzma: fix segfault on bad archive 2018-04-08 20:45:16 +02:00
unlzma_issue_2.lzma unlzma: fix segfault on bad archive 2018-04-08 20:45:16 +02:00
unlzma_issue_3.lzma unlzma: fix a case where we could read before beginning of buffer 2021-06-15 15:14:00 +02:00
unzip.tests bc: rename config options 2018-12-28 13:32:04 +01:00
unzip_bad_lzma_1.zip unlzma: fix another SEGV case 2018-04-19 19:30:51 +02:00
unzip_bad_lzma_2.zip unlzma: close another SEGV possibility 2018-05-25 17:03:46 +02:00
uuencode.tests
xargs.tests randomconfig fixes 2020-12-29 16:53:11 +01:00
xxd.tests xxd: add two more testcases 2022-08-22 15:57:57 +02:00

To run the test suite, change to this directory and run "./runtest".  It will
run all of the test cases, and list those with unexpected outcomes.  Adding the
-v option will cause it to show expected outcomes as well.  To only run the test
cases for particular applets:

./runtest <applet1> <applet2>...

Set SKIP_KNOWN_BUGS environment variable to any non-empty value
to exclude tests which are known to fail.

Set SKIP_INTERNET_TESTS to exclude tests which require working
internet connection.


Common causes of false positives:

For busybox built against uclibc, /etc/TZ does not exist or does not match
host system timezone setting. For glibc based host systems, timezone settings
are in /etc/localtime.

LANG and LC_xxx environment variables set to non-C locale.


Developer's notes:

The test cases for an applet reside in the subdirectory of the applet name.
The name of the test case should be the assertion that is tested.
The test case should be a shell fragment that returns successfully
if the test case passes, and unsuccessfully otherwise.

If the test case relies on a certain feature, it should include the string
"FEATURE: " followed by the name of the feature in a comment.  If it is always
expected to fail, it should include the string "XFAIL" in a comment.


For the entire testsuite, the copyright is as follows:

Copyright (C) 2001, 2002  Matt Kraai

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.