Age | Commit message (Collapse) | Author |
|
And when I say "fix", I mean "hack around in the worst possible way".
Android+mksh is often slow enough that we can do the pgrep before the
killed process has actually exited. (I'm seeing roughly 100% failure
rate on cloud x86 emulators, and about 75% on a real Pixel 2.)
|
|
It turns out some Android devices have an empty /etc/passwd and/or
/etc/group, which was defeating the previous workaround. Switch to
testing the intention more directly: we'll try the file in /etc, and if
that didn't work, we'll assume we need a workaround.
|
|
There's no /etc/group on Android.
Loop devices are in different places, but that test doesn't seem to
offer anything beyond the block/char special device tests later, so
remove that rather than fix it.
Fix the block/char special tests (the expectations were missing, but
they're never normally run on the host because the mknod fails).
Likewise add the missing expectation to the "ownership" test, which
isn't normally run on the host because the chown fails.
The "sparse without overflow" test was broken because of the mksh/bash
disagreement about whether in `VAR=val shell_function` that's a
temporary assignment to VAR or one that outlives the command. Switch SUM
to being a function like LST before it. Also rewrite the TARHD stuff
because Android (a) doesn't have hd and (b) doesn't have process
substitution in its shell. (I wish I'd noticed TARHD earlier --- I'd
been manually sending the tar files to xxd for debugging instead!)
With this patch, all the tar tests now pass for me on both the device
and host.
|
|
|
|
The first bug appeared as a memory overwrite, but was actually visible
without hwasan: basically any `grep -F` that let to multiple matches on
the same line was broken.
The second bug was another memory overwrite, visible when I ran the
existing grep tests.
Bug: http://b/137573082
|
|
Used by some ART tests and also some LLVM tests. (The motivating example
is the latter, but I noticed the former when looking for other users.)
Bug: http://b/137298656
|
|
Before this patch, we're effectively doing `pidof -x` all the time. This
patch changes names_to_pid() to allow us to say whether or not we want to
include scripts, and adjusts the callers appropriately.
Also add tests for `pidof` versus `pidof -x` which pass after this
patch, without regressing the existing killall tests.
|
|
On BSD these are actually the same, and there's a -S that you need in
addition. So strictly this is a behavior change for Android (which is
going from BSD grep to toybox grep), but it's a behavior preserving
change for the AOSP build (which is going from GNU grep to toybox grep),
and the latter actually has a checked-in use of -R where the former
doesn't.
|
|
The test relied on the non-builtins not being toybox (or another
multicall binary). A multicall binary will actually look at the
symlinked name (in this case "true") and do what it says on the tin.
Use a tiny shell script instead.
|
|
Investigating why the toybox tar tests fail on Android with toybox dd, I
realized I was rewriting a part of dd I'd rewritten before!
This is a re-send of my 2019-02-22 patch, rebased against the current
ToT...
This patch was originally motivated because after suggesting to the author of
https://stackoverflow.com/questions/17157820/access-vdsolinux/54797221#54797221
that he could tell dd to work in bytes rather than blocks, I realized
that our dd doesn't actually support that. But the rewrite of the main
loop is necessary to fix the incorrect output from the dd calls in the
tar test.
Without this patch, `yes | dd bs=65536 count=1 > fweep` basically gives
random output, based on how many bytes the pipe feels like giving you in
your first read. (As far as I know, dd *without* bs= was fine, but I
can't guarantee that that's true, just that I haven't seen it fail.)
Also switch to TAGGED_ARRAY and comma_* for conv rather than add two more
copies of an undesired idiom. It turned out -- contrary to the belief of
cp(1) -- that comma_scan isn't suitable for this because of its magic
handling of "no" prefixes. (It's actually harmless in cp because none
of the --preserve options begin with "no", but some dd options do.) To
this end, comma_remove is a less-magic comma_scan.
I've also changed an `if` to a `while` because other implementations
allow things like `--preserve=mode,mode` or `conv=sync,sync`. (If we
decide this is a bug rather than a feature, we should at least fix the
error message to be clear that we're rejecting the *duplication*, not
the option itself.)
I've also fixed the ^C behavior by simply adding a direct SIGINT handler
rather than trying to be clever inside the read loop (which is why we
weren't handling the SIGINT until the read returned).
I've also removed `strstarteq` and just added the '=' to each literal
when calling regular `strstart`.
Plus basic tests.
|
|
|
|
Change names_to_pid() so that we can actually match shell scripts with
long names (the code to get the shell script's name was correct, but
there was an extra test preventing us from actually comparing it to the
sought name).
In kill.c itself, remove a dead test for -l and switch to the FLAG()
macro.
Also extend the tests to explicitly cover long and short names.
|
|
These tests don't work for me as root on either my Debian desktop or my
Android devices. The original mail thread implies that they were as
close as the original comitter could get to _something_ that seemed to
work, even if the kernel doesn't seem to bother with this:
http://lists.landley.net/pipermail/toybox-landley.net/2014-November/003795.html
toybox ifconfig *is* missing support for `-pointtopoint` and
`pointopoint` (without an addess), similar for `broadcast` according to
the man page. But since we don't appear to have a way to test this (other
than looking at strace output!) I'm leaning towards YAGNI anyway...
|
|
|
|
Implement nl -v supporting negative and zero starting values.
|
|
Improve Android support (see code comments).
Remove unnecessary fixed-length limits.
Show error if module not found (plus test).
Expand help text.
Switch to FLAG macro.
Stop hard-coding module assumptions in the tests.
|
|
mksh doesn't support process substitution, so use an explicit temporary
file.
|
|
file now shows the target of a symbolic link and calls out broken
symbolic links.
file now shows the device type for block/character special files.
file now shows specific reason when it can't open.
stat now includes the device type, plus a little more space between the
number of blocks and the human-readable file type.
Adjusted tests accordingly, which actually makes more of them pass on
the host as a convenient side-effect, but I actually made these changes
because I've been finding the desktop file and stat output more convenient
in these cases.
|
|
I don't know why we fixed the other tests but not this one. Before this
patch it's failing with/without TEST_HOST. After this patch, it passes
both.
|
|
Use /dev/block/loop* more uniformly, and teach the tests which to expect.
|
|
|
|
The killall test still fails with toybox. Seems like right now killall
and pidof share name to pid logic, but playing about with the desktop
killall (which does pass this test), it seems like killall actually
behaves more like pgrep than pidof (which does seem to be this limited
on the desktop too)...
|
|
There's no /etc/passwd and /etc/group, but there are enough users and
groups that we can test with. ("bin" and "daemon" were added for LTP;
"shell" is what you get with `adb shell`.)
|
|
util-linux's blkid doesn't support reading from stdin, so move that to
being a special toyonly test rather than the default.
toybox blkid differs from util-linux in that it doesn't seem to find the
LABEL for the checked-in example f2fs file system (the offset is wrong,
but also f2fs uses LE16 strings), nor does it support the SEC_TYPE that
util-linux blkid shows for several of the test file systems.
|
|
Fix `losetup -f` to not fail with an error.
Add the missing \n for `losetup -f --show FILE`.
Use decimal for the device number, like the desktop losetup.
Switch to the FLAG macro.
Make the tests runnable as tests, and expand coverage a bit. With this
patch, the tests pass both with and without TEST_HOST on the desktop.
Note though that this patch is part of fixing some real-life losetup
issues, not part of the "test cleanup" I'm also looking at. losetup is
low down that list!
|
|
Used by build/make/tools/mktarball.sh in AOSP. (Which is why today's
switch to toybox tar got reverted.)
|
|
|
|
Press tab, have bash complete dir name with a slash, notice musl
rename() dislikes that. Replace trailing slash in the cp loop with a
null character, if the command name is mv. Add the slash back if an
error occurs.
|
|
|
|
Remove the existing link before trying to re-create, passing the test.
Add -p to the -r test as a regression guard, portage calls cp with both.
|
|
Used near the end of the AOSP build. Almost there!
(This patch also fiddles with the help text to be able to slip the new
options in without requiring so much extra space.)
|
|
(`kill -l HUP` and `kill -l 1` both said "HUP" instead of giving you
back the one you didn't provide, before my real-time signal patch.)
|
|
Gentoo packages that build multiple variants, like once for every
version of a slotted dependency, currently fail to install if their
source dir includes a relative symlink to own child. Affects lots of
Python infrastructure, for example meson and setuptools. You've already
run into this issue, since cp.test has a todo. It's from 2008 though, so
I guess I'll bump with an expanded test case. Libc is musl-1.1.22.
|
|
|
|
|
|
(which doesn't handle "VAR=blah thingy" right if thingy is a function,
the variable winds up staying set after the function returns.)
|
|
|
|
Used quite a lot, especially with `--exclude-dir=.git`.
|
|
|
|
|
|
Add test to show failure case.
|
|
|
|
Also, debian's lsattr is producing longer output lines with new fields,
possibly an ioctl switch from FS_IOC_GETFLAGS -> FS_IOC_FSGETXATTR? Anyway,
todo items here...
|
|
Iterate over MANPATH and ordered sections using a manpath() helper
equivalent of indenting logic of man x, man 1 x, and man -k each with a
strsep loop.
|
|
This is a 15 year old freebsd extension (presumably thus also available on
MacOS) that glibc adopted in 2004, uClibc adopted in 2005, and bionic
supports. The only thing that DOESN'T support it is musl, once again
because its maintainer explicitly decided not to
(https://www.openwall.com/lists/musl/2013/01/15/26), so add an #ifdef
to let musl stay uniquely broken. (It'll stop at first NUL, everything
else can match NULs).
Finally fixes "s/x/y/g on a megabyte line of x's takes forever" issue.
|
|
Found when trying to update the toybox prebuilt used for the Android
build.
Also add the corresponding test.
|
|
|
|
POSIX finally gave us a way to use echo in a portable way despite
differences of opinion about whether to default interpretation of escape
sequences to on or off: -e enables and -E disables (as already
implemented by busybox and coreutils).
http://austingroupbugs.net/view.php?id=1222
|
|
Exec -k value as regex on basename, and on the first content line
outside a tag or on a referenced see-other, whichever appears earlier.
Reuse zcat choice as a function when looping over files. Fix \-\- and
glob.h include leftover. Handle man-pages example newlines. Clarify the
todos, naming package and issue. Remaining items are more of a wishlist
than a plan. Remove `<1>2` because it doesn't let `-k .` work, please
look into that.
|
|
|