bun test v1.3.14 (0d9b296a) test/unit/secrets.test.ts: (pass) pb_secrets: the declaration > every key states its tier: the audience wrappers, or Void's .secret()/.public() markers; a bare validator is refused [2.01ms] (pass) pb_secrets: the declaration > values are parsed through the validators: defaults filled in, numbers coerced, bad and missing values named without their values [3.38ms] (pass) pb_secrets: the declaration > a lookup function is a source too, and a tier filter reads only what that tier may see [0.51ms] (pass) pb_secrets: the declaration > a name that is not an environment-variable name, or a value that is no validator, fails at definition [1.21ms] (pass) pb_secrets: the declaration > read statically for the build: names, tiers and descriptions, without running the file [19.37ms] (pass) pb_secrets: the directory > values: strings stay, numbers and objects are stringified, nulls are skipped, non-objects fail [0.86ms] (pass) pb_secrets: the directory > state: the declaration is imported; provided, unprovided and undeclared names; values with no declaration are refused [4.58ms] (pass) pb_secrets: the directory > loadSecrets fills an environment (defaults included) without overwriting it, and reports what is missing or refused [1.35ms] test/unit/update.test.ts: (pass) archive suffix follows PocketBase's naming for the platforms Bun builds [0.09ms] (pass) version comparison handles v prefixes, missing parts and pre-releases [0.32ms] (pass) checksums.txt parses goreleaser's format [0.64ms] (pass) the install shape is read from where the caller stands, not where the package lives [19.82ms] (pass) a package.json that does not depend on voidbase is not a project to update [0.54ms] (pass) the lockfile picks the package manager [0.62ms] (pass) updating keeps the range style the project chose [0.41ms] (pass) a project reports its own version, installed first and declared second [1.15ms] (pass) the notice stays quiet in CI, without a terminal, and when told to [0.20ms] (pass) the notice only speaks when there is something newer [0.21ms] (pass) the cache is used while it is fresh and ignored once it is not [0.64ms] test/unit/presence.test.ts: (pass) presence roster > the newest arrivals hold the slots: a fourth join evicts the one that joined first [0.46ms] (pass) presence roster > a beat moves a member and is dropped from anyone without a slot: the write path is bounded [0.10ms] (pass) presence roster > coordinates are clamped and text is bounded, whatever a client sends [0.09ms] (pass) presence roster > a slot is freed by leaving, and by going quiet for the time to live [0.16ms] (pass) presence roster > rejoining keeps the slot it already had rather than taking a second one [0.07ms] (pass) presence roster > what a client is told carries no bookkeeping [0.08ms] test/unit/jobs.test.ts: (pass) dispatch runs inline without a queue binding [0.55ms] (pass) dispatch queues with a binding, inline forces the immediate path [0.19ms] (pass) messages over the queue limit run inline [0.28ms] {"level":"warn","message":"voidbase: queue send failed","time":"2026-09-08T01:13:40.874Z","job":"backup","error":"queue down"} (pass) dispatchIfQueued is a no-op without a queue and swallows send failures [0.53ms] {"level":"error","message":"voidbase: job failed, will retry","time":"2026-09-08T01:13:40.875Z","job":"backup","id":"2","attempt":1,"error":"Error: disk full"} {"level":"error","message":"voidbase: job failed, will retry","time":"2026-09-08T01:13:40.875Z","job":"backup","id":"3","attempt":3,"error":"Error: disk full"} (pass) consumeJobs acks successes and retries failures with backoff [0.89ms] (pass) runJob rejects unknown job types [0.16ms] test/unit/ci-plan.test.ts: (pass) ci plan: what runs > no previous record: everything runs [0.99ms] (pass) ci plan: what runs > nothing changed: nothing runs, no servers, no oracles [0.45ms] (pass) ci plan: what runs > one suite's inputs changed: that suite on both runtimes with the servers it needs [0.62ms] (pass) ci plan: what runs > CI_BROWSER=0 drops the browser suites and the starter [0.30ms] (pass) ci plan: what runs > a key the record never verified runs [0.11ms] (pass) ci plan: what runs > Tests: all in a commit forces a full run [0.08ms] (pass) ci plan: hot mode > typecheck and unit always, the Bun pass, browser suites and starter deferred, the rest within the budget [1.28ms] (pass) ci plan: hot mode > the commits' scopes go first, a Tests: trailer and a changed test file are never deferred [0.78ms] (pass) ci plan: hot mode > recorded durations replace the defaults [0.26ms] (pass) ci plan: hot mode > Tests: bun brings the Bun pass back [0.24ms] (pass) ci plan: commits > scopes and Tests: trailers are read from the messages [0.64ms] (pass) ci plan: commits > release signals: releasable types, a breaking change, the release merge, a dry-run trailer [0.10ms] (pass) ci plan: the import graph of this repository > the deploy code reaches the CLI checks, not the Bun pass or the Workers suites [0.18ms] (pass) ci plan: the import graph of this repository > the server reaches every suite on both runtimes and the boots [0.15ms] (pass) ci plan: the import graph of this repository > the Bun runtime reaches the Bun pass only [0.11ms] (pass) ci plan: the import graph of this repository > platform flavours: the Workers flavour reaches the Workers suites, the Bun flavour the Bun pass [0.15ms] (pass) ci plan: the import graph of this repository > a suite's own file reaches that suite only [0.05ms] test/unit/redirects.test.ts: (pass) parseRedirects: hosts split off, defaults, 200 rules ignored [0.27ms] (pass) redirectRule: whole-host splat, exact path, prefix splat, relative targets made absolute [0.23ms] test/unit/settings-encryption.test.ts: (pass) settings round-trip through AES-GCM with a 32-char key [2.46ms] test/unit/jwt.test.ts: (pass) jwt > a signed token verifies; the wrong secret and a changed signature byte do not [2.42ms] (pass) jwt > padding bits of the last signature character do not count, like PocketBase's Go decoder [0.37ms] 53 pass 0 fail 186 expect() calls Ran 53 tests across 8 files. [458.00ms]