Repository navigation
perf(reports): avoid plain JSON escape forks - #1374
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Background
Closes #1369.
Writing JSON reports forks
sedandtrfor every filename, test name, and failure message, even for plain text. Escape ordinary values in the current shell and retain the existing control-character fallback.Changes
trcalls for plain fields.Performance
A sequential JSON report for 100 passing tests improved from 3,580 ms to 2,315 ms, a 35% reduction. Plain fields launch no stripping or
trprocess. Report schema and counters are unchanged.Benchmarks use macOS arm64 and Bash 3.2.57, with medians of five alternating baseline and branch runs after one warm-up. The same external harness and fixtures run against main at
860c797a48e34be20b019a70f58c0e06d15c8d33. Timings stay out of normal tests.Validation
make sa,make lint, Linuxmake test, macOSmake test/parallelandmake test/strict, and the full standalone-artifact suite on macOS pass. Parallel checks use four jobs. macOS full runs useTEST_SCRIPTS=tests/to avoid the existing Bash 3.2 process-substitution descriptor limit.The full source suite passes on GNU Bash 3.00.0 in sequential, parallel, simple, simple-parallel, and strict modes, using the same shell selection as CI. The standalone artifact also passes the focused provider, reporting, output, and fork regressions with Bash 3.0 first in PATH.
Checklist
CHANGELOG.mdto reflect the new feature or fix.