94eb1c4dc6
Add some tests which coreutils realpath pass but BusyBox realpath fails (bar one). Adjust xmalloc_realpath_coreutils() so the tests pass: - Expand symbolic links before testing whether the last path component exists. - When the link target is a relative path canonicalize it by passing it through xmalloc_realpath_coreutils() as already happens for absolute paths. - Ignore trailing slashes when finding the last path component and correctly handle the case where the only slash is at the start of the path. This requires ignoring superfluous leading slashes. - Undo all changes to the path so error messages from the caller show the original filename. function old new delta xmalloc_realpath_coreutils 214 313 +99 Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com> |
||
---|---|---|
.. | ||
basename | ||
bunzip2 | ||
bzcat | ||
cat | ||
cmp | ||
cp | ||
cut | ||
date | ||
dd | ||
dirname | ||
du | ||
echo | ||
expr | ||
false | ||
find | ||
gunzip | ||
gzip | ||
hostid | ||
hostname | ||
id | ||
ln | ||
ls | ||
md5sum | ||
mkdir | ||
mv | ||
paste | ||
pwd | ||
rm | ||
rmdir | ||
strings | ||
tail | ||
tar | ||
tee | ||
touch | ||
tr | ||
true | ||
uptime | ||
wc | ||
wget | ||
which | ||
xargs | ||
all_sourcecode.tests | ||
ar.tests | ||
ash.tests | ||
awk_t1.tar.bz2 | ||
awk.tests | ||
bc_add_results.txt | ||
bc_add.bc | ||
bc_arctangent_results.txt | ||
bc_arctangent.bc | ||
bc_array_results.txt | ||
bc_array.bc | ||
bc_arrays_results.txt | ||
bc_arrays.bc | ||
bc_bessel_results.txt | ||
bc_bessel.bc | ||
bc_boolean_results.txt | ||
bc_boolean.bc | ||
bc_cosine_results.txt | ||
bc_cosine.bc | ||
bc_decimal_results.txt | ||
bc_decimal.bc | ||
bc_divide_results.txt | ||
bc_divide.bc | ||
bc_exponent_results.txt | ||
bc_exponent.bc | ||
bc_log_results.txt | ||
bc_log.bc | ||
bc_misc1_results.txt | ||
bc_misc1.bc | ||
bc_misc2_results.txt | ||
bc_misc2.bc | ||
bc_misc_results.txt | ||
bc_misc.bc | ||
bc_modulus_results.txt | ||
bc_modulus.bc | ||
bc_multiply_results.txt | ||
bc_multiply.bc | ||
bc_numbers1_results.txt | ||
bc_numbers1.bc | ||
bc_numbers2_results.txt | ||
bc_numbers2.bc | ||
bc_pi_results.txt | ||
bc_pi.bc | ||
bc_power_results.txt | ||
bc_power.bc | ||
bc_references_results.txt | ||
bc_references.bc | ||
bc_sine_results.txt | ||
bc_sine.bc | ||
bc_sqrt_results.txt | ||
bc_sqrt.bc | ||
bc_strings_results.txt | ||
bc_strings.bc | ||
bc_subtract_results.txt | ||
bc_subtract.bc | ||
bc_vars_results.txt | ||
bc_vars.bc | ||
bc.tests | ||
bunzip2.tests | ||
busybox.tests | ||
bz2_issue_11.bz2 | ||
bz2_issue_12.bz2 | ||
bzcat.tests | ||
cal.tests | ||
cat.tests | ||
comm.tests | ||
cp.tests | ||
cpio.tests | ||
cryptpw.tests | ||
cut.tests | ||
dc_add_results.txt | ||
dc_add.dc | ||
dc_boolean_results.txt | ||
dc_boolean.dc | ||
dc_decimal_results.txt | ||
dc_decimal.dc | ||
dc_divide_results.txt | ||
dc_divide.dc | ||
dc_divmod_results.txt | ||
dc_divmod.dc | ||
dc_misc_results.txt | ||
dc_misc.dc | ||
dc_modexp_results.txt | ||
dc_modexp.dc | ||
dc_modulus_results.txt | ||
dc_modulus.dc | ||
dc_multiply_results.txt | ||
dc_multiply.dc | ||
dc_power_results.txt | ||
dc_power.dc | ||
dc_sqrt_results.txt | ||
dc_sqrt.dc | ||
dc_strings_results.txt | ||
dc_strings.dc | ||
dc_subtract_results.txt | ||
dc_subtract.dc | ||
dc.tests | ||
dcx_vars_results.txt | ||
dcx_vars.dc | ||
diff.tests | ||
expand.tests | ||
factor.tests | ||
find.tests | ||
fold.tests | ||
grep.tests | ||
gunzip.tests | ||
head.tests | ||
hexdump.tests | ||
ls.mk_uni_tests | ||
ls.tests | ||
makedevs.device_table.txt | ||
makedevs.tests | ||
md5sum.tests | ||
mdev.tests | ||
mkfs.minix.tests | ||
mount.testroot | ||
mount.tests | ||
nl.tests | ||
od.tests | ||
parse.tests | ||
patch.tests | ||
pidof.tests | ||
printf.tests | ||
readlink.tests | ||
README | ||
realpath.tests | ||
rev.tests | ||
runtest | ||
rx.tests | ||
sed.tests | ||
seq.tests | ||
sha1sum.tests | ||
sha3sum.tests | ||
sha256sum.tests | ||
sha512sum.tests | ||
sort.tests | ||
start-stop-daemon.tests | ||
sum.tests | ||
tail.tests | ||
tar.tests | ||
tar.utf8.tar.bz2 | ||
taskset.tests | ||
test.tests | ||
testing.sh | ||
TODO | ||
tr.tests | ||
umlwrapper.sh | ||
uncompress.tests | ||
unexpand.tests | ||
uniq.tests | ||
unlzma_issue_1.lzma | ||
unlzma_issue_2.lzma | ||
unlzma_issue_3.lzma | ||
unlzma.tests | ||
unzip_bad_lzma_1.zip | ||
unzip_bad_lzma_2.zip | ||
unzip.tests | ||
uuencode.tests | ||
xargs.tests | ||
xxd.tests |
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.