aboutsummaryrefslogtreecommitdiff
path: root/tests/xargs.test
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2019-10-24 19:41:09 -0500
committerRob Landley <rob@landley.net>2019-10-24 19:41:09 -0500
commit1f5f147a9ec048897c43e2358223430098493497 (patch)
treea8bebfb7fe4dd008d7420a9d609eb304d26c4eed /tests/xargs.test
parent69efea9cc568b3906340ddf45df66db811d4f204 (diff)
downloadtoybox-1f5f147a9ec048897c43e2358223430098493497.tar.gz
Fix the xargs argument too long problem by putting the proper accounting
back when they haven't specified -s, add tests.
Diffstat (limited to 'tests/xargs.test')
-rw-r--r--tests/xargs.test9
1 files changed, 9 insertions, 0 deletions
diff --git a/tests/xargs.test b/tests/xargs.test
index e2eec036..afed8a17 100644
--- a/tests/xargs.test
+++ b/tests/xargs.test
@@ -52,6 +52,15 @@ testing "false" "xargs false; echo \$?" "123\n" "" ""
testing "exit 255" "xargs sh -c 'exit 255' 2>&1; echo \$?" \
"xargs: sh: exited with status 255; aborting\n124\n" "" ""
+# findutils maxes out at 131066 (they do the math wrong), kernel takes 131071.
+toyonly testing "max argument size" \
+ "head -c 131071 /dev/zero | tr '\0' x | xargs | wc -c" "131072\n" "" ""
+X=$(head -c 131066 /dev/zero | tr '\0' x)
+# This goes over the kernel's 10 meg limit
+testing "big input forces split" \
+ 'for i in $(seq 1 100);do echo $X;done|{ xargs >/dev/null && echo yes;}' \
+ "yes\n" "" ""
+
# TODO: what exactly is -x supposed to do? why does coreutils output "one"?
#testing "-x" "xargs -x -s 9 || echo expected" "one\nexpected\n" "" "one\ntwo\nthree"