Skip to content

package: stop shipping test/ - #258

Open
thedavidmeister wants to merge 1 commit into
mainfrom
2026-09-21-issue-144-soldeerignore-test
Open

thedavidmeister wants to merge 1 commit into
mainfrom
2026-09-21-issue-144-soldeerignore-test

Conversation

@thedavidmeister

Copy link
Copy Markdown
Contributor

Closes #144

.soldeerignore excluded the whole harness config — /foundry.toml,
/remappings.txt, /dependencies, /soldeer.lock — but never test/, so the
package shipped the .t.sol suite and the test/concrete/ fixtures. Those
files import forge-std-1.16.1/src/Test.sol and root-rooted src/... paths
that the package no longer declares, so they cannot compile where they land.

Confirmed with forge soldeer push --dry-run in this branch's worktree: the
zip's top level goes from

.audit  LICENSE  LICENSES  README.md  src  test

to

.audit  LICENSE  LICENSES  README.md  src

Safe today. The published test/ tree is already unusable from the package —
its forge-std and src/ remappings are excluded — so nothing can be importing
it, and the one known consumer, rain.factory.deploy, imports only
rain-factory-0.1.9/src/... and keeps its own test/src/concrete/TestCloneable.sol.

The second half of the issue is the release signal: test/ sits inside the
autopublish content hash, so a test-only merge republishes. 8cb4bf0 (two test
files) became 0.1.21 and 34506fc (three test files) became 0.1.22, neither
touching src/, while the audit/-only 7aa7666 correctly published nothing.
After this, a rain-factory revision exists only when the published surface
moved.

.soldeerignore is also #171's and #172's file. Each stands alone; #171 removes
the line directly below this insertion, so whichever merges second needs a
trivial conflict resolution.

QA

  • Discriminating tests: n/a - what the publish step packages is not reachable
    from the forge suite. The before/after dry-run zips above are the
    discriminating evidence.
  • Mutations applied: n/a - no src/ or test/ change, so there is no behaviour
    to mutate. The repo's own test/ tree is untouched; only whether it is
    published changes.
  • Oracle: the zip forge soldeer push --dry-run actually produces, plus
    rain.factory.deploy's imports at @main as the live consumer, rather than
    an assumption about who might import a fixture.
  • Category check: the issue asks for (A) uncompilable test sources in the
    package and (B) republishing on test-only merges; covered A,B by one entry,
    since both follow from test/ being inside the published content. The claim
    that no consumer depends on the shipped fixtures was checked against the
    consumer rather than assumed: every rain-factory-* import in
    rain.factory.deploy is src/.

🤖 Generated with Claude Code

The published test tree cannot resolve its forge-std or src/ imports, and it
sits inside the content hash, so a test-only merge minted a revision.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@thedavidmeister thedavidmeister self-assigned this Sep 21, 2026
@coderabbitai

coderabbitai Bot commented Sep 21, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 37 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: e0b76729-2cbc-46a2-be91-1edec97f5651

📥 Commits

Reviewing files that changed from the base of the PR and between 710dff5 and b9c3e6a.

📒 Files selected for processing (1)
  • .soldeerignore

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[F40] [LOW] .soldeerignore does not exclude test/, so the published package ships uncompilable test sources and republishes on every test-only merge

1 participant