@@ -103,28 +103,28 @@ Bashkit implements IEEE 1003.1-2024 Shell Command Language. See
103103
104104## Spec Test Coverage
105105
106- ** Total spec test cases:** 2382 (2354 pass, 28 skip)
106+ ** Total spec test cases:** 2278 (2252 pass, 26 skip)
107107
108108| Category | Cases | In CI | Pass | Skip | Notes |
109109| ----------| -------| -------| ------| ------| -------|
110- | Bash (core) | 1934 | Yes | 1909 | 25 | ` bash_spec_tests ` in CI |
111- | AWK | 104 | Yes | 104 | 0 | loops, arrays, -v, ternary, field assign, getline, %.6g |
112- | Grep | 91 | Yes | 91 | 0 | -z, -r, -a, -b, -H, -h, -f, -P, --include, --exclude, binary detect |
110+ | Bash (core) | 1809 | Yes | 1786 | 23 | ` bash_spec_tests ` in CI |
111+ | AWK | 126 | Yes | 126 | 0 | loops, arrays, -v, ternary, field assign, getline, %.6g, delete, dev-stderr |
112+ | Grep | 95 | Yes | 95 | 0 | -z, -r, -a, -b, -H, -h, -f, -P, --include, --exclude, binary detect, rg |
113113| Sed | 75 | Yes | 75 | 0 | hold space, change, regex ranges, -E |
114- | JQ | 120 | Yes | 119 | 1 | reduce, walk, regex funcs, --arg/--argjson, combined flags, input/inputs, env |
115- | Python | 58 | Yes | 56 | 2 | embedded Python (Monty) |
116- | ** Total** | ** 2382 ** | ** Yes** | ** 2354 ** | ** 28 ** | |
114+ | JQ | 116 | Yes | 115 | 1 | reduce, walk, regex funcs, --arg/--argjson, combined flags, input/inputs, env |
115+ | Python | 57 | Yes | 55 | 2 | embedded Python (Monty) |
116+ | ** Total** | ** 2278 ** | ** Yes** | ** 2252 ** | ** 26 ** | |
117117
118118### Bash Spec Tests Breakdown
119119
120120| File | Cases | Notes |
121121| ------| -------| -------|
122- | alias.test.sh | 15 | alias expansion (15 skipped) |
123- | arith-dynamic.test.sh | 14 | dynamic arithmetic contexts (5 skipped) |
122+ | alias.test.sh | 15 | alias expansion (1 skipped) |
123+ | arith-dynamic.test.sh | 14 | dynamic arithmetic contexts |
124124| arithmetic.test.sh | 68 | includes logical, bitwise, compound assign, increment/decrement, ` let ` builtin, ` declare -i ` arithmetic |
125125| array-slicing.test.sh | 8 | array slice operations |
126126| arrays.test.sh | 27 | indices, ` ${arr[@]} ` / ` ${arr[*]} ` , negative indexing ` ${arr[-1]} ` |
127- | assoc-arrays.test.sh | 15 | associative arrays ` declare -A ` |
127+ | assoc-arrays.test.sh | 19 | associative arrays ` declare -A ` |
128128| background.test.sh | 2 | background job handling |
129129| bash-command.test.sh | 25 | bash/sh re-invocation |
130130| bash-flags.test.sh | 13 | bash ` -e ` , ` -x ` , ` -u ` , ` -f ` , ` -o option ` flags |
@@ -136,8 +136,9 @@ Bashkit implements IEEE 1003.1-2024 Shell Command Language. See
136136| command.test.sh | 9 | ` command -v ` , ` -V ` , function bypass |
137137| command-not-found.test.sh | 9 | unknown command handling |
138138| cmd-suggestions.test.sh | 4 | command suggestions on typos |
139- | command-subst.test.sh | 25 | includes backtick substitution, nested quotes in ` $() ` |
140- | conditional.test.sh | 24 | ` [[ ]] ` conditionals, ` =~ ` regex, BASH_REMATCH, glob ` == ` /` != ` |
139+ | command-subst.test.sh | 29 | includes backtick substitution, nested quotes in ` $() ` |
140+ | compgen-path.test.sh | 2 | compgen PATH completion |
141+ | conditional.test.sh | 29 | ` [[ ]] ` conditionals, ` =~ ` regex, BASH_REMATCH, glob ` == ` /` != ` |
141142| control-flow.test.sh | 58 | if/elif/else, for, while, case ` ;; ` /` ;& ` /` ;;& ` , select, trap ERR, ` [[ =~ ]] ` BASH_REMATCH, compound input redirects |
142143| comm.test.sh | 6 | comm column comparison |
143144| cuttr.test.sh | 39 | cut and tr commands, ` -z ` zero-terminated |
@@ -148,70 +149,76 @@ Bashkit implements IEEE 1003.1-2024 Shell Command Language. See
148149| du.test.sh | 4 | disk usage reporting |
149150| dirstack.test.sh | 12 | ` pushd ` , ` popd ` , ` dirs ` directory stack operations |
150151| echo.test.sh | 24 | escape sequences |
151- | empty-bodies.test.sh | 8 | empty loop/function bodies (5 skipped) |
152+ | empty-bodies.test.sh | 8 | empty loop/function bodies |
152153| env.test.sh | 3 | environment variable operations |
153- | errexit.test.sh | 8 | set -e tests |
154+ | errexit.test.sh | 11 | set -e tests |
154155| eval-bugs.test.sh | 4 | regression tests for eval/script bugs |
156+ | exec-command.test.sh | 5 | exec builtin |
155157| exit-status.test.sh | 18 | exit code propagation |
156158| expr.test.sh | 13 | ` expr ` arithmetic, string ops, pattern matching, exit codes |
157159| extglob.test.sh | 15 | ` @() ` , ` ?() ` , ` *() ` , ` +() ` , ` !() ` extended globs |
158160| file.test.sh | 8 | file type detection |
159161| fileops.test.sh | 28 | ` mktemp ` , ` -d ` , ` -p ` , template |
160- | find.test.sh | 10 | file search |
162+ | find.test.sh | 19 | file search |
161163| functions.test.sh | 26 | local dynamic scoping, nested writes, FUNCNAME call stack, ` caller ` builtin |
162164| getopts.test.sh | 9 | POSIX option parsing, combined flags, silent mode |
163165| glob-options.test.sh | 13 | dotglob, nocaseglob, failglob, nullglob, noglob, globstar |
164166| globs.test.sh | 9 | for-loop glob expansion, recursive ` ** ` |
165167| gzip.test.sh | 2 | gzip/gunzip compression |
166168| headtail.test.sh | 14 | |
167169| heredoc.test.sh | 13 | heredoc variable expansion, quoted delimiters, file redirects, ` <<- ` tab strip |
168- | heredoc-edge.test.sh | 15 | heredoc edge cases (6 skipped) |
170+ | heredoc-edge.test.sh | 15 | heredoc edge cases |
169171| herestring.test.sh | 8 | here-string ` <<< ` |
170172| hextools.test.sh | 4 | od/xxd/hexdump (3 skipped) |
171173| history.test.sh | 2 | history builtin |
172174| less.test.sh | 3 | less pager |
173175| ln.test.sh | 5 | ` ln -s ` , ` -f ` , symlink creation |
174- | nameref.test.sh | 14 | nameref variables (14 skipped) |
176+ | ls.test.sh | 4 | ls directory listing |
177+ | nameref-assoc.test.sh | 7 | nameref with associative arrays |
178+ | nameref.test.sh | 23 | nameref variables (1 skipped) |
175179| negative-tests.test.sh | 13 | error conditions |
176180| nl.test.sh | 14 | line numbering |
177181| nounset.test.sh | 7 | ` set -u ` unbound variable checks, ` ${var:-default} ` nounset-aware |
178- | parse-errors.test.sh | 18 | syntax error detection (13 skipped) |
182+ | parse-errors.test.sh | 18 | syntax error detection (4 skipped) |
179183| paste.test.sh | 4 | line merging with ` -s ` serial and ` -d ` delimiter |
180184| path.test.sh | 18 | basename, dirname, ` realpath ` canonical path resolution |
181185| pipes-redirects.test.sh | 26 | includes stderr redirects |
182186| printenv.test.sh | 2 | printenv builtin |
183187| printf.test.sh | 32 | format specifiers, array expansion, ` -v ` variable assignment, ` %q ` shell quoting |
184188| procsub.test.sh | 11 | process substitution |
185- | quote.test.sh | 35 | quoting edge cases (2 skipped) |
186- | read-builtin.test.sh | 10 | ` read ` builtin, IFS splitting, ` -r ` , ` -a ` (array), ` -n ` (nchars), here-string |
187- | script-exec.test.sh | 10 | script execution by path, $PATH search, exit codes |
189+ | quote.test.sh | 42 | quoting edge cases |
190+ | read-builtin.test.sh | 12 | ` read ` builtin, IFS splitting, ` -r ` , ` -a ` (array), ` -n ` (nchars), here-string |
191+ | script-exec.test.sh | 14 | script execution by path, $PATH search, exit codes |
188192| seq.test.sh | 12 | ` seq ` numeric sequences, ` -w ` , ` -s ` , decrement, negative |
193+ | set-allexport.test.sh | 5 | set -a / allexport |
189194| shell-grammar.test.sh | 23 | shell grammar edge cases |
190195| sleep.test.sh | 9 | sleep timing |
191- | sortuniq.test.sh | 32 | sort ` -f ` /` -n ` /` -r ` /` -u ` /` -V ` /` -t ` /` -k ` /` -s ` /` -c ` /` -h ` /` -M ` /` -m ` /` -z ` /` -o ` , uniq ` -c ` /` -d ` /` -u ` /` -i ` /` -f ` |
196+ | sortuniq.test.sh | 39 | sort ` -f ` /` -n ` /` -r ` /` -u ` /` -V ` /` -t ` /` -k ` /` -s ` /` -c ` /` -h ` /` -M ` /` -m ` /` -z ` /` -o ` , uniq ` -c ` /` -d ` /` -u ` /` -i ` /` -f ` |
192197| source.test.sh | 19 | source/., function loading, PATH search, positional params |
193198| stat.test.sh | 7 | stat file information |
194199| string-ops.test.sh | 14 | string replacement (prefix/suffix anchored), ` ${var:?} ` , case conversion |
195200| strings.test.sh | 6 | strings extraction |
196- | subshell.test.sh | 13 | subshell execution (4 skipped) |
201+ | subprocess-isolation.test.sh | 8 | subprocess variable isolation |
202+ | subshell.test.sh | 13 | subshell execution |
197203| tar.test.sh | 8 | tar archive operations |
198204| tee.test.sh | 6 | tee output splitting |
199205| temp-binding.test.sh | 10 | temporary variable bindings ` VAR=val cmd ` |
200- | test-operators.test.sh | 27 | file/string tests, ` -nt ` /` -ot ` /` -ef ` file comparisons |
206+ | test-operators.test.sh | 29 | file/string tests, ` -nt ` /` -ot ` /` -ef ` file comparisons |
207+ | test-tty.test.sh | 5 | tty detection tests |
201208| textrev.test.sh | 14 | ` tac ` reverse line order, ` rev ` reverse characters, ` yes ` repeated output |
202209| time.test.sh | 11 | Wall-clock only (user/sys always 0) |
203210| timeout.test.sh | 16 | |
204211| type.test.sh | 15 | ` type ` , ` which ` , ` hash ` builtins |
205212| unicode.test.sh | 17 | unicode handling (3 skipped) |
206- | var-op-test.test.sh | 21 | variable operations (16 skipped) |
213+ | var-op-test.test.sh | 26 | variable operations (1 skipped) |
207214| variables.test.sh | 97 | includes special vars, prefix env, PIPESTATUS, trap EXIT, ` ${var@Q} ` , ` \<newline> ` line continuation, PWD/HOME/USER/HOSTNAME/BASH_VERSION/SECONDS, ` set -x ` xtrace, ` shopt ` builtin, nullglob, ` set -o ` /` set +o ` display, ` trap -p ` |
208215| wait.test.sh | 2 | wait builtin |
209216| watch.test.sh | 2 | watch command |
210217| wc.test.sh | 20 | word count |
211- | word-split.test.sh | 39 | IFS word splitting (36 skipped) |
212- | xargs.test.sh | 7 | xargs command |
213- | blackbox-edge-cases.test.sh | 92 | edge cases for quoting, expansion, redirection, error handling |
214- | blackbox-exploration.test.sh | 206 | broad coverage exploration: builtins, pipelines, subshells, traps |
218+ | word-split.test.sh | 39 | IFS word splitting (10 skipped) |
219+ | xargs.test.sh | 7 | xargs command (1 skipped) |
220+ | blackbox-edge-cases.test.sh | 89 | edge cases for quoting, expansion, redirection, error handling |
221+ | blackbox-exploration.test.sh | 199 | broad coverage exploration: builtins, pipelines, subshells, traps |
215222
216223## Shell Features
217224
0 commit comments