Files
pnpm/pnpr
Zoltan Kochan 5f88187f5e fix(update): apply updateConfig.ignoreDependencies to what is reported (#14091)
Finishing the test porting tracked in pnpm/pnpm#12101 turned up two places
where pacquet's `update` still differed from pnpm's.

`updateConfig.ignoreDependencies` reached the update itself but neither of
the two places that report what could be updated: `pnpm outdated` listed an
ignored dependency, and `pnpm update --interactive` offered it for
selection. Both now drop the names the setting matches, the way pnpm hands
`ignoreDependencies` to `outdatedDepsOfProjects` from its `outdated` and
interactive-update paths alike.

A recursive `pnpm update --latest --depth 0 <selector>` that matched no
project's dependencies exited 0 having done nothing. pnpm lets `--latest`
return quietly only on the single-project path; the recursive one throws
NO_PACKAGE_IN_DEPENDENCIES once no project is left to mutate, whatever
`--latest` says, and so does pacquet now.

The harness gained the two seams the remaining upstream tests needed:

- `pnpr_fixtures::set_dist_tag` moves a dist tag in a built storage tree,
  and `CommandTempCwd::add_mocked_registry_with_own_storage` gives a test a
  registry of its own to move it in. The fixture registry otherwise serves
  `latest` as the highest published version, which cannot express "the
  newer version was published after the install" — the setup behind every
  upstream `--latest` case. The packument the last command cached is
  dropped with the tag, so the next one resolves against the move.
- `UpdatePrompt` decides how `--interactive` asks the user. The tests
  answer it from a script instead of a terminal, the way the upstream suite
  mocks `@inquirer/prompts`; `dialoguer` wants a TTY and offered no seam.

Ported with them: the five remaining `recursive.ts` cases, five `update.ts`
cases, three from `interactive.ts`, the `issue-7415.ts` regression at the
level the seam reaches (the outdated collector walking past a resolution
that names no version), and the `outdated` ignore-dependencies case.
`@pnpm.e2e/multi-version-b` stands in for `@zkochan/async-regex-replace`,
which the fixture registry does not carry.

Closes pnpm/pnpm#12101
2026-08-23 03:25:36 +02:00
..