tcmts.cli.test.e2e.releases

Server

codebase (name: string) => { dir: string; run: (...args: string[]) => { status: number | null; out: string; …
onFakeNetwork (keep: Keep, net: FakeAtproto) => { home: string; run: (dir: string, ...args: string[]) => Promise<…
Running tcm on the fake network: identities looked up on it, sign-ins kept in a directory of the test's own, and a browser that follows the sign-in page's redirect back to tcm, as if the person had said yes. Each run is alongside this process (a spawnSync would stop the fake network answering): `run` says how it ended, `ok` insists it worked.

Tests

testPackCarriesItsOwnCopy () => void
what a package has its own name for is its own, even where another package has the same definition
testPackageReleases () => void
a package's releases: versions from the changes, notes from the codebase, drafts for the words
testPackagesCarryWhatSiblingsKeep () => void
A package carries what it uses of a sibling package that the sibling keeps to itself (doesn't export): two packages of one codebase share code without either publishing it. What the sibling does export still comes from its release.
testPackagesDependThroughReleases () => void
packages depend on each other through their releases
testReleasesAnnounced () => Promise<void>
`tcm release --announce`: signed in once in the browser (the loopback OAuth client, against a fake network), the release's record is written to the author's repository, naming the namespace hash `tcm lib add` mounts; the sign-in is kept (and refreshed) for next time, as are the sources; a version is one record.
testReleasesTravelAndNeverChange () => void
releases travel with push and pull, list the contributions that touched them, and never change
testSemverChecks () => void
semver checks: each kind of API change, the lint it trips and the version it calls for
testSemverLintsDocumented () => void
every semver lint is documented