Skip to content

Allow to suppress console output on native tests#49

Merged
frostney merged 1 commit into
mainfrom
cursor/native-pascal-test-issues-b57c
Mar 8, 2026
Merged

Allow to suppress console output on native tests#49
frostney merged 1 commit into
mainfrom
cursor/native-pascal-test-issues-b57c

Conversation

@frostney
Copy link
Copy Markdown
Owner

@frostney frostney commented Mar 8, 2026

Add SuppressOutput property to TGocciaTestAssertions to clean up native Pascal test output.

The native Pascal test suite intentionally triggers failures to verify matcher behavior, which previously resulted in noisy output. This change silences these expected failure messages and internal RunTests output, ensuring only actual test results are displayed.


Open in Web Open in Cursor 

…re messages in native Pascal tests

Co-authored-by: Johannes Stein <frostney@users.noreply.github.com>
@cursor
Copy link
Copy Markdown

cursor Bot commented Mar 8, 2026

Cursor Agent can help with this pull request. Just @cursor in comments and I'll start working on changes in this branch.
Learn more about Cursor Agents

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 8, 2026

Warning

Rate limit exceeded

@frostney has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 10 minutes and 32 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 86112004-3f7a-4776-a21e-7fb321f2cbf8

📥 Commits

Reviewing files that changed from the base of the PR and between faebd0b and ec09f4b.

📒 Files selected for processing (2)
  • units/Goccia.Builtins.TestAssertions.Test.pas
  • units/Goccia.Builtins.TestAssertions.pas
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch cursor/native-pascal-test-issues-b57c

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@frostney frostney changed the title Native pascal test issues Allow to suppress console output on native tests Mar 8, 2026
@frostney frostney marked this pull request as ready for review March 8, 2026 01:11
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 8, 2026

Benchmark Results

254 benchmarks · 🟢 95 improved · 159 unchanged · avg +6.3%

