Skip to content

[BUG] Bump stale cargo-binstall image-test pin (version-approval gate) #557

Description

@c-vigo

Description

test_cargo_binstall in tests/test_image.py pins the expected version to "1.19.", but upstream released cargo-binstall 1.20.0. The Containerfile installs the latest release at build time (releases/latest), so the image now ships 1.20.0 while the test still expects 1.19.. This fails the Image Tests / Test Summary checks on open Renovate PRs (#553-556) and on dev itself.

This is not a design flaw — it is the intended version-approval gate. The same pattern applies to gh, just, taplo, and other tools installed from releases/latest: EXPECTED_VERSIONS pins are a deliberate tripwire. When upstream drifts past the pin, CI goes red and a human must consciously bump the pin and record it in the CHANGELOG (see PRs #547, #523, #525).

Steps to Reproduce

  1. Upstream publishes a new cargo-binstall release (e.g. 1.20.0).
  2. Containerfile installs the latest release at build time.
  3. CI Image Tests job runs test_cargo_binstall.
  4. The hardcoded 1.19. pin no longer matches.

Expected Behavior

Image tests fail when an upstream version drifts past the pin, prompting a human-approved bump of EXPECTED_VERSIONS and a CHANGELOG entry.

Actual Behavior

AssertionError: Expected cargo-binstall 1.19., got: 1.20.0
assert '1.19.' in '1.20.0\n'

Environment

  • OS: CI (Ubuntu 24.04 host)
  • Container Runtime: Podman (testinfra)
  • Image Version/Tag: ghcr.io/vig-os/devcontainer:dev
  • Architecture: AMD64

Additional Context

Failing on PRs #553-556 (example job).

Follow-up: a single-source-of-truth versions file (Containerfile + tests + README) with Renovate-managed bumps would make the approval moment a reviewable PR rather than post-hoc breakage. See the linked follow-up issue.

Acceptance criteria:

  • Bump EXPECTED_VERSIONS["cargo-binstall"] from 1.19. to 1.20.
  • Record the bump in CHANGELOG.md
  • TDD compliance (see .cursor/rules/tdd.mdc)

Possible Solution

Bump the stale pin to 1.20. and document the version-gate intent. Longer term, centralize tool versions in a declarative file consumed by the Containerfile, tests, and README, with Renovate managing bumps.

Changelog Category: Fixed

Metadata

Metadata

Assignees

Labels

area:imageContainer image, Dockerfile, buildarea:testingTest infrastructure, BATS, pytestbugSomething isn't workingeffort:smallLess than 1 hourpriority:highShould be done in the current milestonesemver:patchBug fix, backward-compatible

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions