Skip to content

ci: run clippy as a single-OS job and add it to the pre-push hook#12389

Merged
zkochan merged 2 commits into
mainfrom
fix-pacquet-clippy-ci
Jun 13, 2026
Merged

ci: run clippy as a single-OS job and add it to the pre-push hook#12389
zkochan merged 2 commits into
mainfrom
fix-pacquet-clippy-ci

Conversation

@zkochan

@zkochan zkochan commented Jun 13, 2026

Copy link
Copy Markdown
Member

What

After #12299 merged, the Pacquet CI Clippy step failed on main with a clippy::needless_pass_by_value lint in a pnpr integration test. This PR fixes that lint and closes the two process gaps that let it reach main.

Why it slipped through

  • Clippy wasn't in the pre-push hook. pacquet/scripts/pre-push-rust.sh ran rustfmt, taplo, cargo doc, and cargo dylint — but never cargo clippy. So a clippy lint could only be caught in CI.
  • A local cargo clippy -p <crate> doesn't catch it. The failing lint only fires under --all-targets (it's in a tests/ crate). Without that flag, integration-test lints are invisible locally.

Changes

  1. Fix the lint (pnpr/crates/pnpr/tests/batch_publish.rs): the put_json / put_json_with_token test helpers took the JSON body by value but only borrowed it for serde_json::to_vec. Take &Value instead (also drops an unnecessary body.clone()).

  2. Add clippy to the pre-push hook with the load-bearing --all-targets --workspace -- -D warnings, so the same lint CI runs is enforced before a push.

  3. Run clippy as its own single-OS job. Clippy was a step inside the three-OS Lint and Test matrix, so it ran once per OS (windows + ubuntu + macos) even though it lints the same platform-independent source each time. Move it to a dedicated ubuntu-latest job, mirroring the existing single-OS doc, format, and dylint jobs. Platform-gated #[cfg] blocks are still type-checked per-OS by the matrix test build.

  4. Update the pacquet/AGENTS.md description of what the hook checks.

Verification

Locally, all pre-push Rust gates pass on this branch: cargo fmt --check, cargo clippy --all-targets --workspace -- -D warnings, cargo doc -D warnings, and cargo dylint. The batch_publish integration tests still pass (8/8).

Notes

  • No changeset: this only touches pnpr test code, CI, the git hook, and docs — no published package change.

Written by an agent (Claude Code, claude-opus-4-8).

Summary by CodeRabbit

  • Chores

    • Reorganized code quality checks in CI pipeline with dedicated Clippy job
    • Added Clippy linting to pre-push development workflow
  • Documentation

    • Updated development workflow documentation to reflect Clippy requirements

zkochan added 2 commits June 13, 2026 20:05
The put_json/put_json_with_token test helpers took the JSON body by
value but only borrowed it for serde_json::to_vec, tripping clippy's
needless_pass_by_value under --all-targets. Take &Value instead, which
also drops an unnecessary body.clone() at one call site.
Clippy was a step inside the three-OS Lint-and-Test matrix, so it ran
once per OS even though it lints the same platform-independent source
each time. Move it to its own ubuntu-only job, mirroring the existing
single-OS doc, format, and dylint jobs (platform-gated cfg blocks are
still type-checked per-OS by the test build).

It was also missing from pacquet/scripts/pre-push-rust.sh, so a clippy
lint that only fires under --all-targets — like the one that just
reached main — slipped past local pushes and surfaced only in CI. Add
the same --all-targets workspace clippy gate to the hook.
@coderabbitai

coderabbitai Bot commented Jun 13, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 369362b9-1449-45e4-abc2-515f7950011e

📥 Commits

Reviewing files that changed from the base of the PR and between f1521cf and 54152ca.

📒 Files selected for processing (4)
  • .github/workflows/pacquet-ci.yml
  • pacquet/AGENTS.md
  • pacquet/scripts/pre-push-rust.sh
  • pnpr/crates/pnpr/tests/batch_publish.rs
📜 Recent review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: ubuntu-latest / Node.js 24 / Test
  • GitHub Check: Lint and Test (windows-latest)
  • GitHub Check: Lint and Test (macos-latest)
  • GitHub Check: Lint and Test (ubuntu-latest)
  • GitHub Check: Run benchmark on ubuntu-latest
  • GitHub Check: Code Coverage
🧰 Additional context used
📓 Path-based instructions (2)
pacquet/**/AGENTS.md

📄 CodeRabbit inference engine (pacquet/CLAUDE.md)

Document agent functionality and interactions in AGENTS.md

pacquet/**/AGENTS.md: Document agent responsibilities, capabilities, and interactions in AGENTS.md file
Maintain clear and up-to-date documentation of all agent definitions and their purposes
Include agent capabilities, input/output specifications, and integration guidelines in agent documentation

Files:

  • pacquet/AGENTS.md
pnpr/**/pnpr/**/*.rs

📄 CodeRabbit inference engine (pnpr/AGENTS.md)

pnpr/**/pnpr/**/*.rs: Follow the pacquet code-style guide (../pacquet/CODE_STYLE_GUIDE.md) for Rust-level conventions including imports, naming, ownership, and error handling
Follow the pacquet contributing guide (../pacquet/CONTRIBUTING.md) for test layout and Rust conventions

Files:

  • pnpr/crates/pnpr/tests/batch_publish.rs
🧠 Learnings (4)
📓 Common learnings
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Match how the same feature is implemented in the TypeScript pnpm CLI — behavior, flags, defaults, error codes, file formats, and directory layout must match pnpm exactly
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Read and understand the equivalent code in TypeScript pnpm workspaces before writing code for a feature, bug fix, or behavior change, and port the behavior faithfully with preference for structural similarity
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Do not invent behavior that pnpm does not have, and do not fix pnpm quirks unless the same fix has landed in pnpm
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: When pnpm and pacquet disagree, pnpm is the source of truth — reconcile toward pnpm, not away from it
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: When citing code in comments, doc comments, Markdown docs, PR descriptions, or commit messages, link to a specific commit SHA (first 10 hex characters), never to a branch name, to ensure references remain permanent
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Follow CONTRIBUTING.md for commit message format, writing style, setup, and automated checks before committing
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Prefer renaming, restructuring, or extracting a helper over leaving a comment; reach for prose only when the right names and types genuinely cannot carry the information
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Shared helpers tend to live in crates/fs, crates/testing-utils, and crates/diagnostics — check there first before writing new code
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Keep dependencies at the right level — add a new dependency to the specific crate that needs it, not to the workspace root or to a shared crate unless multiple crates actually depend on it
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Match pnpm's error codes and messages where pnpm defines them — error codes are part of the public contract, not implementation detail
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: User-facing errors go through miette via the pacquet-diagnostics crate
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Keep commits focused — a bug fix commit should not also refactor or reformat unrelated code
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Reference the upstream pnpm commit/PR you ported from when applicable in commit messages
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Run just ready before pushing to ensure all automated checks pass (rustfmt, taplo, cargo clippy with --all-targets -D warnings, cargo doc with RUSTDOCFLAGS=-D warnings, cargo dylint)
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Use Conventional Commits with a scope naming the crate or area being touched; Pacquet adds 'bench' type for benchmark-only changes beyond the standard types
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Do not add features, flags, or behaviors that pnpm does not have
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Do not change lockfile format, store layout, .npmrc semantics, or CLI surface unless pnpm changed them first
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Do not add a dependency that is not already declared in [workspace.dependencies] in the root Cargo.toml without an explicit human request
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Do not disable lints, tests, or CI checks to make a PR green
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: When porting behavior from pnpm, port the relevant pnpm tests too as Rust tests whenever they translate; matching test coverage proves behavioral parity
Learnt from: CR
Repo: pnpm/pnpm

Timestamp: 2026-06-13T18:15:37.345Z
Learning: Consult plans/TEST_PORTING.md before adding ported tests and update its checkboxes as items land; follow conventions for known_failures modules, pacquet_testing_utils::allow_known_failure!, and temporarily breaking the subject under test to verify the ported test catches the regression
📚 Learning: 2026-05-14T17:38:34.573Z
Learnt from: zkochan
Repo: pnpm/pnpm PR: 11640
File: pacquet/AGENTS.md:1-6
Timestamp: 2026-05-14T17:38:34.573Z
Learning: In this repository, files named `AGENTS.md` are agent-guide instructions for AI coding tools (e.g., Claude Code/Codex/Cursor) following the agentsmd.net convention, not documentation of software agents or an agentic framework. When reviewing `**/AGENTS.md`, do not apply review rules intended for agentic-framework documentation (e.g., documenting agent capabilities, inputs/outputs, or integration points); instead, treat these files as tooling/assistive guidance for contributors.

Applied to files:

  • pacquet/AGENTS.md
📚 Learning: 2026-06-06T18:58:37.156Z
Learnt from: zkochan
Repo: pnpm/pnpm PR: 12243
File: pacquet/crates/package-manager/src/install_package_by_snapshot.rs:319-322
Timestamp: 2026-06-06T18:58:37.156Z
Learning: When reviewing Rust code, do not assume `matches!(expr, Pattern(_))` will move out of `expr` if `Pattern(_)` contains no by-value bindings. `matches!` desugars to a `match` that auto-borrows the scrutinee for discrimination, so even if `expr` is a non-`Copy` value behind a shared reference (e.g., `&T`), the macro should not move-out of the borrowed data purely due to `matches!`. Treat `matches!(&expr, Pattern(_))` as a readability/clarity improvement, not a correctness requirement. Only flag potential move-out-of-borrow risks when the pattern includes by-value bindings that would require moving the matched value.

Applied to files:

  • pnpr/crates/pnpr/tests/batch_publish.rs
📚 Learning: 2026-06-12T20:41:57.558Z
Learnt from: zkochan
Repo: pnpm/pnpm PR: 12364
File: pacquet/crates/package-manager/src/install/tests.rs:5717-5717
Timestamp: 2026-06-12T20:41:57.558Z
Learning: In the pnpm/pnpm Rust workspace (toolchain Rust 1.95.0), keep using `std::time::Duration::from_mins(...)` and `std::time::Duration::from_hours(...)` as-is. Do not flag these as invalid or suggest replacing them with `Duration::from_secs(...)`, because Clippy’s `clippy::duration_suboptimal_units` lint is denied by `-D warnings` in CI, and changing to seconds may trigger CI failures.

Applied to files:

  • pnpr/crates/pnpr/tests/batch_publish.rs
🪛 Shellcheck (0.11.0)
pacquet/scripts/pre-push-rust.sh

[info] 24-24: Expressions don't expand in single quotes, use double quotes for that.

(SC2016)

🔇 Additional comments (6)
.github/workflows/pacquet-ci.yml (2)

73-77: LGTM!


130-158: LGTM!

pacquet/scripts/pre-push-rust.sh (1)

18-26: LGTM!

pacquet/AGENTS.md (1)

383-385: LGTM!

pnpr/crates/pnpr/tests/batch_publish.rs (2)

34-39: LGTM!

Also applies to: 41-47


59-59: LGTM!

Also applies to: 109-113, 181-185, 224-224, 245-245, 279-279, 295-295, 310-310, 324-328, 333-333


📝 Walkthrough

Walkthrough

The PR restructures Clippy linting by moving it from the main CI test job to a dedicated job, adds matching Clippy checks to the local pre-push script, documents these changes, and refactors test helpers to accept borrowed JSON references instead of owned values.

Changes

Clippy CI and Local Check Alignment

Layer / File(s) Summary
CI job restructuring
.github/workflows/pacquet-ci.yml
The test job removes Clippy from its toolchain install and removes the inline Clippy step. A new clippy job runs on ubuntu-latest, includes disk-space setup, installs Rust with Clippy enabled, and executes cargo clippy --locked --workspace --all-targets -- -D warnings. Disk-space cleanup comments are updated to reflect nextest artifact cleanup only.
Pre-push script and documentation
pacquet/scripts/pre-push-rust.sh, pacquet/AGENTS.md
The pre-push script adds a cargo clippy --all-targets --workspace -- -D warnings gate immediately after cargo fmt, mirroring the CI behavior and failing the push on lints. Documentation lists this new check in the pre-push hook's checks.

Test Helper JSON Borrowing

Layer / File(s) Summary
Helper function signature updates
pnpr/crates/pnpr/tests/batch_publish.rs
The put_json and put_json_with_token helpers are updated to accept &Value instead of owned Value, serializing the borrowed reference when building the request.
Test call site updates
pnpr/crates/pnpr/tests/batch_publish.rs
All test cases pass JSON payloads by reference (&body, &first, &second) instead of moving owned values. Several request constructions are reformatted into chained builder style.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

  • pnpm/pnpm#12035: Introduces the pre-push script that this PR extends with Clippy checks.
  • pnpm/pnpm#11735: Previous Clippy CI changes that this PR restructures by moving to a dedicated job.
  • pnpm/pnpm#12363: Expands workspace Clippy lint rules that work with this PR's -D warnings enforcement.

Suggested reviewers

  • KSXGitHub

Poem

🐰 Clippy hops from test to job so neat,
Pre-push gates now align—no more deceit,
Borrowed JSON flows through tests so fine,
References dance, no ownership line,
Lints denied with warnings turned to might! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the primary changes: moving clippy to a dedicated single-OS CI job and adding it to the pre-push hook.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix-pacquet-clippy-ci

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 and usage tips.

@zkochan zkochan marked this pull request as ready for review June 13, 2026 18:14
@qodo-free-for-open-source-projects

qodo-free-for-open-source-projects Bot commented Jun 13, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (3) 📘 Rule violations (0)

Grey Divider


Remediation recommended

1. Pre-push clippy not locked 🐞 Bug ☼ Reliability
Description
pacquet/scripts/pre-push-rust.sh runs cargo clippy without --locked, so the local gate can
diverge from CI and may update Cargo.lock, leaving a dirty working tree after a push attempt. CI
and just lint both use --locked, so this is a real mismatch in the intended “mirror CI”
behavior.
Code

pacquet/scripts/pre-push-rust.sh[R22-24]

+    yellow '▸ cargo clippy --all-targets --workspace -- -D warnings'
+    if ! cargo clippy --all-targets --workspace -- -D warnings; then
+        red '✗ cargo clippy reported lints — fix the findings (or `just lint`) and commit.'
Evidence
The hook currently runs clippy without --locked, while both CI and the canonical just lint
recipe run clippy with --locked, proving a mismatch and the potential for lockfile
mutation/divergence.

pacquet/scripts/pre-push-rust.sh[18-26]
.github/workflows/pacquet-ci.yml[130-158]
justfile[64-67]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The pre-push hook’s `cargo clippy` invocation omits `--locked`, which can cause local results to diverge from CI and can modify `Cargo.lock` during the hook.

### Issue Context
CI runs clippy with `--locked`, and the repo’s `just lint` recipe also uses `--locked`, so the hook should match.

### Fix Focus Areas
- pacquet/scripts/pre-push-rust.sh[18-26]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Single-OS clippy misses cfg 🐞 Bug ☼ Reliability
Description
Moving clippy to a single Ubuntu job means clippy lints will not run for Windows/macOS-only #[cfg]
blocks, even though such platform-gated code exists in the repo. This reduces CI lint coverage for
platform-specific code paths compared to the previous per-OS matrix run.
Code

.github/workflows/pacquet-ci.yml[R130-137]

