Skip to content

4.1.1 follow-up: tests and documentation for Kani shell scripts #307

@coderabbitai

Description

@coderabbitai

Follow-up from PR #305

The Kani tooling and local smoke targets introduced in #305 require automated tests and improved documentation for the new shell scripts and Makefile targets.

Note: Tests for shell scripts must be written in Python using pytest and pytest-bdd (where appropriate), using:


❌ Errors

1. Testing (Overall)

Substantial functionality was added (installer, version checks, Makefile targets) with only manual smoke validation. No automated tests prevent future regressions or catch broken implementations.

Resolution: Add tests for:

  • scripts/install-kani.sh — version format validation, missing-file handling
  • scripts/check-kani-version.sh — version mismatch detection, missing pin file, malformed version output
  • Makefile targets (kani, kani-full, formal-pr) via shell integration tests

2. Module-Level Documentation

New Bash scripts contain only single-line doc comments. The project requires comprehensive header comments explaining purpose, utility, function, and relationships to other components.

Resolution: Expand module-level documentation in:

  • scripts/install-kani.sh
  • scripts/check-kani-version.sh

Each script's header must cover: purpose, utility, function, parameters, exit codes, and Makefile integration.


⚠️ Warnings

3. Docstring Coverage

Docstring coverage is 0.00%, below the required threshold of 80.00%.

Resolution: Write docstrings for all functions in the new scripts (at minimum fail() and require_command() in scripts/install-kani.sh).

4. Testing (Unit and Behavioural)

PR adds Makefile targets and shell scripts for command-line execution but provides no tests for them. The project requires tests for system-level behaviour changes.

Resolution: Add tests covering:

  • Shell scripts' error paths (e.g., missing cargo, malformed version pin, version mismatch)
  • Edge cases and invariants for check-kani-version.sh
  • Makefile target invocation and expected output

Raised by @leynos from review of #305.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions