Skip to content

rc-test.sh

Multi-Pass Layout Integration Test Suite aligned for single distribution zip archives

Browse Docs pages

Overview

Multi-Pass Layout Integration Test Suite aligned for single distribution zip archives

Source: bones/scripts/rc-test.sh.

Usage

rotkeeper.sh test|smoke [--dry-run | --site]

Options

--site         Build and enforce Help/Docs gates in the current checkout
--dry-run      Run only the removed-command regression checks
--help, -h     Show help
--version, -v  Show version and quit

Examples

bash rotkeeper.sh test               # Full multi-layout harness matrix
bash rotkeeper.sh test --site        # Build/check the deployable help site
bash rotkeeper.sh test --dry-run     # Removed-command regressions only

Exit codes

0         All harness assertions passed
nonzero   A harness assertion failed (the code identifies the suite)

Reads and writes

Environment: reads OUTPUT_DIR, RK_OLIVER_BIN, RK_RENDERER, ROOT_DIR, ROTKEEPER_VERSION, SCRIPT_DIR, VERSION (canonical via rc-env.sh / rk_load_env); overrides RK_OLIVER_BIN, RK_RENDERER, ROTKEEPER_VERSION when set.

Working directory: No CWD assumption โ€” all paths are root-relative via ROOT_DIR/BONES_DIR/CONTENT_DIR/etc. derived from rc-env.sh; helpers rk_canonical_path/rk_canonical_or_raw resolve symlinks/portably.

Inputs and outputs: full test builds crypt/busy/sterile fixtures under bones/tmp/rotkeeper-test-env, runs the pipeline, verifies canonical release contents and absent legacy tiers, and checks renderer, JSON, command, DIP, and removed-command contracts. Reads the release version from bones/config/version or ROTKEEPER_VERSION; requires jq and the tested commands dependencies. EXIT/INT/TERM cleanup removes fixtures only through rk_guard_delete. --dry-run runs only the ingest/sync-inbox/cleanup/reseed removal checks, not the full matrix. The full harness also generates the fsbook retrieval catalog. Report macOS realpath -m portability failures without weakening assertions.

Side effects

Notes

Design

Bash integration harness shared by the dispatcher test and smoke commands. Creates crypt, busy, and sterile fixtures beneath bones/tmp/rotkeeper-test-env, exercises initialization, rendering, packaging, scanning, and release, and checks output pruning, archive integrity, metadata/template contracts, documentation navigation, and command help/version behavior. Includes isolated DIP generation and migration fixtures and removed-command regressions.

The full run also builds a disposable copy of the tracked working site and enforces the Help/Docs quality gates. Fifteen isolated corruptions prove failures for placeholders, links, accessibility, sidecars, generated command coverage, page structure, authored guides, and degraded DIP inputs. test --site runs the same build and gates in the current checkout, without the fixture matrix. CI and publication use this mode to check the actual deployable artifact. It regenerates source references and the DIP matrix.

Limits

Uses fixture Oliver executables for adapter contracts, with real-renderer smoke, CommonMark, XHTML, and template-golden checks when an executable Oliver is available. RK_STRICT=1 makes specified missing real-renderer checks, fixtures, or XML tooling fatal rather than skipped. The dry-run mode runs only the removed-command regressions; it is not a preview of the full matrix. Dry-run payload non-mutation assertions compare file counts, not all file contents.

The isolated scaffold contract checks Markdown, Textile, and Cooklang sidecars in every layout, including null review fields, dry-run non-publication, and preservation of existing sidecars. It also checks that glue does not merge the dispatcher's file sidecar into the content-root index.

Cautions

The full run generates the filesystem catalog in the working repository as well as temporary fixtures, so its effects are not limited to fixture files. RK_REGEN_TEMPLATE_GOLDENS=1 deliberately rewrites checked-in goldens during the crypt pass; review those changes before committing. Fixture cleanup uses the shared deletion guard. A passing fixture adapter is not proof of real CommonMark fidelity; report platform/tool failures rather than weakening assertions.

History

No matching entries in CHANGELOG.md.