Skip to content

perf(runner): outvar pattern in hot-path result helpers - #672

Merged
Chemaclass merged 2 commits into
mainfrom
perf/662-reduce-subshells-runner
May 12, 2026
Merged

perf(runner): outvar pattern in hot-path result helpers#672
Chemaclass merged 2 commits into
mainfrom
perf/662-reduce-subshells-runner

Conversation

@Chemaclass

Copy link
Copy Markdown
Member

Summary

  • Convert four bashunit::runner::* helpers used per test in run_test to the outvar pattern (first arg is the name of the variable to assign into).
  • Affected helpers: extract_encoded_field, extract_subshell_type, format_subshell_output, compute_total_assertions.
  • Update the four $(...) capture call sites in run_test to pass the target variable name, eliminating one fork+pipe per call per test.

Implementation notes

  • Internal locals use a __bu_ prefix to avoid name collisions with caller variables passed by name (e.g. format_subshell_output subshell_output "$subshell_output"). The first iteration without this prefix caused the local subshell_output to shadow the caller's, swallowing the assignment — surfaced by 12 parallel failures.
  • eval "$_out=\$_val" keeps the assignment Bash 3.0+ safe (no printf -v, no namrefs).
  • Pure refactor: each helper has direct unit tests covering the new signature; no behavior change at call sites.

Test plan

  • New unit tests in tests/unit/runner_test.sh: empty/missing keys, multi-counter sum, subshell-type stripping, marker → newline expansion
  • ./bashunit tests/ green (1060 passed, 3m21s — down from ~3m baseline)
  • ./bashunit --parallel tests/ green (1055 passed, ~45s)
  • make sa clean
  • make lint clean
  • Bash 3.0+ compat preserved (eval-based outvar assignment)

Closes#662

@ChemaclassChemaclass added enhancement New feature or request refactoring Refactoring or cleaning related labels May 12, 2026
@ChemaclassChemaclass self-assigned this May 12, 2026
Convert bashunit::runner::extract_encoded_field, extract_subshell_type,
format_subshell_output, compute_total_assertions to write to a caller-named
outvar instead of stdout. Update the four call sites in run_test to pass
a target variable name, eliminating one fork+pipe per call per test.
Internal locals use a __bu_ prefix to avoid name collisions with caller
variables passed by name (e.g. 'format_subshell_output subshell_output ...').
Adds direct unit tests for each helper covering the new signature.
Closes#662
@Chemaclass
Chemaclassforce-pushed the perf/662-reduce-subshells-runner branch from 5886beb to bdbfd33CompareMay 12, 2026 08:54
@Chemaclass
Chemaclass merged commit 1cae56f into mainMay 12, 2026
25 checks passed
@Chemaclass
Chemaclass deleted the perf/662-reduce-subshells-runner branch May 12, 2026 08:54
Chemaclass added a commit that referenced this pull request Aug 2, 2026
 ./bashunit assert date_within_delta "banana" "banana" "5" # exit 0
./bashunit assert date_within_delta "" "" "5" # exit 0
bashunit::date::to_epoch signals an unparseable date by returning 1 and echoing
the raw input back instead of a number. All five assert_date_* functions
captured only the echoed value with a plain `x="$(...)"` and dropped the return
code, so the raw string flowed into an unguarded integer comparison. Depending
on the garbage that either crashed with a bare "integer expression expected"
shell error, or coerced to 0 -- which made two equally-unparseable values
compare equal to each other and pass.
A false pass is the worst outcome a test framework can produce, and this is the
second instance of the same shape found in this sweep, after assert_json_equals
in #967. Both came from discarding an exit status while keeping the output.
Also fixes to_epoch's handling of "": the all-digits fast path matched an empty
string vacuously (no non-digit characters) and returned it as a valid epoch
rather than letting it fall through to the parsing cascade, which rejects it.
Two details worth recording.
The helper returns through the fixed slot _BASHUNIT_DATE_EPOCH_OUT rather than
an outvar name plus eval. bash-style.md prefers the slot and calls the eval form
a last resort, and the reason applies directly here: the eval form's internal
locals can be shadowed by a caller naming its outvar the same thing, which is
the bug behind PR #672 -- and the style guide requires a shadowing regression
test for that form. All five callers are in this file and read the slot on the
next line, so one slot suffices and the hazard disappears instead of needing a
test to police it.
Callers chain `|| return 0`, not bare `|| return`. Every other failure path here
ends in `fail_with; return`, which returns 0, so a failing assertion leaves the
test function's status at 0. Propagating 1 would make runner/exec.sh's
`[ "$test_exit_code" -ne 0 ]` check report the one cause as both Failed and
Error.
1642 sequential / 1601 parallel; baseline + 7 new tests, all RED first.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or requestrefactoringRefactoring or cleaning related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

perf(runner): reduce subshells in hot path

1 participant

@Chemaclass
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
perf(runner): outvar pattern in hot-path result helpers by Chemaclass · Pull Request #672 · TypedDevs/bashunit · GitHub
Skip to content

perf(runner): outvar pattern in hot-path result helpers - #672

Merged
Chemaclass merged 2 commits into
mainfrom
perf/662-reduce-subshells-runner
May 12, 2026
Merged

perf(runner): outvar pattern in hot-path result helpers#672
Chemaclass merged 2 commits into
mainfrom
perf/662-reduce-subshells-runner

Conversation

@Chemaclass

Copy link
Copy Markdown
Member

Summary

  • Convert four bashunit::runner::* helpers used per test in run_test to the outvar pattern (first arg is the name of the variable to assign into).
  • Affected helpers: extract_encoded_field, extract_subshell_type, format_subshell_output, compute_total_assertions.
  • Update the four $(...) capture call sites in run_test to pass the target variable name, eliminating one fork+pipe per call per test.

Implementation notes

  • Internal locals use a __bu_ prefix to avoid name collisions with caller variables passed by name (e.g. format_subshell_output subshell_output "$subshell_output"). The first iteration without this prefix caused the local subshell_output to shadow the caller's, swallowing the assignment — surfaced by 12 parallel failures.
  • eval "$_out=\$_val" keeps the assignment Bash 3.0+ safe (no printf -v, no namrefs).
  • Pure refactor: each helper has direct unit tests covering the new signature; no behavior change at call sites.

Test plan

  • New unit tests in tests/unit/runner_test.sh: empty/missing keys, multi-counter sum, subshell-type stripping, marker → newline expansion
  • ./bashunit tests/ green (1060 passed, 3m21s — down from ~3m baseline)
  • ./bashunit --parallel tests/ green (1055 passed, ~45s)
  • make sa clean
  • make lint clean
  • Bash 3.0+ compat preserved (eval-based outvar assignment)

Closes#662

@ChemaclassChemaclass added enhancement New feature or request refactoring Refactoring or cleaning related labels May 12, 2026
@ChemaclassChemaclass self-assigned this May 12, 2026
Convert bashunit::runner::extract_encoded_field, extract_subshell_type,
format_subshell_output, compute_total_assertions to write to a caller-named
outvar instead of stdout. Update the four call sites in run_test to pass
a target variable name, eliminating one fork+pipe per call per test.
Internal locals use a __bu_ prefix to avoid name collisions with caller
variables passed by name (e.g. 'format_subshell_output subshell_output ...').
Adds direct unit tests for each helper covering the new signature.
Closes#662
@Chemaclass
Chemaclassforce-pushed the perf/662-reduce-subshells-runner branch from 5886beb to bdbfd33CompareMay 12, 2026 08:54
@Chemaclass
Chemaclass merged commit 1cae56f into mainMay 12, 2026
25 checks passed
@Chemaclass
Chemaclass deleted the perf/662-reduce-subshells-runner branch May 12, 2026 08:54
Chemaclass added a commit that referenced this pull request Aug 2, 2026
 ./bashunit assert date_within_delta "banana" "banana" "5" # exit 0
./bashunit assert date_within_delta "" "" "5" # exit 0
bashunit::date::to_epoch signals an unparseable date by returning 1 and echoing
the raw input back instead of a number. All five assert_date_* functions
captured only the echoed value with a plain `x="$(...)"` and dropped the return
code, so the raw string flowed into an unguarded integer comparison. Depending
on the garbage that either crashed with a bare "integer expression expected"
shell error, or coerced to 0 -- which made two equally-unparseable values
compare equal to each other and pass.
A false pass is the worst outcome a test framework can produce, and this is the
second instance of the same shape found in this sweep, after assert_json_equals
in #967. Both came from discarding an exit status while keeping the output.
Also fixes to_epoch's handling of "": the all-digits fast path matched an empty
string vacuously (no non-digit characters) and returned it as a valid epoch
rather than letting it fall through to the parsing cascade, which rejects it.
Two details worth recording.
The helper returns through the fixed slot _BASHUNIT_DATE_EPOCH_OUT rather than
an outvar name plus eval. bash-style.md prefers the slot and calls the eval form
a last resort, and the reason applies directly here: the eval form's internal
locals can be shadowed by a caller naming its outvar the same thing, which is
the bug behind PR #672 -- and the style guide requires a shadowing regression
test for that form. All five callers are in this file and read the slot on the
next line, so one slot suffices and the hazard disappears instead of needing a
test to police it.
Callers chain `|| return 0`, not bare `|| return`. Every other failure path here
ends in `fail_with; return`, which returns 0, so a failing assertion leaves the
test function's status at 0. Propagating 1 would make runner/exec.sh's
`[ "$test_exit_code" -ne 0 ]` check report the one cause as both Failed and
Error.
1642 sequential / 1601 parallel; baseline + 7 new tests, all RED first.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or requestrefactoringRefactoring or cleaning related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

perf(runner): reduce subshells in hot path

1 participant

@Chemaclass
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' perf(runner): outvar pattern in hot-path result helpers by Chemaclass · Pull Request #672 · TypedDevs/bashunit · GitHub
Skip to content

perf(runner): outvar pattern in hot-path result helpers - #672

Merged
Chemaclass merged 2 commits into
mainfrom
perf/662-reduce-subshells-runner
May 12, 2026
Merged

perf(runner): outvar pattern in hot-path result helpers#672
Chemaclass merged 2 commits into
mainfrom
perf/662-reduce-subshells-runner

Conversation

@Chemaclass

Copy link
Copy Markdown
Member

Summary

  • Convert four bashunit::runner::* helpers used per test in run_test to the outvar pattern (first arg is the name of the variable to assign into).
  • Affected helpers: extract_encoded_field, extract_subshell_type, format_subshell_output, compute_total_assertions.
  • Update the four $(...) capture call sites in run_test to pass the target variable name, eliminating one fork+pipe per call per test.

Implementation notes

  • Internal locals use a __bu_ prefix to avoid name collisions with caller variables passed by name (e.g. format_subshell_output subshell_output "$subshell_output"). The first iteration without this prefix caused the local subshell_output to shadow the caller's, swallowing the assignment — surfaced by 12 parallel failures.
  • eval "$_out=\$_val" keeps the assignment Bash 3.0+ safe (no printf -v, no namrefs).
  • Pure refactor: each helper has direct unit tests covering the new signature; no behavior change at call sites.

Test plan

  • New unit tests in tests/unit/runner_test.sh: empty/missing keys, multi-counter sum, subshell-type stripping, marker → newline expansion
  • ./bashunit tests/ green (1060 passed, 3m21s — down from ~3m baseline)
  • ./bashunit --parallel tests/ green (1055 passed, ~45s)
  • make sa clean
  • make lint clean
  • Bash 3.0+ compat preserved (eval-based outvar assignment)

Closes#662

@ChemaclassChemaclass added enhancement New feature or request refactoring Refactoring or cleaning related labels May 12, 2026
@ChemaclassChemaclass self-assigned this May 12, 2026
Convert bashunit::runner::extract_encoded_field, extract_subshell_type,
format_subshell_output, compute_total_assertions to write to a caller-named
outvar instead of stdout. Update the four call sites in run_test to pass
a target variable name, eliminating one fork+pipe per call per test.
Internal locals use a __bu_ prefix to avoid name collisions with caller
variables passed by name (e.g. 'format_subshell_output subshell_output ...').
Adds direct unit tests for each helper covering the new signature.
Closes#662
@Chemaclass
Chemaclassforce-pushed the perf/662-reduce-subshells-runner branch from 5886beb to bdbfd33CompareMay 12, 2026 08:54
@Chemaclass
Chemaclass merged commit 1cae56f into mainMay 12, 2026
25 checks passed
@Chemaclass
Chemaclass deleted the perf/662-reduce-subshells-runner branch May 12, 2026 08:54
Chemaclass added a commit that referenced this pull request Aug 2, 2026
 ./bashunit assert date_within_delta "banana" "banana" "5" # exit 0
./bashunit assert date_within_delta "" "" "5" # exit 0
bashunit::date::to_epoch signals an unparseable date by returning 1 and echoing
the raw input back instead of a number. All five assert_date_* functions
captured only the echoed value with a plain `x="$(...)"` and dropped the return
code, so the raw string flowed into an unguarded integer comparison. Depending
on the garbage that either crashed with a bare "integer expression expected"
shell error, or coerced to 0 -- which made two equally-unparseable values
compare equal to each other and pass.
A false pass is the worst outcome a test framework can produce, and this is the
second instance of the same shape found in this sweep, after assert_json_equals
in #967. Both came from discarding an exit status while keeping the output.
Also fixes to_epoch's handling of "": the all-digits fast path matched an empty
string vacuously (no non-digit characters) and returned it as a valid epoch
rather than letting it fall through to the parsing cascade, which rejects it.
Two details worth recording.
The helper returns through the fixed slot _BASHUNIT_DATE_EPOCH_OUT rather than
an outvar name plus eval. bash-style.md prefers the slot and calls the eval form
a last resort, and the reason applies directly here: the eval form's internal
locals can be shadowed by a caller naming its outvar the same thing, which is
the bug behind PR #672 -- and the style guide requires a shadowing regression
test for that form. All five callers are in this file and read the slot on the
next line, so one slot suffices and the hazard disappears instead of needing a
test to police it.
Callers chain `|| return 0`, not bare `|| return`. Every other failure path here
ends in `fail_with; return`, which returns 0, so a failing assertion leaves the
test function's status at 0. Propagating 1 would make runner/exec.sh's
`[ "$test_exit_code" -ne 0 ]` check report the one cause as both Failed and
Error.
1642 sequential / 1601 parallel; baseline + 7 new tests, all RED first.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or requestrefactoringRefactoring or cleaning related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

perf(runner): reduce subshells in hot path

1 participant

@Chemaclass
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' perf(runner): outvar pattern in hot-path result helpers by Chemaclass · Pull Request #672 · TypedDevs/bashunit · GitHub
Skip to content

