From b78eba08d320a58c4cd793cf4811444e351ffa17 Mon Sep 17 00:00:00 2001 From: Agando Date: Tue, 27 Oct 2026 17:10:40 +0100 Subject: fix(newos4): `if test …` was always false and `for` items never globbed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Found by running the shipped runner the way a user would, not by re-reading it. - _evalTest() stripped [ ] but not the `test` keyword, so `if test -f /work/alpha.txt` evaluated the word "test" as an operator, returned false, and every such branch took the else arm — measured live: "alpha missing" for a file that exists. Both spellings work now (`test -f x`, `[ -f x ]`), plus `-d`, `-e`, `-z`, `-n`, `!` and the = / != comparisons. - `for f in /work/*.txt` ran ONCE with $f set to the literal pattern, because only command arguments went through _expandGlobs. Loop items are expanded per iteration now, so the body runs once per matched file with the real path. - _expandGlobs() falls back to readDir() when a fs has no ls(), so the helper works against either shape instead of silently returning the literal pattern. Verification, live on v4.6.119: - for+glob: "--- /work/alpha.txt / 3 /work/alpha.txt / --- /work/beta.txt / 1 /work/beta.txt" (6 statements, exit 0) — previously one iteration printing the pattern. - conditionals: "alpha exists", "nope missing", grep + $? intact. - end-to-end /work/report.sh (loop + glob + >> append + test -f) wrote a correct log: "start / file: /work/alpha.txt / 3 /work/alpha.txt / file: /work/beta.txt / 1 /work/beta.txt …". - unknown command still reports "command not found" and never calls the AI. - test-shell-script.js 27 -> 35 asserts. Retracted: I reported `echo x > file` as broken. It was my probe monkey-patching terminal.print, which bypassed the capture stack the redirect uses. Both paths write correctly: direct helper -> "direct-call", prompt -> "prompt-call\n". --- main.html | 6 +++--- modules/core/module-loader.js | 2 +- modules/ext/critical-ext-bundle.js | 28 ++++++++++++++++++++++------ modules/ext/shell.js | 28 ++++++++++++++++++++++------ modules/test/test-shell-script.js | 28 +++++++++++++++++++++++++++- 5 files changed, 75 insertions(+), 17 deletions(-) diff --git a/main.html b/main.html index 872e3cf..c386cc2 100644 --- a/main.html +++ b/main.html @@ -1349,13 +1349,13 @@ - + - + - +