arraybuffer.js — 14 unchanged · avg +0.9%
Benchmark Base (ops/sec) PR (ops/sec) Change
create ArrayBuffer(0) 364,085 368,259 +1.1%
create ArrayBuffer(64) 359,204 359,187 -0.0%
create ArrayBuffer(1024) 284,393 284,813 +0.1%
create ArrayBuffer(8192) 131,891 131,627 -0.2%
slice full buffer (64 bytes) 442,880 441,618 -0.3%
slice half buffer (512 of 1024 bytes) 381,123 378,340 -0.7%
slice with negative indices 374,712 362,265 -3.3%
slice empty range 431,405 426,450 -1.1%
byteLength access 1,087,856 1,139,785 +4.8%
Symbol.toStringTag access 776,863 812,094 +4.5%
ArrayBuffer.isView 600,819 603,651 +0.5%
clone ArrayBuffer(64) 335,557 337,075 +0.5%
clone ArrayBuffer(1024) 260,310 266,255 +2.3%
clone ArrayBuffer inside object 230,825 241,856 +4.8%
arrays.js — 🟢 1 improved, 18 unchanged · avg +2.4%
Benchmark Base (ops/sec) PR (ops/sec) Change
Array.from length 100 12,835 12,612 -1.7%
Array.from 10 elements 204,335 206,449 +1.0%
Array.of 10 elements 277,158 276,360 -0.3%
spread into new array 274,192 276,507 +0.8%
map over 50 elements 23,693 24,166 +2.0%
filter over 50 elements 19,451 20,201 +3.9%
reduce sum 50 elements 22,366 22,889 +2.3%
forEach over 50 elements 16,971 18,418 🟢 +8.5%
find in 50 elements 29,057 30,520 +5.0%
sort 20 elements 10,030 10,351 +3.2%
flat nested array 100,296 98,741 -1.6%
flatMap 60,383 60,852 +0.8%
map inside map (5x5) 17,600 18,176 +3.3%
filter inside map (5x10) 12,728 13,381 +5.1%
reduce inside map (5x10) 15,965 16,138 +1.1%
forEach inside forEach (5x10) 12,512 13,062 +4.4%
find inside some (10x10) 11,478 11,691 +1.9%
map+filter chain nested (5x20) 4,474 4,627 +3.4%
reduce flatten (10x5) 32,895 33,996 +3.3%
async-await.js — 6 unchanged · avg +1.4%
Benchmark Base (ops/sec) PR (ops/sec) Change
single await 289,140 292,535 +1.2%
multiple awaits 126,544 127,342 +0.6%
await non-Promise value 598,636 618,379 +3.3%
await with try/catch 270,937 273,578 +1.0%
await Promise.all 45,009 45,655 +1.4%
nested async function call 143,648 144,836 +0.8%
classes.js — 31 unchanged · avg +3.2%
Benchmark Base (ops/sec) PR (ops/sec) Change
simple class new 97,656 98,986 +1.4%
class with defaults 73,970 74,844 +1.2%
50 instances via Array.from 4,204 4,272 +1.6%
instance method call 46,250 46,518 +0.6%
static method call 81,753 81,602 -0.2%
single-level inheritance 38,191 38,795 +1.6%
two-level inheritance 32,934 33,611 +2.1%
private field access 45,891 46,573 +1.5%
private methods 52,423 53,868 +2.8%
getter/setter access 53,835 54,771 +1.7%
class decorator (identity) 71,355 73,349 +2.8%
class decorator (wrapping) 40,279 41,127 +2.1%
identity method decorator 50,301 52,440 +4.3%
wrapping method decorator 41,610 43,150 +3.7%
stacked method decorators (x3) 29,220 30,388 +4.0%
identity field decorator 57,355 59,402 +3.6%
field initializer decorator 47,860 50,168 +4.8%
getter decorator (identity) 47,206 49,643 +5.2%
setter decorator (identity) 38,620 40,908 +5.9%
static method decorator 53,257 54,817 +2.9%
static field decorator 62,121 63,862 +2.8%
private method decorator 40,399 42,358 +4.8%
private field decorator 42,808 45,261 +5.7%
plain auto-accessor (no decorator) 74,099 75,599 +2.0%
auto-accessor with decorator 44,015 45,608 +3.6%
decorator writing metadata 34,237 35,397 +3.4%
static getter read 82,433 87,604 +6.3%
static getter/setter pair 60,894 64,694 +6.2%
inherited static getter 48,190 49,531 +2.8%
inherited static setter 51,232 53,289 +4.0%
inherited static getter with this binding 40,126 42,091 +4.9%
closures.js — 🟢 2 improved, 9 unchanged · avg +4.2%
Benchmark Base (ops/sec) PR (ops/sec) Change
closure over single variable 77,059 87,276 🟢 +13.3%
closure over multiple variables 89,119 91,765 +3.0%
nested closures 90,052 94,425 +4.9%
function as argument 71,499 72,465 +1.4%
function returning function 86,561 88,026 +1.7%
compose two functions 51,741 53,359 +3.1%
fn.call 114,545 119,504 +4.3%
fn.apply 85,106 89,070 +4.7%
fn.bind 106,126 106,890 +0.7%
recursive sum to 50 8,400 8,460 +0.7%
recursive tree traversal 12,913 13,948 🟢 +8.0%
collections.js — 🟢 1 improved, 11 unchanged · avg +1.4%
Benchmark Base (ops/sec) PR (ops/sec) Change
add 50 elements 6,479 6,654 +2.7%
has lookup (50 elements) 85,953 86,502 +0.6%
delete elements 44,850 45,401 +1.2%
forEach iteration 12,647 12,878 +1.8%
spread to array 25,200 24,518 -2.7%
deduplicate array 35,044 35,134 +0.3%
set 50 entries 4,870 4,864 -0.1%
get lookup (50 entries) 83,703 84,438 +0.9%
has check 123,515 125,023 +1.2%
delete entries 44,237 45,620 +3.1%
forEach iteration 12,674 12,792 +0.9%
keys/values/entries 6,428 6,903 🟢 +7.4%
destructuring.js — 🟢 9 improved, 13 unchanged · avg +6.8%
Benchmark Base (ops/sec) PR (ops/sec) Change
simple array destructuring 314,229 328,500 +4.5%
with rest element 216,302 223,644 +3.4%
with defaults 310,118 327,896 +5.7%
skip elements 325,051 342,639 +5.4%
nested array destructuring 131,712 138,468 +5.1%
swap variables 323,226 355,287 🟢 +9.9%
simple object destructuring 235,273 249,679 +6.1%
with defaults 277,547 295,799 +6.6%
with renaming 238,960 259,571 🟢 +8.6%
nested object destructuring 110,925 121,475 🟢 +9.5%
rest properties 145,478 155,295 +6.7%
object parameter 70,196 76,015 🟢 +8.3%
array parameter 88,524 95,347 🟢 +7.7%
mixed destructuring in map 28,810 31,841 🟢 +10.5%
forEach with array destructuring 46,524 50,153 🟢 +7.8%
map with array destructuring 50,675 53,522 +5.6%
filter with array destructuring 52,588 54,855 +4.3%
reduce with array destructuring 54,224 58,354 🟢 +7.6%
map with object destructuring 64,221 68,091 +6.0%
map with nested destructuring 54,367 58,214 🟢 +7.1%
map with rest in destructuring 29,048 30,950 +6.5%
map with defaults in destructuring 47,878 51,030 +6.6%
fibonacci.js — 🟢 4 improved, 4 unchanged · avg +6.6%
Benchmark Base (ops/sec) PR (ops/sec) Change
recursive fib(15) 228 242 +5.7%
recursive fib(20) 21 21 +0.8%
recursive fib(15) typed 226 242 🟢 +7.2%
recursive fib(20) typed 21 21 +0.6%
iterative fib(20) via reduce 8,856 9,078 +2.5%
iterator fib(20) 6,385 7,159 🟢 +12.1%
iterator fib(20) via Iterator.from + take 6,519 7,271 🟢 +11.5%
iterator fib(20) last value via reduce 5,569 6,235 🟢 +12.0%
for-of.js — 🟢 2 improved, 5 unchanged · avg +6.4%
Benchmark Base (ops/sec) PR (ops/sec) Change
for...of with 10-element array 34,422 36,409 +5.8%
for...of with 100-element array 3,999 4,213 +5.3%
for...of with string (10 chars) 26,533 27,998 +5.5%
for...of with Set (10 elements) 33,893 36,660 🟢 +8.2%
for...of with Map entries (10 entries) 22,463 23,834 +6.1%
for...of with destructuring 30,144 31,792 +5.5%
for-await-of with sync array 32,206 34,882 🟢 +8.3%
iterators.js — 🟢 13 improved, 7 unchanged · avg +8.5%
Benchmark Base (ops/sec) PR (ops/sec) Change
Iterator.from({next}).toArray() — 20 elements 7,947 8,615 🟢 +8.4%
Iterator.from({next}).toArray() — 50 elements 3,356 3,750 🟢 +11.7%
spread pre-wrapped iterator — 20 elements 7,625 8,861 🟢 +16.2%
Iterator.from({next}).forEach — 50 elements 2,587 2,915 🟢 +12.7%
Iterator.from({next}).reduce — 50 elements 2,653 2,938 🟢 +10.7%
wrap array iterator 49,342 53,747 🟢 +8.9%
wrap plain {next()} object 5,530 6,136 🟢 +11.0%
map + toArray (50 elements) 2,339 2,586 🟢 +10.6%
filter + toArray (50 elements) 2,439 2,689 🟢 +10.2%
take(10) + toArray (50 element source) 12,664 13,893 🟢 +9.7%
drop(40) + toArray (50 element source) 3,239 3,734 🟢 +15.3%
chained map + filter + take (100 element source) 4,323 4,605 +6.5%
some + every (50 elements) 1,531 1,695 🟢 +10.7%
find (50 elements) 3,413 3,685 🟢 +8.0%
array.values().map().filter().toArray() 3,319 3,438 +3.6%
array.values().take(5).toArray() 56,627 59,621 +5.3%
array.values().drop(45).toArray() 15,309 16,239 +6.1%
map.entries() chained helpers 5,228 5,367 +2.7%
set.values() chained helpers 7,920 8,131 +2.7%
string iterator map + toArray 6,710 6,705 -0.1%
json.js — 🟢 6 improved, 14 unchanged · avg +6.2%
Benchmark Base (ops/sec) PR (ops/sec) Change
parse simple object 148,691 152,410 +2.5%
parse nested object 90,405 94,221 +4.2%
parse array of objects 48,466 50,554 +4.3%
parse large flat object 45,812 48,376 +5.6%
parse mixed types 64,620 65,647 +1.6%
stringify simple object 132,996 137,944 +3.7%
stringify nested object 71,120 71,392 +0.4%
stringify array of objects 38,539 39,075 +1.4%
stringify mixed types 59,839 63,224 +5.7%
reviver doubles numbers 30,292 36,774 🟢 +21.4%
reviver filters properties 30,041 33,305 🟢 +10.9%
reviver on nested object 38,434 43,386 🟢 +12.9%
reviver on array 21,311 24,082 🟢 +13.0%
replacer function doubles numbers 33,306 37,852 🟢 +13.6%
replacer function excludes properties 43,493 48,166 🟢 +10.7%
array replacer (allowlist) 88,229 92,201 +4.5%
stringify with 2-space indent 72,208 72,392 +0.3%
stringify with tab indent 70,125 74,248 +5.9%
parse then stringify 45,116 43,223 -4.2%
stringify then parse 25,806 27,022 +4.7%
jsx.jsx — 🟢 15 improved, 6 unchanged · avg +8.5%
Benchmark Base (ops/sec) PR (ops/sec) Change
simple element 168,843 175,291 +3.8%
self-closing element 163,304 176,695 🟢 +8.2%
element with string attribute 127,513 142,668 🟢 +11.9%
element with multiple attributes 112,512 121,384 🟢 +7.9%
element with expression attribute 123,984 132,970 🟢 +7.2%
text child 151,888 169,619 🟢 +11.7%
expression child 147,188 162,838 🟢 +10.6%
mixed text and expression 139,298 149,832 🟢 +7.6%
nested elements (3 levels) 57,903 61,006 +5.4%
sibling children 42,696 45,491 +6.5%
component element 100,186 116,396 🟢 +16.2%
component with children 65,407 70,536 🟢 +7.8%
dotted component 88,247 94,440 🟢 +7.0%
empty fragment 156,440 169,405 🟢 +8.3%
fragment with children 42,113 44,891 +6.6%
spread attributes 83,113 88,637 +6.6%
spread with overrides 73,296 74,764 +2.0%
shorthand props 111,185 119,709 🟢 +7.7%
nav bar structure 19,509 22,306 🟢 +14.3%
card component tree 23,195 25,004 🟢 +7.8%
10 list items via Array.from 10,362 11,760 🟢 +13.5%
numbers.js — 🟢 3 improved, 8 unchanged · avg +5.2%
Benchmark Base (ops/sec) PR (ops/sec) Change
integer arithmetic 339,603 377,779 🟢 +11.2%
floating point arithmetic 368,352 407,500 🟢 +10.6%
number coercion 144,601 146,945 +1.6%
toFixed 86,750 89,958 +3.7%
toString 121,105 129,371 +6.8%
valueOf 172,727 179,961 +4.2%
toPrecision 111,889 123,531 🟢 +10.4%
Number.isNaN 229,202 239,793 +4.6%
Number.isFinite 227,121 230,846 +1.6%
Number.isInteger 222,948 228,656 +2.6%
Number.parseInt and parseFloat 190,391 190,576 +0.1%
objects.js — 🟢 6 improved, 1 unchanged · avg +17.6%
Benchmark Base (ops/sec) PR (ops/sec) Change
create simple object 331,762 395,407 🟢 +19.2%
create nested object 148,662 184,136 🟢 +23.9%
create 50 objects via Array.from 6,845 7,874 🟢 +15.0%
property read 356,000 377,917 +6.2%
Object.keys 226,583 251,362 🟢 +10.9%
Object.entries 72,355 98,074 🟢 +35.5%
spread operator 132,927 149,219 🟢 +12.3%
promises.js — 🟢 12 improved · avg +15.9%
Benchmark Base (ops/sec) PR (ops/sec) Change
Promise.resolve(value) 385,031 416,842 🟢 +8.3%
new Promise(resolve => resolve(value)) 131,971 155,641 🟢 +17.9%
Promise.reject(reason) 365,103 399,295 🟢 +9.4%
resolve + then (1 handler) 114,915 132,296 🟢 +15.1%
resolve + then chain (3 deep) 47,132 56,019 🟢 +18.9%
resolve + then chain (10 deep) 15,204 17,961 🟢 +18.1%
reject + catch + then 65,987 77,699 🟢 +17.7%
resolve + finally + then 56,505 65,808 🟢 +16.5%
Promise.all (5 resolved) 23,347 26,567 🟢 +13.8%
Promise.race (5 resolved) 24,317 29,180 🟢 +20.0%
Promise.allSettled (5 mixed) 19,858 22,351 🟢 +12.6%
Promise.any (5 mixed) 21,167 25,988 🟢 +22.8%
strings.js — 🟢 6 improved, 5 unchanged · avg +8.3%
Benchmark Base (ops/sec) PR (ops/sec) Change
string concatenation 277,082 314,978 🟢 +13.7%
template literal 340,005 365,515 🟢 +7.5%
string repeat 310,616 353,853 🟢 +13.9%
split and join 105,133 119,595 🟢 +13.8%
indexOf and includes 129,763 136,838 +5.5%
toUpperCase and toLowerCase 189,264 199,707 +5.5%
slice and substring 118,008 126,817 🟢 +7.5%
trim operations 138,942 150,825 🟢 +8.6%
replace and replaceAll 161,976 169,547 +4.7%
startsWith and endsWith 102,101 109,224 +7.0%
padStart and padEnd 152,868 158,390 +3.6%
typed-arrays.js — 🟢 15 improved, 7 unchanged · avg +8.6%
Benchmark Base (ops/sec) PR (ops/sec) Change
new Int32Array(0) 237,823 271,908 🟢 +14.3%
new Int32Array(100) 220,923 254,529 🟢 +15.2%
new Int32Array(1000) 139,014 152,114 🟢 +9.4%
new Float64Array(100) 203,679 226,993 🟢 +11.4%
Int32Array.from([...]) 150,181 162,875 🟢 +8.5%
Int32Array.of(1, 2, 3, 4, 5) 236,991 266,723 🟢 +12.5%
sequential write 100 elements 2,658 2,951 🟢 +11.0%
sequential read 100 elements 2,738 2,935 🟢 +7.2%
Float64Array write 100 elements 2,419 2,659 🟢 +9.9%
fill(42) 46,709 47,164 +1.0%
slice() 171,167 185,094 🟢 +8.1%
map(x => x * 2) 6,754 7,198 +6.6%
filter(x => x > 50) 6,795 7,483 🟢 +10.1%
reduce (sum) 6,657 6,845 +2.8%
sort() 157,892 161,294 +2.2%
indexOf() 368,031 380,027 +3.3%
reverse() 292,249 308,834 +5.7%
create view over existing buffer 292,258 325,168 🟢 +11.3%
subarray() 350,613 379,599 🟢 +8.3%
set() from array 423,778 441,116 +4.1%
for-of loop 3,615 4,103 🟢 +13.5%
spread into array 15,133 17,213 🟢 +13.7%

Measured on ubuntu-latest x64. Changes within ±7% are considered insignificant.

@frostney frostney merged commit 1b618e6 into main Mar 8, 2026
4 checks passed
@frostney frostney deleted the cursor/native-pascal-test-issues-b57c branch March 8, 2026 01:56
@frostney frostney added the internal Refactoring, CI, tooling, cleanup label Apr 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

internal Refactoring, CI, tooling, cleanup

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants