# not checked by the test), then read and execute the rest: "echo A | ..."
# The bug was that ash was eating the beginning of "echo A" despite the pause.
testing "Invalid unicode chars followed by a pause do not eat next chars" \
- "{ echo -ne 'echo \xff\n'; sleep 1; echo -ne 'echo A | hexdump -C >ash.output; exit; exit; exit; exit\n'; } \
+ "{ $ECHO -ne 'echo \xff\n'; sleep 1; $ECHO -ne 'echo A | hexdump -C >ash.output; exit; exit; exit; exit\n'; } \
| script -q -c 'ash' /dev/null >/dev/null; cat ash.output" \
"\
00000000 41 0a |A.|
-test $(echo -e "f1\tf2\tf3" | busybox cut -f 2) = f2
+test $($ECHO -e "f1\tf2\tf3" | busybox cut -f 2) = f2
-test x"`date -R`" = x"`busybox date -R`"
+dt1="`date -R`"
+# Wait for the start of next second
+dt="$dt1"
+while test x"$dt" = x"$dt1"; do
+ dt="`date -R`"
+done
+
+test x"$dt" = x"`busybox date -R`"
# FEATURE: CONFIG_FEATURE_HUMAN_READABLE
-d=/bin
-du -h "$d" > logfile.gnu
-busybox du -h "$d" > logfile.bb
-cmp logfile.gnu logfile.bb
+dd if=/dev/zero of=file bs=1M count=1 2>/dev/null
+test x"`busybox du -h .`" = x"1.0M ."
-d=/bin
-du -k "$d" > logfile.gnu
-busybox du -k "$d" > logfile.bb
-cmp logfile.gnu logfile.bb
+dd if=/dev/zero of=file1 bs=1k count=64 2>/dev/null
+dd if=/dev/zero of=file2 bs=1k count=16 2>/dev/null
+test x"`busybox du -k .`" = x"80 ." \
+ -o x"`busybox du -k .`" = x"88 ." \
# FEATURE: CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K
-d=/bin
-du -l "$d" > logfile.gnu
-busybox du -l "$d" > logfile.bb
-cmp logfile.gnu logfile.bb
+dd if=/dev/zero of=file1 bs=1k count=64 2>/dev/null
+ln file1 file1.1
+dd if=/dev/zero of=file2 bs=1k count=16 2>/dev/null
+test x"`busybox du -l .`" = x"144 ." \
+ -o x"`busybox du -l .`" = x"148 ." \
+ -o x"`busybox du -l .`" = x"152 ." \
# FEATURE: CONFIG_FEATURE_HUMAN_READABLE
-d=/bin
-du -m "$d" > logfile.gnu
-busybox du -m "$d" > logfile.bb
-cmp logfile.gnu logfile.bb
+dd if=/dev/zero of=file bs=1M count=1 2>/dev/null
+test x"`busybox du -m .`" = x"1 ."
d=/bin
du -s "$d" > logfile.gnu
busybox du -s "$d" > logfile.bb
-cmp logfile.gnu logfile.bb
+cmp logfile.gnu logfile.bb && exit 0
+diff -u logfile.gnu logfile.bb
+exit 1
d=/bin
du "$d" > logfile.gnu
busybox du "$d" > logfile.bb
-cmp logfile.gnu logfile.bb
+cmp logfile.gnu logfile.bb && exit 0
+diff -u logfile.gnu logfile.bb
+exit 1
# FEATURE: CONFIG_UNEXPAND
rm -f foo bar
-echo -e "\ty" | expand -t 3 ../../busybox > foo
-echo -e "\ty" | busybox unexpand -t 3 ../../busybox > bar
+$ECHO -e "\ty" | expand -t 3 ../../busybox > foo
+$ECHO -e "\ty" | busybox unexpand -t 3 ../../busybox > bar
set +e
test ! -f foo -a -f bar
if [ $? = 0 ] ; then
diff -q foo bar
fi
rm -f foo bar
-echo -e "\ty\tx" | expand -it 3 ../../busybox > foo
-echo -e "\ty\tx" | busybox unexpand -it 3 ../../busybox > bar
+$ECHO -e "\ty\tx" | expand -it 3 ../../busybox > foo
+$ECHO -e "\ty\tx" | busybox unexpand -it 3 ../../busybox > bar
set +e
test ! -f foo -a -f bar
if [ $? = 0 ] ; then
-test x$(hostid) = x$(busybox hostid)
-
+h=x$(busybox hostid)
+# Is $h a sequence of hex numbers?
+x="${h//[0123456789abcdef]/x}"
+x="${x//xxx/x}"
+x="${x//xxx/x}"
+x="${x//xxx/x}"
+x="${x//xx/x}"
+test x"$x" = x"x"
-test x$(hostname -d) = x$(busybox hostname -d)
-
+f=$(busybox hostname -f)
+d=$(busybox hostname -d)
+test x"${f#*.}" = x"$d"
00000000 43 06 06 |C..|\n\
00000003\n\
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????" \
- "" "\1\1\376\
+ "" "\01\01\0376\
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????\
-\x1A\x1A\x1A\x1A\x1A\x4B\xB0\4"
+\x1A\x1A\x1A\x1A\x1A\x4B\xB0\04"
rm -f rx.OUTFILE 2>/dev/null
testing "sed embedded NUL g" "sed -e 's/woo/bang/g'" "bang\0bang\0" "" \
"woo\0woo\0"
test x"$SKIP_KNOWN_BUGS" = x"" && {
-echo -e "/woo/a he\0llo" > sed.commands
+$ECHO -e "/woo/a he\0llo" > sed.commands
testing "sed NUL in command" "sed -f sed.commands" "woo\nhe\0llo\n" "" "woo"
rm sed.commands
}
"one\none\n111\n222\ntwo\ntwo" "one" "two"
}
testing "sed subst+write" \
- "sed -e 's/i/z/' -e 'woutputw' input -; echo -n X; cat outputw" \
+ "sed -e 's/i/z/' -e 'woutputw' input -; $ECHO -n X; cat outputw" \
"thzngy\nagaznXthzngy\nagazn" "thingy" "again"
rm outputw
testing "sed trailing NUL" \
ln input_file input_dir
ln input_soft input_dir
tar cf test.tar input_*
-tar tvf test.tar | sed "s/.*[0-9] input/input/"
+tar tvf test.tar | sed "s/.*[0-9] input/input/" | sort
tar xf test.tar 2>&1
echo Ok: $?
ls -l . input_dir/* | grep input_ | sed "s/\\(^[^ ]*\\) .* input/\\1 input/"
run_tr ()
{
- echo -n "echo '$1' | tr '$2' '$3': "
+ $ECHO -n "echo '$1' | tr '$2' '$3': "
echo "$1" | $bb tr "$2" "$3"
echo
}