perf(runner): outvar pattern in hot-path result helpers - #672

Merged
Chemaclass merged 2 commits into
mainfrom
perf/662-reduce-subshells-runner
May 12, 2026
Merged

perf(runner): outvar pattern in hot-path result helpers#672
Chemaclass merged 2 commits into
mainfrom
perf/662-reduce-subshells-runner

Conversation

@Chemaclass

Copy link
Copy Markdown
Member

Summary

  • Convert four bashunit::runner::* helpers used per test in run_test to the outvar pattern (first arg is the name of the variable to assign into).
  • Affected helpers: extract_encoded_field, extract_subshell_type, format_subshell_output, compute_total_assertions.
  • Update the four $(...) capture call sites in run_test to pass the target variable name, eliminating one fork+pipe per call per test.

Implementation notes

  • Internal locals use a __bu_ prefix to avoid name collisions with caller variables passed by name (e.g. format_subshell_output subshell_output "$subshell_output"). The first iteration without this prefix caused the local subshell_output to shadow the caller's, swallowing the assignment — surfaced by 12 parallel failures.
  • eval "$_out=\$_val" keeps the assignment Bash 3.0+ safe (no printf -v, no namrefs).
  • Pure refactor: each helper has direct unit tests covering the new signature; no behavior change at call sites.

Test plan

  • New unit tests in tests/unit/runner_test.sh: empty/missing keys, multi-counter sum, subshell-type stripping, marker → newline expansion
  • ./bashunit tests/ green (1060 passed, 3m21s — down from ~3m baseline)
  • ./bashunit --parallel tests/ green (1055 passed, ~45s)
  • make sa clean
  • make lint clean
  • Bash 3.0+ compat preserved (eval-based outvar assignment)

Closes#662

@ChemaclassChemaclass added enhancement New feature or request refactoring Refactoring or cleaning related labels May 12, 2026
@ChemaclassChemaclass self-assigned this May 12, 2026
Convert bashunit::runner::extract_encoded_field, extract_subshell_type,
format_subshell_output, compute_total_assertions to write to a caller-named
outvar instead of stdout. Update the four call sites in run_test to pass
a target variable name, eliminating one fork+pipe per call per test.
Internal locals use a __bu_ prefix to avoid name collisions with caller
variables passed by name (e.g. 'format_subshell_output subshell_output ...').
Adds direct unit tests for each helper covering the new signature.
Closes#662
@Chemaclass
Chemaclassforce-pushed the perf/662-reduce-subshells-runner branch from 5886beb to bdbfd33CompareMay 12, 2026 08:54
@Chemaclass
Chemaclass merged commit 1cae56f into mainMay 12, 2026
25 checks passed
@Chemaclass
Chemaclass deleted the perf/662-reduce-subshells-runner branch May 12, 2026 08:54
Chemaclass added a commit that referenced this pull request Aug 2, 2026
 ./bashunit assert date_within_delta "banana" "banana" "5" # exit 0
./bashunit assert date_within_delta "" "" "5" # exit 0
bashunit::date::to_epoch signals an unparseable date by returning 1 and echoing
the raw input back instead of a number. All five assert_date_* functions
captured only the echoed value with a plain `x="$(...)"` and dropped the return
code, so the raw string flowed into an unguarded integer comparison. Depending
on the garbage that either crashed with a bare "integer expression expected"
shell error, or coerced to 0 -- which made two equally-unparseable values
compare equal to each other and pass.
A false pass is the worst outcome a test framework can produce, and this is the
second instance of the same shape found in this sweep, after assert_json_equals
in #967. Both came from discarding an exit status while keeping the output.
Also fixes to_epoch's handling of "": the all-digits fast path matched an empty
string vacuously (no non-digit characters) and returned it as a valid epoch
rather than letting it fall through to the parsing cascade, which rejects it.
Two details worth recording.
The helper returns through the fixed slot _BASHUNIT_DATE_EPOCH_OUT rather than
an outvar name plus eval. bash-style.md prefers the slot and calls the eval form
a last resort, and the reason applies directly here: the eval form's internal
locals can be shadowed by a caller naming its outvar the same thing, which is
the bug behind PR #672 -- and the style guide requires a shadowing regression
test for that form. All five callers are in this file and read the slot on the
next line, so one slot suffices and the hazard disappears instead of needing a
test to police it.
Callers chain `|| return 0`, not bare `|| return`. Every other failure path here
ends in `fail_with; return`, which returns 0, so a failing assertion leaves the
test function's status at 0. Propagating 1 would make runner/exec.sh's
`[ "$test_exit_code" -ne 0 ]` check report the one cause as both Failed and
Error.
1642 sequential / 1601 parallel; baseline + 7 new tests, all RED first.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or requestrefactoringRefactoring or cleaning related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

perf(runner): reduce subshells in hot path

1 participant

@Chemaclass
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' perf(runner): outvar pattern in hot-path result helpers by Chemaclass · Pull Request #672 · TypedDevs/bashunit · GitHub
Skip to content

perf(runner): outvar pattern in hot-path result helpers - #672

Merged
Chemaclass merged 2 commits into
mainfrom
perf/662-reduce-subshells-runner
May 12, 2026
Merged

perf(runner): outvar pattern in hot-path result helpers#672
Chemaclass merged 2 commits into
mainfrom
perf/662-reduce-subshells-runner

Conversation

@Chemaclass

Copy link
Copy Markdown
Member

Summary

  • Convert four bashunit::runner::* helpers used per test in run_test to the outvar pattern (first arg is the name of the variable to assign into).
  • Affected helpers: extract_encoded_field, extract_subshell_type, format_subshell_output, compute_total_assertions.
  • Update the four $(...) capture call sites in run_test to pass the target variable name, eliminating one fork+pipe per call per test.

Implementation notes

  • Internal locals use a __bu_ prefix to avoid name collisions with caller variables passed by name (e.g. format_subshell_output subshell_output "$subshell_output"). The first iteration without this prefix caused the local subshell_output to shadow the caller's, swallowing the assignment — surfaced by 12 parallel failures.
  • eval "$_out=\$_val" keeps the assignment Bash 3.0+ safe (no printf -v, no namrefs).
  • Pure refactor: each helper has direct unit tests covering the new signature; no behavior change at call sites.

Test plan

  • New unit tests in tests/unit/runner_test.sh: empty/missing keys, multi-counter sum, subshell-type stripping, marker → newline expansion
  • ./bashunit tests/ green (1060 passed, 3m21s — down from ~3m baseline)
  • ./bashunit --parallel tests/ green (1055 passed, ~45s)
  • make sa clean
  • make lint clean
  • Bash 3.0+ compat preserved (eval-based outvar assignment)

Closes#662

@ChemaclassChemaclass added enhancement New feature or request refactoring Refactoring or cleaning related labels May 12, 2026
@ChemaclassChemaclass self-assigned this May 12, 2026
Convert bashunit::runner::extract_encoded_field, extract_subshell_type,
format_subshell_output, compute_total_assertions to write to a caller-named
outvar instead of stdout. Update the four call sites in run_test to pass
a target variable name, eliminating one fork+pipe per call per test.
Internal locals use a __bu_ prefix to avoid name collisions with caller
variables passed by name (e.g. 'format_subshell_output subshell_output ...').
Adds direct unit tests for each helper covering the new signature.
Closes#662
@Chemaclass
Chemaclassforce-pushed the perf/662-reduce-subshells-runner branch from 5886beb to bdbfd33CompareMay 12, 2026 08:54
@Chemaclass
Chemaclass merged commit 1cae56f into mainMay 12, 2026
25 checks passed
@Chemaclass
Chemaclass deleted the perf/662-reduce-subshells-runner branch May 12, 2026 08:54
Chemaclass added a commit that referenced this pull request Aug 2, 2026
 ./bashunit assert date_within_delta "banana" "banana" "5" # exit 0
./bashunit assert date_within_delta "" "" "5" # exit 0
bashunit::date::to_epoch signals an unparseable date by returning 1 and echoing
the raw input back instead of a number. All five assert_date_* functions
captured only the echoed value with a plain `x="$(...)"` and dropped the return
code, so the raw string flowed into an unguarded integer comparison. Depending
on the garbage that either crashed with a bare "integer expression expected"
shell error, or coerced to 0 -- which made two equally-unparseable values
compare equal to each other and pass.
A false pass is the worst outcome a test framework can produce, and this is the
second instance of the same shape found in this sweep, after assert_json_equals
in #967. Both came from discarding an exit status while keeping the output.
Also fixes to_epoch's handling of "": the all-digits fast path matched an empty
string vacuously (no non-digit characters) and returned it as a valid epoch
rather than letting it fall through to the parsing cascade, which rejects it.
Two details worth recording.
The helper returns through the fixed slot _BASHUNIT_DATE_EPOCH_OUT rather than
an outvar name plus eval. bash-style.md prefers the slot and calls the eval form
a last resort, and the reason applies directly here: the eval form's internal
locals can be shadowed by a caller naming its outvar the same thing, which is
the bug behind PR #672 -- and the style guide requires a shadowing regression
test for that form. All five callers are in this file and read the slot on the
next line, so one slot suffices and the hazard disappears instead of needing a
test to police it.
Callers chain `|| return 0`, not bare `|| return`. Every other failure path here
ends in `fail_with; return`, which returns 0, so a failing assertion leaves the
test function's status at 0. Propagating 1 would make runner/exec.sh's
`[ "$test_exit_code" -ne 0 ]` check report the one cause as both Failed and
Error.
1642 sequential / 1601 parallel; baseline + 7 new tests, all RED first.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or requestrefactoringRefactoring or cleaning related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

perf(runner): reduce subshells in hot path

1 participant

@Chemaclass
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' perf(runner): outvar pattern in hot-path result helpers by Chemaclass · Pull Request #672 · TypedDevs/bashunit · GitHub
Skip to content

perf(runner): outvar pattern in hot-path result helpers - #672

Merged
Chemaclass merged 2 commits into
mainfrom
perf/662-reduce-subshells-runner
May 12, 2026
Merged

perf(runner): outvar pattern in hot-path result helpers#672
Chemaclass merged 2 commits into
mainfrom
perf/662-reduce-subshells-runner

Conversation

@Chemaclass

Copy link
Copy Markdown
Member

Summary

  • Convert four bashunit::runner::* helpers used per test in run_test to the outvar pattern (first arg is the name of the variable to assign into).
  • Affected helpers: extract_encoded_field, extract_subshell_type, format_subshell_output, compute_total_assertions.
  • Update the four $(...) capture call sites in run_test to pass the target variable name, eliminating one fork+pipe per call per test.

Implementation notes

  • Internal locals use a __bu_ prefix to avoid name collisions with caller variables passed by name (e.g. format_subshell_output subshell_output "$subshell_output"). The first iteration without this prefix caused the local subshell_output to shadow the caller's, swallowing the assignment — surfaced by 12 parallel failures.
  • eval "$_out=\$_val" keeps the assignment Bash 3.0+ safe (no printf -v, no namrefs).
  • Pure refactor: each helper has direct unit tests covering the new signature; no behavior change at call sites.

Test plan

  • New unit tests in tests/unit/runner_test.sh: empty/missing keys, multi-counter sum, subshell-type stripping, marker → newline expansion
  • ./bashunit tests/ green (1060 passed, 3m21s — down from ~3m baseline)
  • ./bashunit --parallel tests/ green (1055 passed, ~45s)
  • make sa clean
  • make lint clean
  • Bash 3.0+ compat preserved (eval-based outvar assignment)

Closes#662

@ChemaclassChemaclass added enhancement New feature or request refactoring Refactoring or cleaning related labels May 12, 2026
@ChemaclassChemaclass self-assigned this May 12, 2026
Convert bashunit::runner::extract_encoded_field, extract_subshell_type,
format_subshell_output, compute_total_assertions to write to a caller-named
outvar instead of stdout. Update the four call sites in run_test to pass
a target variable name, eliminating one fork+pipe per call per test.
Internal locals use a __bu_ prefix to avoid name collisions with caller
variables passed by name (e.g. 'format_subshell_output subshell_output ...').
Adds direct unit tests for each helper covering the new signature.
Closes#662
@Chemaclass
Chemaclassforce-pushed the perf/662-reduce-subshells-runner branch from 5886beb to bdbfd33CompareMay 12, 2026 08:54
@Chemaclass
Chemaclass merged commit 1cae56f into mainMay 12, 2026
25 checks passed
@Chemaclass
Chemaclass deleted the perf/662-reduce-subshells-runner branch May 12, 2026 08:54
Chemaclass added a commit that referenced this pull request Aug 2, 2026
 ./bashunit assert date_within_delta "banana" "banana" "5" # exit 0
./bashunit assert date_within_delta "" "" "5" # exit 0
bashunit::date::to_epoch signals an unparseable date by returning 1 and echoing
the raw input back instead of a number. All five assert_date_* functions
captured only the echoed value with a plain `x="$(...)"` and dropped the return
code, so the raw string flowed into an unguarded integer comparison. Depending
on the garbage that either crashed with a bare "integer expression expected"
shell error, or coerced to 0 -- which made two equally-unparseable values
compare equal to each other and pass.
A false pass is the worst outcome a test framework can produce, and this is the
second instance of the same shape found in this sweep, after assert_json_equals
in #967. Both came from discarding an exit status while keeping the output.
Also fixes to_epoch's handling of "": the all-digits fast path matched an empty
string vacuously (no non-digit characters) and returned it as a valid epoch
rather than letting it fall through to the parsing cascade, which rejects it.
Two details worth recording.
The helper returns through the fixed slot _BASHUNIT_DATE_EPOCH_OUT rather than
an outvar name plus eval. bash-style.md prefers the slot and calls the eval form
a last resort, and the reason applies directly here: the eval form's internal
locals can be shadowed by a caller naming its outvar the same thing, which is
the bug behind PR #672 -- and the style guide requires a shadowing regression
test for that form. All five callers are in this file and read the slot on the
next line, so one slot suffices and the hazard disappears instead of needing a
test to police it.
Callers chain `|| return 0`, not bare `|| return`. Every other failure path here
ends in `fail_with; return`, which returns 0, so a failing assertion leaves the
test function's status at 0. Propagating 1 would make runner/exec.sh's
`[ "$test_exit_code" -ne 0 ]` check report the one cause as both Failed and
Error.
1642 sequential / 1601 parallel; baseline + 7 new tests, all RED first.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or requestrefactoringRefactoring or cleaning related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

perf(runner): reduce subshells in hot path

1 participant

