✔ isRunId accepts the run id shape and nothing else (0.997986ms)
✔ a missing data root or runs directory lists nothing (1.607466ms)
✔ runs as a regular file lists nothing, as before (0.66625ms)
✔ listRunIds keeps r- names only, sorted oldest first (2.247012ms)
✔ listRunRecords returns each result, or null for an incomplete or unreadable one (2.325328ms)
✔ readRunRecord returns documents and artifacts in directory order (1.518989ms)
✔ readRunRecord is null for a missing run, a dangling link or a file (0.91467ms)
✔ readRunRecord and readRunDocument refuse an invalid run id before touching the disk (0.688117ms)
✔ readRunDocument reads only the three run documents (0.679207ms)
✔ a link inside the data root is followed (1.094892ms)
✖ a data root that is itself a link is trusted as configured (0.717025ms)
✔ a run directory linked out of the data root is never read (0.971395ms)
✔ a document linked out of the data root reads as null (1.253566ms)
✔ a runs directory linked out of the data root refuses (0.793626ms)
✔ a relative link that climbs out of the data root refuses (0.713461ms)
✔ a sibling whose name starts with the data root's name is outside it (0.825603ms)
✔ a link loop refuses instead of reading as missing (0.703219ms)
✔ an unreadable runs directory refuses instead of listing nothing (0.451785ms)
✔ an unreadable run directory refuses instead of reading as missing (0.578206ms)
✔ a link to the data root's parent is outside it (0.386068ms)
✔ listRunIds sorts whatever order the directory returns (0.739358ms)
✔ listRunRecords lists an r- name that isn't a valid run id, as before (0.531107ms)
✔ the readers write nothing (1.843235ms)
✔ no pointer is null (1.972129ms)
✔ the pointer release.sh writes reads back (1.24273ms)
✔ a pointer that isn't the version 1 shape refuses with exit 2 (1.770283ms)
✔ a pointer that is a directory refuses with exit 4 (0.565257ms)
✔ a state file linked out of the data root refuses (1.498773ms)
✔ a state directory linked out of the data root refuses (0.660361ms)
✔ a state directory linked out to nothing reads as no release and an empty log (0.59035ms)
✔ a missing log is empty (0.482079ms)
✔ the log reads oldest first and counts malformed lines (1.084198ms)
✔ last must be a positive integer (0.634979ms)
✔ the state readers write nothing (0.860207ms)
✔ list prints each run in the established format (87.530195ms)
✔ show prints the run in the established format (78.052145ms)
✔ show of a missing run and an invalid id exit 4 as before (114.872261ms)
✔ list and show refuse a runs directory linked out of the data root (200.792804ms)
✔ show refuses a run linked out of the data root; list reports it unknown (194.493903ms)
✔ list shows an r- name that isn't a valid run id, as before (129.049237ms)
✔ show refuses an invalid id before reading the config (48.628287ms)
ℹ tests 41
ℹ suites 0
ℹ pass 40
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 914.584975

✖ failing tests:

test at packages/runs/tests/runs.test.mjs:111:1
✖ a data root that is itself a link is trusted as configured (0.717025ms)
  Error [RunsError]: /home/jwoltje/darkwing-scratch/r56b/tmp/mosaic-runs-test-ZbqJkI/alias/runs resolves outside the data root (/home/jwoltje/darkwing-scratch/r56b/tmp/mosaic-runs-test-ZbqJkI/alias)
      at resolveInside (file:///home/jwoltje/darkwing-scratch/r56b/mutwt/packages/runs/src/paths.mjs:33:11)
      at listRunIds (file:///home/jwoltje/darkwing-scratch/r56b/mutwt/packages/runs/src/runs.mjs:20:16)
      at listRunRecords (file:///home/jwoltje/darkwing-scratch/r56b/mutwt/packages/runs/src/runs.mjs:44:10)
      at TestContext.<anonymous> (file:///home/jwoltje/darkwing-scratch/r56b/mutwt/packages/runs/tests/runs.test.mjs:116:20)
      at Test.runInAsyncScope (node:async_hooks:226:14)
      at Test.run (node:internal/test_runner/test:1402:25)
      at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
      at Test.postRun (node:internal/test_runner/test:1542:19)
      at Test.run (node:internal/test_runner/test:1467:12)
      at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
    exitCode: 4
  }
