Skip to content

ci: make release tests post-GA-safe and exercise tags in CI #330

Description

@codeforester

Goal

Keep the canonical validation gate green in a normal clone after the v2.0.0 release, and make hosted CI exercise the same tag-aware repository state.

Background

tests/release.bats uses v2.0.0 as the supposedly unused candidate in four tests. The git stub delegates local-tag checks to real Git unless a test explicitly sets BASE_BASH_RELEASE_TEST_LOCAL_TAG=present. Now that v2.0.0 exists, a full tagged checkout sees the real tag and those fixtures fail. The hosted Tests workflow remains green because actions/checkout uses its default shallow/tag-light checkout, so CI does not reproduce the normal-clone gate.

This is a concrete post-GA follow-up to #215, not a request to change the immutable published tag.

Reproduction and evidence

Framework reference: 23797a73b2 on main, with local v2.0.0 tag present.

$ ./tests/validate.sh
not ok 8 release guard delegates real v2 GA publication after reviewed RC gates
not ok 9 release refs preflight accepts an unused candidate tag
not ok 11 release refs preflight rejects a conflicting remote tag
not ok 12 release refs preflight fails closed when origin cannot be inspected
...
Validation stage failed: BATS test suites (exit 1).

The remaining 556 BATS assertions pass. .github/workflows/tests.yml does not fetch full history/tags before running the same validation command.

Scope

  • Make each release test hermetic with respect to real local and remote tags.
  • Use an explicitly unused prerelease candidate where absence is the behavior under test, or have the stub fully own tag lookup.
  • Add a tag-aware/full-clone CI path so the canonical gate cannot be green only because tags are absent.
  • Retain explicit coverage for conflicting local tags, conflicting remote tags, and remote lookup failure.

Acceptance criteria

Validation

  • bats tests/release.bats
  • ./tests/validate.sh
  • A hosted run from a checkout that contains/fetches v2.0.0

Project fields

  • Status: Backlog
  • Priority: P1
  • Area: CI
  • Initiative: Adoption Polish
  • Size: S

Ownership

Metadata

Metadata

Assignees

Labels

ciContinuous integration, tests, automation, or release workflows

Type

No type

Projects

Status
Done

Relationships

None yet

Development

No branches or pull requests

Issue actions