test(ui): split settings node suite by concern (#128788)
test(ui): split settings node suite by concern (#128788) * test(ui): split settings node suite by concern ui/src/app/settings.node.test.ts sat at 999 oxlint-counted lines against the 1000-line max-lines cap, so any added assertion failed the core lint shard — and, as in #128474, could pass locally while only the merge ref tripped the cap. Split the 42-test monolith along the surfaces it actually covers: the base file keeps gateway URL derivation, tab-local token handling, and per-gateway session scoping; preference persistence and layout persistence move to dotted siblings, matching the existing settings.sidebar-prefs.node.test.ts precedent. Test names and count are unchanged (47 across the settings node suites, before and after). The location/base-path/settings-fixture helpers and the storage lifecycle hooks are now shared from ui/src/test-helpers/settings-node.ts instead of being copy-pasted per file; sidebar-prefs drops its duplicate copies too. * test(node-host): write fake container-engine state atomically checks-node-compact-large-3 failed twice on this branch in different tests of node-worker-supervisor.container.test.ts, most recently with "SyntaxError: Unexpected end of JSON input" raised from the fake engine's load() while the supervisor ran `docker rm --force`. The shim saved container state with a truncating fs.writeFileSync while sibling shim invocations (rm, inspect, wait, ps) read the same path, so a reader could observe the zero-length window and exit 1. Write to a ".pending" sibling and rename over the target instead; rename is atomic, so readers always see a complete previous or next state. The ps handler filters on the ".container.json" suffix, so pending files are ignored. A concurrent write/read probe over the old pattern produced 2014 partial reads in 212900; the same probe over write-then-rename produced 0 in 203468. Not reproducible end-to-end on macOS, where the truncation window is far narrower than on the loaded Linux shard.
评论
?
参与讨论