@Chemaclass
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' perf(runner): outvar pattern in hot-path result helpers by Chemaclass · Pull Request #672 · TypedDevs/bashunit · GitHub
Skip to content

perf(runner): outvar pattern in hot-path result helpers - #672

Merged
Chemaclass merged 2 commits into
mainfrom
perf/662-reduce-subshells-runner
May 12, 2026
Merged

perf(runner): outvar pattern in hot-path result helpers#672
Chemaclass merged 2 commits into
mainfrom
perf/662-reduce-subshells-runner

Conversation

@Chemaclass

Copy link
Copy Markdown
Member

Summary

  • Convert four bashunit::runner::* helpers used per test in run_test to the outvar pattern (first arg is the name of the variable to assign into).
  • Affected helpers: extract_encoded_field, extract_subshell_type, format_subshell_output, compute_total_assertions.
  • Update the four $(...) capture call sites in run_test to pass the target variable name, eliminating one fork+pipe per call per test.

Implementation notes

  • Internal locals use a __bu_ prefix to avoid name collisions with caller variables passed by name (e.g. format_subshell_output subshell_output "$subshell_output"). The first iteration without this prefix caused the local subshell_output to shadow the caller's, swallowing the assignment — surfaced by 12 parallel failures.
  • eval "$_out=\$_val" keeps the assignment Bash 3.0+ safe (no printf -v, no namrefs).
  • Pure refactor: each helper has direct unit tests covering the new signature; no behavior change at call sites.

Test plan

  • New unit tests in tests/unit/runner_test.sh: empty/missing keys, multi-counter sum, subshell-type stripping, marker → newline expansion
  • ./bashunit tests/ green (1060 passed, 3m21s — down from ~3m baseline)
  • ./bashunit --parallel tests/ green (1055 passed, ~45s)
  • make sa clean
  • make lint clean
  • Bash 3.0+ compat preserved (eval-based outvar assignment)

Closes#662

@ChemaclassChemaclass added enhancement New feature or request refactoring Refactoring or cleaning related labels May 12, 2026
@ChemaclassChemaclass self-assigned this May 12, 2026
Convert bashunit::runner::extract_encoded_field, extract_subshell_type,
format_subshell_output, compute_total_assertions to write to a caller-named
outvar instead of stdout. Update the four call sites in run_test to pass
a target variable name, eliminating one fork+pipe per call per test.
Internal locals use a __bu_ prefix to avoid name collisions with caller
variables passed by name (e.g. 'format_subshell_output subshell_output ...').
Adds direct unit tests for each helper covering the new signature.
Closes#662
@Chemaclass
Chemaclassforce-pushed the perf/662-reduce-subshells-runner branch from 5886beb to bdbfd33CompareMay 12, 2026 08:54
@Chemaclass
Chemaclass merged commit 1cae56f into mainMay 12, 2026
25 checks passed
@Chemaclass
Chemaclass deleted the perf/662-reduce-subshells-runner branch May 12, 2026 08:54
Chemaclass added a commit that referenced this pull request Aug 2, 2026
 ./bashunit assert date_within_delta "banana" "banana" "5" # exit 0
./bashunit assert date_within_delta "" "" "5" # exit 0
bashunit::date::to_epoch signals an unparseable date by returning 1 and echoing
the raw input back instead of a number. All five assert_date_* functions
captured only the echoed value with a plain `x="$(...)"` and dropped the return
code, so the raw string flowed into an unguarded integer comparison. Depending
on the garbage that either crashed with a bare "integer expression expected"
shell error, or coerced to 0 -- which made two equally-unparseable values
compare equal to each other and pass.
A false pass is the worst outcome a test framework can produce, and this is the
second instance of the same shape found in this sweep, after assert_json_equals
in #967. Both came from discarding an exit status while keeping the output.
Also fixes to_epoch's handling of "": the all-digits fast path matched an empty
string vacuously (no non-digit characters) and returned it as a valid epoch
rather than letting it fall through to the parsing cascade, which rejects it.
Two details worth recording.
The helper returns through the fixed slot _BASHUNIT_DATE_EPOCH_OUT rather than
an outvar name plus eval. bash-style.md prefers the slot and calls the eval form
a last resort, and the reason applies directly here: the eval form's internal
locals can be shadowed by a caller naming its outvar the same thing, which is
the bug behind PR #672 -- and the style guide requires a shadowing regression
test for that form. All five callers are in this file and read the slot on the
next line, so one slot suffices and the hazard disappears instead of needing a
test to police it.
Callers chain `|| return 0`, not bare `|| return`. Every other failure path here
ends in `fail_with; return`, which returns 0, so a failing assertion leaves the
test function's status at 0. Propagating 1 would make runner/exec.sh's
`[ "$test_exit_code" -ne 0 ]` check report the one cause as both Failed and
Error.
1642 sequential / 1601 parallel; baseline + 7 new tests, all RED first.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or requestrefactoringRefactoring or cleaning related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

perf(runner): reduce subshells in hot path

1 participant

