status | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | |
pass | 21 | 17 | 20 | 20 | 19 | 19 | 6 | 8 | 17 | 26 | |
ok | 1 | 2 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | |
N-I | 1 | 2 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | |
BUG | 5 | 7 | 0 | 7 | 7 | 0 | 0 | 0 | 0 | 0 | |
FAIL | 0 | 0 | 8 | 0 | 0 | 9 | 22 | 19 | 11 | 2 | |
TIME | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | |
total | 28 | 28 | 28 | 28 | 28 | 28 | 28 | 28 | 28 | 28 | |
case | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | description |
0 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | exec builtin |
1 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | exec builtin with redirects |
2 | pass | pass | pass | pass | pass | pass | FAIL | pass | FAIL | pass | exec builtin with here doc |
details | details | ||||||||||
3 | pass | BUG | pass | pass | pass | pass | pass | FAIL | pass | pass | exec builtin accepts -- |
details | details | ||||||||||
4 | pass | BUG | pass | pass | BUG | FAIL | pass | FAIL | pass | pass | exec -- 2>&1 |
details | details | details | details | ||||||||
5 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Exit out of function |
6 | ok | ok | FAIL | BUG | pass | pass | FAIL | pass | FAIL | pass | Exit builtin with invalid arg |
details | details | details | details | details | details | ||||||
7 | BUG | BUG | FAIL | BUG | ok | FAIL | FAIL | FAIL | FAIL | pass | Exit builtin with too many args |
details | details | details | details | details | details | details | details | details | |||
8 | pass | N-I | FAIL | BUG | pass | pass | FAIL | pass | pass | pass | time with brace group argument |
details | details | details | details | ||||||||
9 | pass | pass | pass | pass | pass | pass | FAIL | FAIL | pass | pass | get umask |
details | details | ||||||||||
10 | pass | pass | pass | pass | pass | pass | FAIL | FAIL | pass | pass | set umask in octal |
details | details | ||||||||||
11 | pass | pass | pass | pass | pass | pass | FAIL | FAIL | FAIL | FAIL | set umask symbolically |
details | details | details | details | ||||||||
12 | pass | pass | pass | pass | pass | pass | FAIL | FAIL | pass | pass | ulimit with no flags is like -f |
details | details | ||||||||||
13 | BUG | pass | pass | BUG | pass | pass | pass | pass | pass | pass | ulimit too many args |
details | details | ||||||||||
14 | pass | pass | pass | pass | pass | pass | FAIL | FAIL | pass | pass | ulimit negative flag |
details | details | ||||||||||
15 | pass | pass | FAIL | pass | BUG | FAIL | FAIL | FAIL | pass | pass | ulimit negative arg |
details | details | details | details | details | |||||||
16 | BUG | pass | FAIL | pass | pass | pass | FAIL | pass | FAIL | pass | ulimit -a doesn't take arg |
details | details | details | details | ||||||||
17 | BUG | BUG | FAIL | BUG | BUG | FAIL | FAIL | FAIL | FAIL | pass | ulimit doesn't accept multiple flags - reduce confusion between shells |
details | details | details | details | details | details | details | details | details | |||
18 | N-I | N-I | FAIL | N-I | N-I | FAIL | FAIL | FAIL | FAIL | pass | YSH readability: ulimit --all the same as ulimit -a |
details | details | details | details | details | details | details | details | details | |||
19 | pass | pass | pass | pass | pass | pass | FAIL | FAIL | pass | pass | ulimit accepts 'unlimited' |
details | details | ||||||||||
20 | pass | pass | pass | pass | BUG | FAIL | FAIL | FAIL | pass | pass | ulimit of 2**32, 2**31 (int overflow) |
details | details | details | details | ||||||||
21 | pass | pass | pass | pass | BUG | FAIL | FAIL | FAIL | pass | pass | ulimit that is 64 bits |
details | details | details | details | ||||||||
22 | pass | BUG | FAIL | BUG | BUG | FAIL | FAIL | FAIL | FAIL | pass | arg that would overflow 64 bits is detected |
details | details | details | details | details | details | details | details | ||||
23 | BUG | pass | pass | pass | pass | pass | FAIL | TIME | FAIL | pass | ulimit -f 1 prevents files larger 512 bytes |
details | details | details | details | ||||||||
24 | pass | pass | pass | pass | pass | pass | FAIL | FAIL | pass | pass | write big file with ulimit |
details | details | ||||||||||
25 | pass | BUG | pass | BUG | pass | pass | FAIL | FAIL | FAIL | pass | ulimit -S for soft limit (default), -H for hard limit |
details | details | details | details | details | |||||||
26 | pass | BUG | pass | pass | BUG | FAIL | FAIL | FAIL | FAIL | pass | Changing resource limit is denied |
details | details | details | details | details | details | ||||||
27 | pass | ok | pass | pass | pass | pass | FAIL | FAIL | pass | FAIL | ulimit -n limits file descriptors |
details | details | details | details |
173 passed, 4 OK, 5 not implemented, 26 BUG, 71 failed, 1 timeouts, 0 cases skipped 2 failed under osh
toysh | 2 exec builtin with here doc [toysh stdout] Expected 'x=one\ny=two\nDONE\n', got 'x=\ny=\nDONE\n' stdout: x= y= DONEstderr: sh: read: No such file or directory sh: read: No such file or directory |
brush | 2 exec builtin with here doc [brush stdout] Expected 'x=one\ny=two\nDONE\n', got 'x=\ny=\nDONE\n' stdout: x= y= DONEstderr: |
dash | 3 exec builtin accepts -- stdout: stderr: dash: 1: exec: --: not found |
sush | 3 exec builtin accepts -- [sush stdout] Expected 'hi\n', got '' [sush status] Expected 0, got 127 stdout: stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: --: command not found |
dash | 4 exec -- 2>&1 stdout: stderr: dash: 1: exec: --: not found |
mksh | 4 exec -- 2>&1 stdout: stderr: |
ksh | 4 exec -- 2>&1 [ksh stdout] Expected 'stdout\n', got '' [ksh status] Expected 0, got -11 stdout: stderr: |
sush | 4 exec -- 2>&1 [sush stdout] Expected 'stdout\n', got '' [sush status] Expected 0, got 127 stdout: stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: --: command not found |
bash | 6 Exit builtin with invalid arg stdout: stderr: bash: line 1: exit: invalid: numeric argument required |
dash | 6 Exit builtin with invalid arg stdout: stderr: dash: 1: exit: Illegal number: invalid |
ash | 6 Exit builtin with invalid arg [ash status] Expected 1, got 2 stdout: stderr: ash: exit: line 1: Illegal number: invalid |
zsh | 6 Exit builtin with invalid arg stdout: stderr: |
toysh | 6 Exit builtin with invalid arg [toysh status] Expected 1, got 0 stdout: stderr: |
brush | 6 Exit builtin with invalid arg [brush status] Expected 1, got 2 stdout: stderr: error: invalid value 'invalid' for '[CODE]': invalid digit found in string For more information, try '--help'. |
bash | 7 Exit builtin with too many args stdout: status=1stderr: bash: line 1: exit: too many arguments |
dash | 7 Exit builtin with too many args stdout: stderr: |
ash | 7 Exit builtin with too many args [ash status] Expected 2, got 7 stdout: stderr: |
zsh | 7 Exit builtin with too many args stdout: status=1stderr: exit: too many arguments |
mksh | 7 Exit builtin with too many args stdout: stderr: mksh: <stdin>[1]: exit: too many arguments |
ksh | 7 Exit builtin with too many args [ksh status] Expected 2, got 1 stdout: stderr: E: ksh: <stdin>[1]: exit: too many arguments |
toysh | 7 Exit builtin with too many args [toysh status] Expected 2, got 7 stdout: stderr: |
sush | 7 Exit builtin with too many args [sush status] Expected 2, got 7 stdout: stderr: |
brush | 7 Exit builtin with too many args [brush stdout] Expected u'', got 'status=2\n' [brush status] Expected 2, got 0 stdout: status=2stderr: error: unexpected argument '8' found Usage: exit [CODE] For more information, try '--help'. |
dash | 8 time with brace group argument stdout: stderr: time: cannot run {: No such file or directory Command exited with non-zero status 127 0.00user 0.00system 0:00.00elapsed 93%CPU (0avgtext+0avgdata 1304maxresident)k 0inputs+0outputs (0major+103minor)pagefaults 0swaps dash: 7: Syntax error: "}" unexpected |
ash | 8 time with brace group argument [ash stdout] Expected 'user\nresult=0\nnon-zero\n', got '' [ash status] Expected 0, got 2 stdout: stderr: time: cannot run {: No such file or directory Command exited with non-zero status 127 0.00user 0.00system 0:00.00elapsed 94%CPU (0avgtext+0avgdata 1236maxresident)k 0inputs+0outputs (0major+104minor)pagefaults 0swaps ash: syntax error: unexpected "}" |
zsh | 8 time with brace group argument stdout: result=1stderr: |
toysh | 8 time with brace group argument [toysh stdout] Expected 'user\nresult=0\nnon-zero\n', got '' [toysh status] Expected 0, got 2 stdout: stderr: time: exec {: No such file or directory real 0.000 user 0.480 sys 0.000 main: line 7: sh: syntax error: } |
toysh | 9 get umask [toysh status] Expected 0, got 1 stdout: stderr: sh: umask: No such file or directory |
sush | 9 get umask [sush status] Expected 0, got 1 stdout: stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: umask: command not found |
toysh | 10 set umask in octal [toysh stdout] Expected '664\n644\n', got '644\n644\n' [toysh stderr] Expected u'', got 'sh: umask: No such file or directory\nsh: umask: No such file or directory\n' stdout: 644 644stderr: sh: umask: No such file or directory sh: umask: No such file or directory |
sush | 10 set umask in octal [sush stdout] Expected '664\n644\n', got '644\n644\n' [sush stderr] Expected u'', got '/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 2: umask: command not found\n/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: umask: command not found\n' stdout: 644 644stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 2: umask: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: umask: command not found |
toysh | 11 set umask symbolically [toysh stdout] Expected '664\n644\n', got '644\n644\n' [toysh stderr] Expected u'', got 'sh: umask: No such file or directory\nsh: umask: No such file or directory\n' stdout: 644 644stderr: sh: umask: No such file or directory sh: umask: No such file or directory |
sush | 11 set umask symbolically [sush stdout] Expected '664\n644\n', got '644\n644\n' [sush stderr] Expected u'', got '/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: umask: command not found\n/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: umask: command not found\n' stdout: 644 644stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: umask: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: umask: command not found |
brush | 11 set umask symbolically [brush stdout] Expected '664\n644\n', got '664\n664\n' [brush stderr] Expected u'', got '\x1b[33m WARN\x1b[0m not yet implemented: umask setting mode from symbolic value\n' stdout: 664 664stderr: [33m WARN[0m not yet implemented: umask setting mode from symbolic value |
osh | 11 set umask symbolically [osh stdout] Expected '664\n644\n', got '664\n664\n' [osh stderr] Expected u'', got "oils warning: umask with symbolic input isn't implemented\n" stdout: 664 664stderr: oils warning: umask with symbolic input isn't implemented |
toysh | 12 ulimit with no flags is like -f [toysh stdout] Expected 'status=0\nstatus=0\ndiff=0\n', got 'status=127\nstatus=127\ndiff=0\n' stdout: status=127 status=127 diff=0stderr: sh: ulimit: No such file or directory sh: ulimit: No such file or directory |
sush | 12 ulimit with no flags is like -f [sush stdout] Expected 'status=0\nstatus=0\ndiff=0\n', got 'status=127\nstatus=127\ndiff=0\n' stdout: status=127 status=127 diff=0stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: ulimit: command not found |
bash | 13 ulimit too many args stdout: failstderr: |
zsh | 13 ulimit too many args stdout: failstderr: |
toysh | 14 ulimit negative flag [toysh stdout] Expected 'unlimited\npass\n', got 'pass\n' stdout: passstderr: sh: ulimit: No such file or directory sh: ulimit: No such file or directory |
sush | 14 ulimit negative flag [sush stdout] Expected 'unlimited\npass\n', got 'pass\n' stdout: passstderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: ulimit: command not found |
ash | 15 ulimit negative arg [ash stdout] Expected 'unlimited\npass\n', got 'unlimited\nunlimited\nfail\n' stdout: unlimited unlimited failstderr: |
mksh | 15 ulimit negative arg stdout: unlimited failstderr: |
ksh | 15 ulimit negative arg [ksh stdout] Expected 'unlimited\npass\n', got 'unlimited\nfail\n' stdout: unlimited failstderr: |
toysh | 15 ulimit negative arg [toysh stdout] Expected 'unlimited\npass\n', got 'pass\n' stdout: passstderr: sh: ulimit: No such file or directory sh: ulimit: No such file or directory |
sush | 15 ulimit negative arg [sush stdout] Expected 'unlimited\npass\n', got 'pass\n' stdout: passstderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: ulimit: command not found |
bash | 16 ulimit -a doesn't take arg stdout: stderr: |
ash | 16 ulimit -a doesn't take arg [ash stdout] Expected 'failure that was expected\n', got 'core file size (blocks) (-c) 0\ndata seg size (kb) (-d) unlimited\nscheduling priority (-e) 0\nfile size (blocks) (-f) unlimited\npending signals (-i) 62293\nmax locked memory (kb) (-l) 2001828\nmax memory size (kb) (-m) unlimited\nopen files (-n) 1024\nPOSIX message queues (bytes) (-q) 819200\nreal-time priority (-r) 0\nstack size (kb) (-s) 8192\ncpu time (seconds) (-t) unlimited\nmax user processes (-u) 62293\nvirtual memory (kb) (-v) unlimited\nfile locks (-x) unlimited\n' stdout: core file size (blocks) (-c) 0 data seg size (kb) (-d) unlimited scheduling priority (-e) 0 file size (blocks) (-f) unlimited pending signals (-i) 62293 max locked memory (kb) (-l) 2001828 max memory size (kb) (-m) unlimited open files (-n) 1024 POSIX message queues (bytes) (-q) 819200 real-time priority (-r) 0 stack size (kb) (-s) 8192 cpu time (seconds) (-t) unlimited max user processes (-u) 62293 virtual memory (kb) (-v) unlimited file locks (-x) unlimitedstderr: |
toysh | 16 ulimit -a doesn't take arg [toysh stdout] Expected 'failure that was expected\n', got '' [toysh status] Expected 0, got -6 stdout: stderr: munmap_chunk(): invalid pointer |
brush | 16 ulimit -a doesn't take arg [brush stdout] Expected 'failure that was expected\n', got 'core file size (block, -c) 0\ndata seg size (kbytes, -d) unlimited\nfile size (block, -f) unlimited\npending signals (-i) 62293\nmax locked memory (kbytes, -l) 2001828\nmax memory size (kbytes, -m) unlimited\nfile locks (-x) unlimited\nopen files (-n) 1024\npipe size (512 bytes, -p) 5\nscheduling priority (-e) 0\nPOSIX message queues (bytes, -q) 819200\nreal-time priority (-r) 0\nreal-time non-blocking time(microseconds, -R) unlimited\nstack size (kbytes, -s) 8192\ncpu time (seconds, -t) unlimited\nmax user processes (-u) 62293\nvirtual memory (kbytes, -v) unlimited\n' stdout: core file size (block, -c) 0 data seg size (kbytes, -d) unlimited file size (block, -f) unlimited pending signals (-i) 62293 max locked memory (kbytes, -l) 2001828 max memory size (kbytes, -m) unlimited file locks (-x) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 5 scheduling priority (-e) 0 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 real-time non-blocking time(microseconds, -R) unlimited stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 62293 virtual memory (kbytes, -v) unlimitedstderr: |
bash | 17 ulimit doesn't accept multiple flags - reduce confusion between shells stdout: status=0 status=0 status=0stderr: |
dash | 17 ulimit doesn't accept multiple flags - reduce confusion between shells stdout: status=0 status=0 status=0stderr: |
ash | 17 ulimit doesn't accept multiple flags - reduce confusion between shells [ash stdout] Expected 'status=2\nstatus=2\nstatus=2\n', got 'status=0\nstatus=0\nstatus=0\n' stdout: status=0 status=0 status=0stderr: |
zsh | 17 ulimit doesn't accept multiple flags - reduce confusion between shells stdout: status=1 status=0 status=0stderr: ulimit: no limits allowed with -a |
mksh | 17 ulimit doesn't accept multiple flags - reduce confusion between shells stdout: status=0 status=0 status=0stderr: |
ksh | 17 ulimit doesn't accept multiple flags - reduce confusion between shells [ksh stdout] Expected 'status=2\nstatus=2\nstatus=2\n', got 'status=0\nstatus=0\nstatus=0\n' stdout: status=0 status=0 status=0stderr: |
toysh | 17 ulimit doesn't accept multiple flags - reduce confusion between shells [toysh stdout] Expected 'status=2\nstatus=2\nstatus=2\n', got 'status=127\nstatus=127\nstatus=127\n' stdout: status=127 status=127 status=127stderr: sh: ulimit: No such file or directory sh: ulimit: No such file or directory sh: ulimit: No such file or directory |
sush | 17 ulimit doesn't accept multiple flags - reduce confusion between shells [sush stdout] Expected 'status=2\nstatus=2\nstatus=2\n', got 'status=127\nstatus=127\nstatus=127\n' stdout: status=127 status=127 status=127stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 7: ulimit: command not found |
brush | 17 ulimit doesn't accept multiple flags - reduce confusion between shells [brush stdout] Expected 'status=2\nstatus=2\nstatus=2\n', got 'status=0\nstatus=0\nstatus=0\n' stdout: status=0 status=0 status=0stderr: |
bash | 18 YSH readability: ulimit --all the same as ulimit -a stdout: stderr: |
dash | 18 YSH readability: ulimit --all the same as ulimit -a stdout: stderr: |
ash | 18 YSH readability: ulimit --all the same as ulimit -a [ash stdout] Expected ' 8 short.txt\n 8 long.txt\n 16 total\nstatus=0\n' Got ' 15 short.txt\n 0 long.txt\n 15 total\n--- short.txt\t2025-06-26 23:04:04.979846173 -0400\n+++ long.txt\t2025-06-26 23:04:04.979846173 -0400\n@@ -1,15 +0,0 @@\n-core file size (blocks) (-c) 0\n-data seg size (kb) (-d) unlimited\n-scheduling priority (-e) 0\n-file size (blocks) (-f) unlimited\n-pending signals (-i) 62293\n-max locked memory (kb) (-l) 2001828\n-max memory size (kb) (-m) unlimited\n-open files (-n) 1024\n-POSIX message queues (bytes) (-q) 819200\n-real-time priority (-r) 0\n-stack size (kb) (-s) 8192\n-cpu time (seconds) (-t) unlimited\n-max user processes (-u) 62293\n-virtual memory (kb) (-v) unlimited\n-file locks (-x) unlimited\nstatus=1\n' stdout: 15 short.txt 0 long.txt 15 total --- short.txt 2025-06-26 23:04:04.979846173 -0400 +++ long.txt 2025-06-26 23:04:04.979846173 -0400 @@ -1,15 +0,0 @@ -core file size (blocks) (-c) 0 -data seg size (kb) (-d) unlimited -scheduling priority (-e) 0 -file size (blocks) (-f) unlimited -pending signals (-i) 62293 -max locked memory (kb) (-l) 2001828 -max memory size (kb) (-m) unlimited -open files (-n) 1024 -POSIX message queues (bytes) (-q) 819200 -real-time priority (-r) 0 -stack size (kb) (-s) 8192 -cpu time (seconds) (-t) unlimited -max user processes (-u) 62293 -virtual memory (kb) (-v) unlimited -file locks (-x) unlimited status=1stderr: ulimit: invalid option -- '-' |
zsh | 18 YSH readability: ulimit --all the same as ulimit -a stdout: stderr: |
mksh | 18 YSH readability: ulimit --all the same as ulimit -a stdout: stderr: |
ksh | 18 YSH readability: ulimit --all the same as ulimit -a [ksh stdout] Expected ' 8 short.txt\n 8 long.txt\n 16 total\nstatus=0\n' Got ' 15 short.txt\n 0 long.txt\n 15 total\n--- short.txt\t2025-06-26 23:04:04.995846338 -0400\n+++ long.txt\t2025-06-26 23:04:04.995846338 -0400\n@@ -1,15 +0,0 @@\n--t: time(cpu-seconds) unlimited\n--f: file(blocks) unlimited\n--c: coredump(blocks) 0\n--d: data(KiB) unlimited\n--s: stack(KiB) 8192\n--l: lockedmem(KiB) 2001828\n--n: nofiles(descriptors) 1024\n--p: processes 62293\n--i: sigpending 62293\n--q: msgqueue(bytes) 819200\n--e: maxnice 0\n--R: rttime(ms) unlimited\n--r: maxrtprio 0\n--v: address-space(KiB) unlimited\n--x: filelocks unlimited\nstatus=1\n' stdout: 15 short.txt 0 long.txt 15 total --- short.txt 2025-06-26 23:04:04.995846338 -0400 +++ long.txt 2025-06-26 23:04:04.995846338 -0400 @@ -1,15 +0,0 @@ --t: time(cpu-seconds) unlimited --f: file(blocks) unlimited --c: coredump(blocks) 0 --d: data(KiB) unlimited --s: stack(KiB) 8192 --l: lockedmem(KiB) 2001828 --n: nofiles(descriptors) 1024 --p: processes 62293 --i: sigpending 62293 --q: msgqueue(bytes) 819200 --e: maxnice 0 --R: rttime(ms) unlimited --r: maxrtprio 0 --v: address-space(KiB) unlimited --x: filelocks unlimited status=1stderr: E: ksh: <stdin>[4]: ulimit: --: unknown option E: ksh: <stdin>[4]: ulimit: usage: ulimit [-acdefHilnpqRrSstvx] [value] |
toysh | 18 YSH readability: ulimit --all the same as ulimit -a [toysh stdout] Expected ' 8 short.txt\n 8 long.txt\n 16 total\nstatus=0\n' Got '' [toysh status] Expected 0, got -6 stdout: stderr: munmap_chunk(): invalid pointer |
sush | 18 YSH readability: ulimit --all the same as ulimit -a [sush stdout] Expected ' 8 short.txt\n 8 long.txt\n 16 total\nstatus=0\n' Got '0 short.txt\n0 long.txt\n0 total\nstatus=0\n' stdout: 0 short.txt 0 long.txt 0 total status=0stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: ulimit: command not found |
brush | 18 YSH readability: ulimit --all the same as ulimit -a [brush stdout] Expected ' 8 short.txt\n 8 long.txt\n 16 total\nstatus=0\n' Got ' 17 short.txt\n 0 long.txt\n 17 total\n--- short.txt\t2025-06-26 23:04:05.047846873 -0400\n+++ long.txt\t2025-06-26 23:04:05.047846873 -0400\n@@ -1,17 +0,0 @@\n-core file size (block, -c) 0\n-data seg size (kbytes, -d) unlimited\n-file size (block, -f) unlimited\n-pending signals (-i) 62293\n-max locked memory (kbytes, -l) 2001828\n-max memory size (kbytes, -m) unlimited\n-file locks (-x) unlimited\n-open files (-n) 1024\n-pipe size (512 bytes, -p) 5\n-scheduling priority (-e) 0\n-POSIX message queues (bytes, -q) 819200\n-real-time priority (-r) 0\n-real-time non-blocking time(microseconds, -R) unlimited\n-stack size (kbytes, -s) 8192\n-cpu time (seconds, -t) unlimited\n-max user processes (-u) 62293\n-virtual memory (kbytes, -v) unlimited\nstatus=1\n' stdout: 17 short.txt 0 long.txt 17 total --- short.txt 2025-06-26 23:04:05.047846873 -0400 +++ long.txt 2025-06-26 23:04:05.047846873 -0400 @@ -1,17 +0,0 @@ -core file size (block, -c) 0 -data seg size (kbytes, -d) unlimited -file size (block, -f) unlimited -pending signals (-i) 62293 -max locked memory (kbytes, -l) 2001828 -max memory size (kbytes, -m) unlimited -file locks (-x) unlimited -open files (-n) 1024 -pipe size (512 bytes, -p) 5 -scheduling priority (-e) 0 -POSIX message queues (bytes, -q) 819200 -real-time priority (-r) 0 -real-time non-blocking time(microseconds, -R) unlimited -stack size (kbytes, -s) 8192 -cpu time (seconds, -t) unlimited -max user processes (-u) 62293 -virtual memory (kbytes, -v) unlimited status=1stderr: error: unexpected argument '--all' found tip: to pass '--all' as a value, use '-- --all' Usage: ulimit [OPTIONS] [LIMIT] For more information, try '--help'. |
toysh | 19 ulimit accepts 'unlimited' [toysh stdout] Expected ' arg zz\nunlimited\nstatus=0\nFAILED\n\n arg unlimited\nunlimited\nstatus=0\n\n' Got ' arg zz\nstatus=127\nFAILED\n\n arg unlimited\nstatus=127\nFAILED\n\n' stdout: arg zz status=127 FAILED arg unlimited status=127 FAILEDstderr: sh: ulimit: No such file or directory sh: ulimit: No such file or directory sh: ulimit: No such file or directory sh: ulimit: No such file or directory |
sush | 19 ulimit accepts 'unlimited' [sush stdout] Expected ' arg zz\nunlimited\nstatus=0\nFAILED\n\n arg unlimited\nunlimited\nstatus=0\n\n' Got ' arg zz\nstatus=127\nFAILED\n\n arg unlimited\nstatus=127\nFAILED\n\n' stdout: arg zz status=127 FAILED arg unlimited status=127 FAILEDstderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 5: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 5: ulimit: command not found |
mksh | 20 ulimit of 2**32, 2**31 (int overflow) stdout: one unlimited two 1 three 1stderr: mksh: <stdin>[9]: ulimit: -2: unknown option mksh: <stdin>[9]: ulimit: usage: ulimit [-acdefHilnpqrSstv] [value] |
ksh | 20 ulimit of 2**32, 2**31 (int overflow) [ksh stdout] Expected 'one unlimited\ntwo 4294967296\nthree 2147483648\n' Got 'one unlimited\ntwo 1\nthree 1\n' stdout: one unlimited two 1 three 1stderr: E: ksh: <stdin>[9]: ulimit: -2: unknown option E: ksh: <stdin>[9]: ulimit: usage: ulimit [-acdefHilnpqRrSstvx] [value] |
toysh | 20 ulimit of 2**32, 2**31 (int overflow) [toysh stdout] Expected 'one unlimited\ntwo 4294967296\nthree 2147483648\n' Got 'one two three ' [toysh status] Expected 0, got 127 stdout: one two threestderr: sh: ulimit: No such file or directory sh: ulimit: No such file or directory sh: ulimit: No such file or directory sh: ulimit: No such file or directory sh: ulimit: No such file or directory |
sush | 20 ulimit of 2**32, 2**31 (int overflow) [sush stdout] Expected 'one unlimited\ntwo 4294967296\nthree 2147483648\n' Got 'one two three ' [sush status] Expected 0, got 127 stdout: one two threestderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 6: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 9: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 11: ulimit: command not found |
mksh | 21 ulimit that is 64 bits stdout: stderr: |
ksh | 21 ulimit that is 64 bits [ksh stdout] Expected 'before unlimited\nafter 9007199254740992\n' Got 'before unlimited\nafter 2097152\n' stdout: before unlimited after 2097152stderr: |
toysh | 21 ulimit that is 64 bits [toysh stdout] Expected 'before unlimited\nafter 9007199254740992\n' Got '' [toysh status] Expected 0, got -6 stdout: stderr: munmap_chunk(): invalid pointer |
sush | 21 ulimit that is 64 bits [sush stdout] Expected 'before unlimited\nafter 9007199254740992\n' Got 'before after ' [sush status] Expected 0, got 127 stdout: before afterstderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 9: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 11: ulimit: command not found |
dash | 22 arg that would overflow 64 bits is detected stdout: before unlimited after 1stderr: |
ash | 22 arg that would overflow 64 bits is detected [ash stdout] Expected 'before unlimited\nafter unlimited\n', got 'before unlimited\nafter 1\n' stdout: before unlimited after 1stderr: |
zsh | 22 arg that would overflow 64 bits is detected stdout: before unlimited after 1stderr: |
mksh | 22 arg that would overflow 64 bits is detected stdout: stderr: |
ksh | 22 arg that would overflow 64 bits is detected [ksh stdout] Expected 'before unlimited\nafter unlimited\n', got 'before unlimited\nafter 1073741825\n' stdout: before unlimited after 1073741825stderr: |
toysh | 22 arg that would overflow 64 bits is detected [toysh stdout] Expected 'before unlimited\nafter unlimited\n', got '' [toysh status] Expected 0, got -6 stdout: stderr: munmap_chunk(): invalid pointer |
sush | 22 arg that would overflow 64 bits is detected [sush stdout] Expected 'before unlimited\nafter unlimited\n', got 'before after ' [sush status] Expected 0, got 127 stdout: before afterstderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 9: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 10: ulimit: command not found |
brush | 22 arg that would overflow 64 bits is detected [brush stdout] Expected 'before unlimited\nafter unlimited\n', got 'before unlimited\nafter 1\n' stdout: before unlimited after 1stderr: |
bash | 23 ulimit -f 1 prevents files larger 512 bytes stdout: 512 status=0 513 status=0 512 ok.txt 513 too-big.txt 1025 totalstderr: |
toysh | 23 ulimit -f 1 prevents files larger 512 bytes [toysh stdout] Expected '512 status=0\n513 status=0\n\n 512 ok.txt\n 512 too-big.txt\n1024 total\n\nERROR: echo failed with status 1\n' Got '512 status=0\n513 status=0\n\n 512 ok.txt\n 513 too-big.txt\n1025 total\n\n' stdout: 512 status=0 513 status=0 512 ok.txt 513 too-big.txt 1025 totalstderr: sh: ulimit: No such file or directory |
brush | 23 ulimit -f 1 prevents files larger 512 bytes [brush stdout] Expected '512 status=0\n513 status=0\n\n 512 ok.txt\n 512 too-big.txt\n1024 total\n\nERROR: echo failed with status 1\n' Got '512 status=0\n513 status=0\n\n 512 ok.txt\n 512 too-big.txt\n1024 total\n\n' stdout: 512 status=0 513 status=0 512 ok.txt 512 too-big.txt 1024 totalstderr: [31mERROR[0m i/o error: File too large (os error 27) |
toysh | 24 write big file with ulimit [toysh stdout] Expected 'inner=1\nouter=0\n', got 'inner=0\nouter=0\n' stdout: inner=0 outer=0stderr: sh: ulimit: No such file or directory |
sush | 24 write big file with ulimit [sush stdout] Expected 'inner=1\nouter=0\n', got 'inner=0\nouter=0\n' stdout: inner=0 outer=0stderr: big.sh: line 1: ulimit: command not found |
dash | 25 ulimit -S for soft limit (default), -H for hard limit stdout: stderr: |
zsh | 25 ulimit -S for soft limit (default), -H for hard limit stdout: stderr: |
toysh | 25 ulimit -S for soft limit (default), -H for hard limit [toysh stdout] Expected 'init\n unlimited\n unlimited\n\n-S\n 123456\n unlimited\n\n-H\n 123456\n 123457\n\nno flag\n 123455\n 123455\n\nGET\n 123454\n 123454\n 123455\n' Got '' [toysh status] Expected 0, got -6 stdout: stderr: munmap_chunk(): invalid pointer |
sush | 25 ulimit -S for soft limit (default), -H for hard limit [sush stdout] Expected 'init\n unlimited\n unlimited\n\n-S\n 123456\n unlimited\n\n-H\n 123456\n 123457\n\nno flag\n 123455\n 123455\n\nGET\n 123454\n 123454\n 123455\n' Got 'init\n \n-S\n \n-H\n \nno flag\n \nGET\n ' [sush status] Expected 0, got 127 stdout: init -S -H no flag GETstderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 7: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 8: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 14: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 7: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 8: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 17: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 7: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 8: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 20: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 7: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 8: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 25: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 26: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 27: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 28: ulimit: command not found |
brush | 25 ulimit -S for soft limit (default), -H for hard limit [brush stdout] Expected 'init\n unlimited\n unlimited\n\n-S\n 123456\n unlimited\n\n-H\n 123456\n 123457\n\nno flag\n 123455\n 123455\n\nGET\n 123454\n 123454\n 123455\n' Got 'init\n unlimited\n unlimited\n\n-S\n 123456\n unlimited\n\n-H\n 123456\n 123457\n\nno flag\n 123455\n 123457\n\nGET\n 123454\n 123454\n 123457\n' stdout: init unlimited unlimited -S 123456 unlimited -H 123456 123457 no flag 123455 123457 GET 123454 123454 123457stderr: |
dash | 26 Changing resource limit is denied stdout: stderr: |
mksh | 26 Changing resource limit is denied stdout: stderr: |
ksh | 26 Changing resource limit is denied [ksh stdout] Expected 'both=0\nsoft=0\nsoft=0\nsoft OK\nhard OK\n', got 'both=1\nsoft=0\nsoft=0\nsoft fail\nhard fail\n' stdout: both=1 soft=0 soft=0 soft fail hard failstderr: E: ksh: <stdin>[6]: ulimit: bad time(cpu-seconds) limit: Invalid argument |
toysh | 26 Changing resource limit is denied [toysh stdout] Expected 'both=0\nsoft=0\nsoft=0\nsoft OK\nhard OK\n', got '' [toysh status] Expected 0, got -6 stdout: stderr: munmap_chunk(): invalid pointer |
sush | 26 Changing resource limit is denied [sush stdout] Expected 'both=0\nsoft=0\nsoft=0\nsoft OK\nhard OK\n', got 'both=127\nsoft=127\nsoft=127\nsoft OK\nhard OK\n' stdout: both=127 soft=127 soft=127 soft OK hard OKstderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 6: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 9: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 12: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 15: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 22: ulimit: command not found |
brush | 26 Changing resource limit is denied [brush stdout] Expected 'both=0\nsoft=0\nsoft=0\nsoft OK\nhard OK\n', got 'both=1\nsoft=0\nsoft=0\nsoft fail\nhard fail\n' stdout: both=1 soft=0 soft=0 soft fail hard failstderr: [31mERROR[0m i/o error: Invalid argument (os error 22) |
dash | 27 ulimit -n limits file descriptors stdout: status=0 status=2stderr: dash: 1: cannot create out: Too many open files |
toysh | 27 ulimit -n limits file descriptors [toysh stdout] Expected 'status=0\nstatus=1\n', got 'status=0\nstatus=0\n' stdout: status=0 status=0stderr: sh: ulimit: No such file or directory sh: ulimit: No such file or directory |
sush | 27 ulimit -n limits file descriptors [sush stdout] Expected 'status=0\nstatus=1\n', got 'status=0\nstatus=0\n' stdout: status=0 status=0stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: ulimit: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: ulimit: command not found |
osh | 27 ulimit -n limits file descriptors [osh stdout] Expected 'status=0\nstatus=1\n', got 'status=1\nstatus=1\n' stdout: status=1 status=1stderr: [ -c flag ]:1: I/O error applying redirect: Invalid argument ulimit -n 0; echo hi >out ^ [ -c flag ]:1: Can't open 'out': Too many open files [ -c flag ]:1: I/O error applying redirect: Too many open files ==3355127==Can't open /proc/3355080/task for reading. ==3355080==LeakSanitizer has encountered a fatal error. ==3355080==HINT: For debugging, try setting environment variable LSAN_OPTIONS=verbosity=1:log_threads=1 ==3355080==HINT: LeakSanitizer does not work under ptrace (strace, gdb, etc) |