Skip to content

refactor: Migrate dry-json prysk tests to Rust + insta snapshots#12010

Merged
anthonyshew merged 2 commits into
mainfrom
shew/migrate-dry-json-to-insta
Feb 26, 2026
Merged

refactor: Migrate dry-json prysk tests to Rust + insta snapshots#12010
anthonyshew merged 2 commits into
mainfrom
shew/migrate-dry-json-to-insta

Conversation

@anthonyshew

Copy link
Copy Markdown
Contributor

Summary

  • Converts all 6 dry-json/ prysk .t files to pure Rust integration tests using assert_cmd + insta
  • Prysk test count drops from 151 to 145
  • Prysk is completely off the path for these tests — they run via cargo nextest run --test dry_json

What changed

Old (.t file) New (Rust test) Assertions
monorepo.t test_monorepo_* (6 tests) globalCacheInputs, top-level keys, turboVersion format, my-app#build task, util#build task, NODE_ENV env var hashing, missing task error
monorepo-no-changes.t test_monorepo_no_changes_packages packages list is ["//"] when filtering to [main]
single-package.t test_single_package_dry_json Full JSON structure with exact task hash
single-package-no-change.t test_single_package_no_change packages: null when no changes
single-package-no-config.t test_single_package_no_config Works without turbo.json
single-package-with-deps.t test_single_package_with_deps Two tasks (build + test) with dependency chain

All turbo-produced hashes are pinned exactly in snapshots (e.g., task hash 99180a8fe2df621b matches the old .t file). Only genuinely non-deterministic values are redacted: run ID, turbo version string, OS user, and git SHA/branch.

Other fixes

  • Fixes setup_package_manager to place corepack install directory outside the project tree (as a sibling temp dir), matching prysk shell behavior. Previously, corepack shims leaked into turbo's task inputs and changed hashes.
  • Enables insta's redactions feature.

How to verify

cargo nextest run --test dry_json -p turbo

Convert all 6 dry-json .t files to pure Rust integration tests using
assert_cmd and insta::assert_json_snapshot. The prysk test count
drops from 151 to 145.

Each test uses the Rust fixture setup and runs turbo directly via
assert_cmd. Turbo-produced hashes are pinned exactly in snapshots
(not redacted). Only genuinely non-deterministic values are redacted:
run ID, turbo version string, OS user, and git SHA/branch.

Also fixes setup_package_manager to place corepack install directory
outside the project tree (matching the prysk shell behavior) so
corepack shims don't leak into task inputs.
@anthonyshew anthonyshew requested a review from a team as a code owner February 26, 2026 16:39
@anthonyshew anthonyshew requested review from tknickman and removed request for a team February 26, 2026 16:39
@vercel

vercel Bot commented Feb 26, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
examples-basic-web Building Building Preview, Comment, Open in v0 Feb 26, 2026 4:52pm
examples-designsystem-docs Ready Ready Preview, Comment, Open in v0 Feb 26, 2026 4:52pm
examples-gatsby-web Ready Ready Preview, Comment, Open in v0 Feb 26, 2026 4:52pm
examples-kitchensink-blog Ready Ready Preview, Comment, Open in v0 Feb 26, 2026 4:52pm
examples-nonmonorepo Ready Ready Preview, Comment, Open in v0 Feb 26, 2026 4:52pm
examples-svelte-web Ready Ready Preview, Comment, Open in v0 Feb 26, 2026 4:52pm
examples-tailwind-web Ready Ready Preview, Comment, Open in v0 Feb 26, 2026 4:52pm
examples-vite-web Ready Ready Preview, Comment, Open in v0 Feb 26, 2026 4:52pm
turbo-site Ready Ready Preview, Comment, Open in v0 Feb 26, 2026 4:52pm
turborepo-agents Ready Ready Preview, Comment, Open in v0 Feb 26, 2026 4:52pm
turborepo-test-coverage Ready Ready Preview, Comment, Open in v0 Feb 26, 2026 4:52pm

Comment thread crates/turborepo/tests/common/setup.rs Outdated
with_file_name("corepack") replaced the unique tempdir suffix,
causing all parallel tests to share /tmp/corepack. Use the tempdir
name as a prefix instead so each test gets its own corepack dir.
@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

Metric Coverage
Lines 77.35%
Functions 48.79%
Branches 0.00%

View full report

@anthonyshew anthonyshew merged commit 2606f3f into main Feb 26, 2026
77 of 79 checks passed
@anthonyshew anthonyshew deleted the shew/migrate-dry-json-to-insta branch February 26, 2026 18:38
github-actions Bot added a commit that referenced this pull request Feb 27, 2026
## Release v2.8.12-canary.3

Versioned docs: https://v2-8-12-canary-3.turborepo.dev

### Changes

- fix: Prevent peerDependencies from overwriting concrete dependency
specifiers (#12004) (`a038409`)
- ci: Trigger prysk integration tests via `cargo nextest` (#11999)
(`2053ede`)
- release(turborepo): 2.8.12-canary.2 (#12005) (`dccfdf0`)
- fix: Resolve correct nested package version in bun lockfile pruning
(#12008) (`95dff45`)
- refactor: Replace shell-based fixture setup with pure Rust (#12006)
(`a743e38`)
- fix: Resolve all lockfile pruning test failures (#12009) (`21dcaed`)
- perf: Extract query module into turborepo-query crate (#12007)
(`0604379`)
- refactor: Migrate dry-json prysk tests to Rust + insta snapshots
(#12010) (`2606f3f`)
- perf: Deduplicate petgraph, fixedbitset, and dashmap (#12011)
(`9b11ef6`)
- refactor: Migrate persistent-dependencies and task-dependencies to
Rust + insta (#12012) (`9aab7b5`)
- test: Add lockfile-tests fixture for issue #12013 (#12014) (`bae81f7`)
- perf: Remove libgit2/git2 dependency, replace with gix-object (#12015)
(`fbf50e5`)
- refactor: Migrate daemon, jsonc, query, edit-turbo-json tests to Rust
(#12016) (`bf730d5`)
- perf: Remove async-graphql from turborepo-lib (#12017) (`7c8a4a0`)
- refactor: Migrate inference and run-logging tests to Rust (#12018)
(`dc4f922`)
- refactor: Migrate run-caching and strict-env-vars tests to Rust
(#12020) (`c07645d`)
- fix: Mark lockfile-aware-caching/bun prysk test as flaky (#12021)
(`c60f0c1`)
- fix: Add nextest retries for flaky tests (#12027) (`9d90270`)
- refactor: Migrate prune and run-summary tests to Rust (#12022)
(`329bdb5`)
- ci: Increase Rust test partitions from 4 to 10 (#12028) (`0c1bd47`)
- fix: Add nextest retries for flaky prysk tests (#12030) (`9b66431`)
- ci: Use larger runners for macOS Rust tests (#12029) (`9479a54`)
- fix: Add nextest retries for flaky
prune_test::test_prune_composable_config (#12032) (`b47e099`)
- fix: Suppress npm upgrade notices in Rust integration tests (#12033)
(`f698b04`)
- ci: Disable flaky Rust unit tests from release pipeline (#12034)
(`829b351`)

---------

Co-authored-by: Turbobot <turbobot@vercel.com>
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.

1 participant