+  clippy:
+    name: Clippy
+    # Clippy lints the same source on every platform, so one OS is
+    # enough — running the full `--all-targets` workspace lint across the
+    # whole test matrix just triples the cost. Mirrors the single-OS doc,
+    # format, and dylint jobs. (Platform-gated `#[cfg]` blocks are still
+    # type-checked per-OS by the test job's build.)
+    runs-on: ubuntu-latest
Evidence
The workflow change runs clippy only on Ubuntu, while the codebase includes Windows-gated code
(#[cfg(windows)]). Since clippy only lints the compiled target’s cfg-selected code, those Windows
blocks won’t be linted in the Ubuntu-only clippy job.

.github/workflows/pacquet-ci.yml[130-158]
pacquet/crates/fs/src/symlink_dir.rs[23-33]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
Clippy now runs only on `ubuntu-latest`, so Windows/macOS `#[cfg(...)]` code paths are not linted by clippy in CI.

### Issue Context
The repository contains `#[cfg(windows)]` code, so linting on Linux alone can miss clippy findings that only appear when compiling for Windows/macOS targets.

### Fix Focus Areas
- .github/workflows/pacquet-ci.yml[130-158]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Informational

3. AGENTS clippy flags misleading 🐞 Bug ⚙ Maintainability
Description
pacquet/AGENTS.md describes the pre-push clippy gate as --all-targets -D warnings, which omits
the -- separator (needed to pass -D warnings to clippy) and also omits --workspace. This
documentation no longer matches the actual hook command, and can lead contributors to run an invalid
or incomplete command when trying to reproduce the hook locally.
Code

pacquet/AGENTS.md[R382-385]

- The repo-wide husky `pre-push` hook runs `pacquet/scripts/pre-push-rust.sh`,
-  which checks `rustfmt`, `taplo`, `cargo doc` (with
-  `RUSTDOCFLAGS=-D warnings`), and `cargo dylint`. Make sure your environment
+  which checks `rustfmt`, `taplo`, `cargo clippy` (with `--all-targets -D
+  warnings`), `cargo doc` (with `RUSTDOCFLAGS=-D warnings`), and `cargo
+  dylint`. Make sure your environment
Evidence
AGENTS.md’s documented flags differ from the hook’s real clippy invocation (which includes
--workspace and uses -- before -D warnings).

pacquet/AGENTS.md[382-385]
pacquet/scripts/pre-push-rust.sh[18-26]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`pacquet/AGENTS.md` documents an incomplete clippy invocation for the pre-push hook that omits key parts of the real command.

### Issue Context
The actual hook runs workspace-wide clippy and forwards `-D warnings` using the `--` separator.

### Fix Focus Areas
- pacquet/AGENTS.md[382-385]
- pacquet/scripts/pre-push-rust.sh[18-26]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

CI: move clippy to ubuntu-only job and enforce it in pre-push
🐞 Bug fix ⚙️ Configuration changes 📝 Documentation 🕐 20-40 Minutes

Grey Divider

Walkthroughs

Description
• Fix a pnpr integration-test helper to avoid a clippy needless_pass_by_value lint.
• Add workspace clippy (--all-targets, -D warnings) to the Rust pre-push hook.
• Split clippy into a dedicated ubuntu-only CI job to avoid triple matrix cost.
Diagram
graph TD
Dev([Developer]) --> Hook["pre-push-rust.sh"] --> ClippyCmd["cargo clippy (--all-targets)"]
GHA(["GitHub Actions"]) --> WF["pacquet-ci.yml"] --> ClippyJob["Clippy job (ubuntu)"] --> ClippyCmd
TestSrc["batch_publish.rs (tests)"] --> ClippyCmd
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Keep clippy in the OS matrix but guard it with a conditional
  • ➕ No new job; keeps all lint/test steps in one place
  • ➕ Can still run clippy on a single OS by checking matrix.os == 'ubuntu-latest'
  • ➖ Still pays the overhead of spinning up the other matrix jobs (even if clippy step is skipped)
  • ➖ Harder to reason about what is guaranteed to run vs skipped per OS
2. Extract common disk-cleanup + Rust toolchain setup into a reusable composite action
  • ➕ Reduces duplication between test and clippy jobs (and any future Rust jobs)
  • ➕ Centralizes runner-disk workarounds
  • ➖ Adds indirection for reviewers debugging CI failures
  • ➖ Not necessary for a one-off duplication

Recommendation: The PR’s approach is the best tradeoff: a dedicated ubuntu-only clippy job actually removes redundant work (unlike conditionally skipping within the matrix) and aligns with existing single-OS lint jobs. Consider a follow-up composite action only if disk-cleanup/toolchain setup duplication spreads further.

Grey Divider

File Changes

Tests (1)
batch_publish.rs Pass JSON bodies by reference in request helpers to satisfy clippy +22/-16

Pass JSON bodies by reference in request helpers to satisfy clippy

• Changes put_json/put_json_with_token helpers to accept &Value instead of Value, avoiding needless_pass_by_value and removing an unnecessary clone at call sites. Updates test call sites accordingly without changing test semantics.

pnpr/crates/pnpr/tests/batch_publish.rs


Documentation (1)
AGENTS.md Document clippy as part of the pre-push Rust checks +3/-2

Document clippy as part of the pre-push Rust checks

• Updates contributor documentation to include cargo clippy (with --all-targets and -D warnings) in the list of enforced pre-push checks.

pacquet/AGENTS.md


Other (2)
pacquet-ci.yml Extract clippy from the 3-OS matrix into a dedicated ubuntu job +34/-9

Extract clippy from the 3-OS matrix into a dedicated ubuntu job

• Removes clippy installation and the clippy step from the Lint-and-Test matrix job. Adds a standalone ubuntu-latest Clippy job with its own disk cleanup, toolchain install (with clippy), and a workspace --all-targets lint run.

.github/workflows/pacquet-ci.yml


pre-push-rust.sh Add workspace clippy --all-targets gate to the pre-push hook +10/-0

Add workspace clippy --all-targets gate to the pre-push hook

• Runs cargo clippy with --all-targets --workspace and treats warnings as errors, matching CI behavior. Includes rationale explaining why --all-targets is required to catch integration-test lints locally.

pacquet/scripts/pre-push-rust.sh


Grey Divider

Qodo Logo

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 88.32%. Comparing base (f1521cf) to head (54152ca).

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #12389      +/-   ##
==========================================
- Coverage   88.32%   88.32%   -0.01%     
==========================================
  Files         298      298              
  Lines       39034    39034              
==========================================
- Hits        34477    34475       -2     
- Misses       4557     4559       +2     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@zkochan zkochan merged commit 94c13cc into main Jun 13, 2026
27 checks passed
@zkochan zkochan deleted the fix-pacquet-clippy-ci branch June 13, 2026 18:23
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.

2 participants