name: verify description: Verify a Bun runtime change by driving the debug binary end-to-end.
Verify a Bun runtime change
Build and drive the debug binary directly — never bun test, never import-and-call.
Build
bun bd --version # builds ./build/debug/bun-debug and prints its version
Drive
For any JS-visible change, run the debug binary with -e and observe stdout:
bun bd -e '<repro>' # builds, then runs; sets BUN_DEBUG_QUIET_LOGS for you
For worker/subprocess-shaped changes, spawn a subprocess (still -e) so worker teardown / event-loop-idle paths are exercised. Cross-check against node -e '<same repro>' for Node-compat changes.
Gotchas
- A
src/js/**edit can silently not reach the binary.bundle-modulesregeneratesbuild/<cfg>/codegen/InternalModuleRegistryConstants.h, but the C++ TU that embeds it is not always recompiled, so the build succeeds while the binary still runs the OLD JS. Gate on the binary, not the build: ask the binary you just built —bun bd -e 'console.log(<Class>.toString().includes("<new-id>"))'(or run./build/<cfg>/bundirectly). Plainbunis the system Bun on $PATH and never has your edit, so it answers about the wrong binary. If false,touch src/jsc/bindings/InternalModuleRegistry.cppand rebuild. - Prefix every
bun bdwithPATH="$HOME/.cargo/bin:$PATH"— Homebrew'srustformula shadows the pinned nightly, andbun bddies withthe option 'Z' is only accepted on the nightly compiler.bun bdre-runs cargo on every invocation, so this is needed for follow-up runs too, not just the first build. node:clusterchanges can't be driven with-e:cluster.fork()re-execsargv[1], so workers need a real file on disk. Write a scratch script and run./build/debug/bun-debug <file>.- Only one
bun bdper worktree at a time — a second one blocks on the build lock and looks like a runtime hang. Build once, then drive./build/debug/bun-debugdirectly undertimeout. BUN_DEBUG_QUIET_LOGS=1suppresses debug-build log spam.- Debug builds print
[cachefs]/[sys]lines to stdout; filter them before diffing output againstnode. - MessagePort's
.on/.offare added by requiringworker_threads— plainnew MessageChannel()ports only haveaddEventListeneruntil then. - The debug+asan build is 10-100× slower than release; large-allocation stress tests can time out locally while passing in CI.
TDD Red-Green-Refactor
Testing
Skill qui guide Claude a travers le cycle TDD complet.
Audit d'Accessibilité Web
Testing
Réalise un audit d'accessibilité web complet selon les normes WCAG.
Générateur de Tests UAT
Testing
Génère des cas de test d'acceptation utilisateur structurés et complets.