Skip to content

ci(perf): cache the bashunit download in CI #29

Description

@Chemaclass

Context

tests.yml installs bashunit every run via bash install-dependencies.sh (re-downloads the pinned version). No actions/cache — verified.

Scope

  • Add actions/cache keyed on the pinned bashunit version (from install-dependencies.sh / BASHUNIT_VERSION) around lib/.
  • Cache miss falls back to the existing install step.

Boundary

Files: .github/workflows/tests.yml only. Coordinate with the workflow-consolidation issue (#TBD) — do whichever merges first, then rebase the other.

Acceptance criteria

  • Warm CI run restores bashunit from cache (no re-download)
  • Cache key changes when the pinned version bumps
  • Tests still green on both ubuntu and macos

Constraints (apply to all bashdep work)

  • Bash 3.2+ compatible — no declare -A, ${var,,}/${var^^}, mapfile, negative array index, &>>.
  • Zero runtime deps beyond curl/wget/awk/mktemp/mkdir/rm/cp/mv/printf/cat/grep/sort/tr/dirname/basename + shell builtins.
  • TDD: write the failing test first (tests/unit/*_test.sh), then implement; keep make test green for the right reason. Mock curl/wget — no network in tests.
  • Quality gate: make test && make sa && make lint must all pass.
  • Update docs/api.md / docs/behavior.md when public API or semantics change; add a CHANGELOG.md ## [Unreleased] entry for any user-visible change.
  • Conventional commits (ref: for refactors); never mention AI/automation. One PR per issue, assigned to Chemaclass.

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions