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]

Options

--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 --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.

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.