test_fixtures: publish to crates.io in the lockstep release set - #529
Conversation
rainlang_test_fixtures has been git-only (publish = false since its init commit). It's a leaf test-fixtures crate consumed by raindex via a git rev pin — the last git dependency blocking raindex's move to a fully crates.io / soldeer dependency tree (raindex #2593). Make it publishable and add it to the lockstep release set so it stays version-aligned with the bindings/dispair/parser bytecode it wraps: - drop `publish = false`, add version + description metadata - append `rainlang_test_fixtures` to package-release.yaml's crate list Merging this triggers the autopublish workflow, which bumps the whole lockstep set a patch and publishes (including the first rainlang_test_fixtures). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
📝 WalkthroughWalkthroughThe PR enables automated publication of the ChangesEnable test_fixtures crate publication
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Possibly related issues
Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/package-release.yaml:
- Line 13: Update the reusable workflow reference to pin it to the immutable
commit SHA instead of the mutable branch: replace the uses value "uses:
rainlanguage/rainix/.github/workflows/rainix-autopublish.yaml@main" with the
same path suffixed by the commit SHA "c5b581af819cddbbd18a2eadbc2754782f49d4b0"
so the workflow is invoked as "uses:
rainlanguage/rainix/.github/workflows/rainix-autopublish.yaml@c5b581af819cddbbd18a2eadbc2754782f49d4b0".
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: e2949866-7a91-4b7f-b8c1-195a2b7d35b1
📒 Files selected for processing (2)
.github/workflows/package-release.yamlcrates/test_fixtures/Cargo.toml
| # changing any member republishes the others with matching version pins, via | ||
| # the PUBLISH_PRIVATE_KEY deploy key. test_fixtures depends on none of the | ||
| # others but is released in lockstep so its embedded bytecode stays in sync. | ||
| uses: rainlanguage/rainix/.github/workflows/rainix-autopublish.yaml@main |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify current SHA behind main before pinning.
gh api repos/rainlanguage/rainix/commits/main --jq '.sha'Repository: rainlanguage/rainlang
Length of output: 106
Pin the reusable workflow to an immutable commit SHA.
@main is mutable; pin rainix-autopublish.yaml to the current upstream main commit (c5b581af819cddbbd18a2eadbc2754782f49d4b0) to strengthen supply-chain integrity.
Suggested change
- uses: rainlanguage/rainix/.github/workflows/rainix-autopublish.yaml@main
+ uses: rainlanguage/rainix/.github/workflows/rainix-autopublish.yaml@c5b581af819cddbbd18a2eadbc2754782f49d4b0📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| uses: rainlanguage/rainix/.github/workflows/rainix-autopublish.yaml@main | |
| uses: rainlanguage/rainix/.github/workflows/rainix-autopublish.yaml@c5b581af819cddbbd18a2eadbc2754782f49d4b0 |
🧰 Tools
🪛 zizmor (1.25.2)
[error] 13-13: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)
(unpinned-uses)
[warning] 13-13: secrets unconditionally inherited by called workflow (secrets-inherit): this reusable workflow
(secrets-inherit)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/package-release.yaml at line 13, Update the reusable
workflow reference to pin it to the immutable commit SHA instead of the mutable
branch: replace the uses value "uses:
rainlanguage/rainix/.github/workflows/rainix-autopublish.yaml@main" with the
same path suffixed by the commit SHA "c5b581af819cddbbd18a2eadbc2754782f49d4b0"
so the workflow is invoked as "uses:
rainlanguage/rainix/.github/workflows/rainix-autopublish.yaml@c5b581af819cddbbd18a2eadbc2754782f49d4b0".
Source: Linters/SAST tools
|
Reviewed 7e39ad8: metadata (version + description) and lockstep |
|
@coderabbitai assess this PR size classification for the totality of the PR with the following criterias and report it in your comment: S/M/L PR Classification Guidelines:This guide helps classify merged pull requests by effort and complexity rather than just line count. The goal is to assess the difficulty and scope of changes after they have been completed. Small (S)Characteristics:
Review Effort: Would have taken 5-10 minutes Examples:
Medium (M)Characteristics:
Review Effort: Would have taken 15-30 minutes Examples:
Large (L)Characteristics:
Review Effort: Would have taken 45+ minutes Examples:
Additional Factors to ConsiderWhen deciding between sizes, also consider:
Notes:
|
|
Tip For best results, initiate chat on the files or code changes. SIZE=S |
Why
rainlang_test_fixtureshas been git-only (publish = falsesince its init commit). It's a leaf test-fixtures crate consumed only by raindex, via a git rev pin — and it's the last git dependency blocking raindex's move to a fully crates.io / soldeer dependency tree (raindex #2593; the root git deps and submodules there are already done).Publishing it — rather than vendoring a copy into raindex — keeps the fixtures version-aligned with the same DISPAIR + parser bytecode they wrap, which lives in
rainlang_bindings/rainlang_parser(already in this lockstep set, and which raindex pins as "the same rainlang rev family"). Vendoring would split a member out of that family and reintroduce drift.Change
crates/test_fixtures/Cargo.toml: droppublish = false, addversion = "0.1.0"+description(matches therainlang_bindingsmetadata shape;license/homepage/editionalready inherit from the workspace).package-release.yaml: appendrainlang_test_fixturesto the lockstepcrates:list. It depends on none of the other members (onlyalloy+getrandom, both crates.io), so it's appended last.Effect of merging
The autopublish workflow detects the new/changed crate and bumps the entire lockstep set one patch, republishing
rainlang_bindings/rainlang_dispair/rainlang_parser/rainlang-evalat +1 and publishingrainlang_test_fixturesfor the first time. That family-wide bump is expected lockstep behavior.Publish-readiness verified: the dependency closure is crates.io-clean (
alloy = "1.0.9", no git deps), and the sibling crates already publish from this workspace.Follow-up (separate raindex PR, after this publishes): swap raindex's
crates/test_fixturesgit dep to the publishedrainlang_test_fixturesversion, closing #2593.Summary by CodeRabbit