testNameHistoryFollowsOneName
A definition's history: the entries that changed what its name points at, newest first, read down the name's path in each entry.
import type { Codebase } from "#codebase/tcmts/cli/codebase"; import { nameHistory, shareCache } from "#codebase/tcmts/share"; import { storyStore } from "#codebase/tcmts/share/test"; import assert from "node:assert/strict"; export const testNameHistoryFollowsOneName = () => { const { store, entries } = storyStore(); const s = { cb: { store } as unknown as Codebase, cache: shareCache() }; const changes = (name: string) => nameHistory(s, name).map((e) => `${entries.indexOf(e.causal)} ${e.change}`); assert.deepEqual(changes("lib.a"), ["5 changed", "1 changed", "0 added"]); assert.deepEqual(changes("lib.c"), ["6 removed", "1 changed", "0 added"]); assert.deepEqual( changes("lib.T"), ["4 changed", "0 added"], "a type beside a value of its name is the name's too", ); assert.deepEqual(changes("lib.sub.s"), ["2 added"]); }