@Chemaclass
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); perf(runner): outvar pattern in hot-path result helpers by Chemaclass · Pull Request #672 · TypedDevs/bashunit · GitHub
Skip to content

perf(runner): outvar pattern in hot-path result helpers - #672

Merged
Chemaclass merged 2 commits into
mainfrom
perf/662-reduce-subshells-runner
May 12, 2026
Merged

perf(runner): outvar pattern in hot-path result helpers#672
Chemaclass merged 2 commits into
mainfrom
perf/662-reduce-subshells-runner

Conversation

@Chemaclass

Copy link
Copy Markdown
Member

Summary

  • Convert four bashunit::runner::* helpers used per test in run_test to the outvar pattern (first arg is the name of the variable to assign into).
  • Affected helpers: extract_encoded_field, extract_subshell_type, format_subshell_output, compute_total_assertions.
  • Update the four $(...) capture call sites in run_test to pass the target variable name, eliminating one fork+pipe per call per test.

Implementation notes

  • Internal locals use a __bu_ prefix to avoid name collisions with caller variables passed by name (e.g. format_subshell_output subshell_output "$subshell_output"). The first iteration without this prefix caused the local subshell_output to shadow the caller's, swallowing the assignment — surfaced by 12 parallel failures.
  • eval "$_out=\$_val" keeps the assignment Bash 3.0+ safe (no printf -v, no namrefs).
  • Pure refactor: each helper has direct unit tests covering the new signature; no behavior change at call sites.

Test plan

  • New unit tests in tests/unit/runner_test.sh: empty/missing keys, multi-counter sum, subshell-type stripping, marker → newline expansion
  • ./bashunit tests/ green (1060 passed, 3m21s — down from ~3m baseline)
  • ./bashunit --parallel tests/ green (1055 passed, ~45s)
  • make sa clean
  • make lint clean
  • Bash 3.0+ compat preserved (eval-based outvar assignment)

Closes#662

@ChemaclassChemaclass added enhancement New feature or request refactoring Refactoring or cleaning related labels May 12, 2026
@ChemaclassChemaclass self-assigned this May 12, 2026
Convert bashunit::runner::extract_encoded_field, extract_subshell_type,
format_subshell_output, compute_total_assertions to write to a caller-named
outvar instead of stdout. Update the four call sites in run_test to pass
a target variable name, eliminating one fork+pipe per call per test.
Internal locals use a __bu_ prefix to avoid name collisions with caller
variables passed by name (e.g. 'format_subshell_output subshell_output ...').
Adds direct unit tests for each helper covering the new signature.
Closes#662
@Chemaclass
Chemaclassforce-pushed the perf/662-reduce-subshells-runner branch from 5886beb to bdbfd33CompareMay 12, 2026 08:54
@Chemaclass
Chemaclass merged commit 1cae56f into mainMay 12, 2026
25 checks passed
@Chemaclass
Chemaclass deleted the perf/662-reduce-subshells-runner branch May 12, 2026 08:54
Chemaclass added a commit that referenced this pull request Aug 2, 2026
 ./bashunit assert date_within_delta "banana" "banana" "5" # exit 0
./bashunit assert date_within_delta "" "" "5" # exit 0
bashunit::date::to_epoch signals an unparseable date by returning 1 and echoing
the raw input back instead of a number. All five assert_date_* functions
captured only the echoed value with a plain `x="$(...)"` and dropped the return
code, so the raw string flowed into an unguarded integer comparison. Depending
on the garbage that either crashed with a bare "integer expression expected"
shell error, or coerced to 0 -- which made two equally-unparseable values
compare equal to each other and pass.
A false pass is the worst outcome a test framework can produce, and this is the
second instance of the same shape found in this sweep, after assert_json_equals
in #967. Both came from discarding an exit status while keeping the output.
Also fixes to_epoch's handling of "": the all-digits fast path matched an empty
string vacuously (no non-digit characters) and returned it as a valid epoch
rather than letting it fall through to the parsing cascade, which rejects it.
Two details worth recording.
The helper returns through the fixed slot _BASHUNIT_DATE_EPOCH_OUT rather than
an outvar name plus eval. bash-style.md prefers the slot and calls the eval form
a last resort, and the reason applies directly here: the eval form's internal
locals can be shadowed by a caller naming its outvar the same thing, which is
the bug behind PR #672 -- and the style guide requires a shadowing regression
test for that form. All five callers are in this file and read the slot on the
next line, so one slot suffices and the hazard disappears instead of needing a
test to police it.
Callers chain `|| return 0`, not bare `|| return`. Every other failure path here
ends in `fail_with; return`, which returns 0, so a failing assertion leaves the
test function's status at 0. Propagating 1 would make runner/exec.sh's
`[ "$test_exit_code" -ne 0 ]` check report the one cause as both Failed and
Error.
1642 sequential / 1601 parallel; baseline + 7 new tests, all RED first.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or requestrefactoringRefactoring or cleaning related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

perf(runner): reduce subshells in hot path

1 participant

@Chemaclass