As noted in #43761, we had recently set `CI=true` for the Renovate and
Containerbase orgs on Mend-hosted apps due to a pnpm v11 requirement:
ERR_PNPM_ABORTED_REMOVE_MODULES_DIR_NO_TTY Aborted removal of
modules directory due to no TTY
If you are running pnpm in CI, set the CI environment variable to
"true", or set "confirmModulesPurge" to "false".
Similarly in #43606, it was noted that we should do this for `mise lock`
to mark the workspace as "trusted".
Although we went with a different situation, there will be cases where
this is useful for tools being executed, for instance when we invoke `yarn`.
We also make sure to keep our documentation up-to-date as we add to the
specific overrides.
With help from Claude Sonnet and Opus to:
- perform some of the mechanical updates as part of this change
- ensure that the Docker sidecar always has `hardcodedProcessEnv` passed
into it
- catch a needed change to `exposeAllEnv` handling
Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
ci(linter): add renovate/no-redundant-mock-reset rule
Vitest sets mockReset: true globally in vitest.config.mts, which resets
all mocks before each test. This makes vi.resetAllMocks() /
vi.clearAllMocks() and per-mock .mockReset() / .mockClear() calls inside
beforeEach/afterEach hooks redundant. Add a custom oxlint rule (enabled
for **/*.spec.ts and test/**) flagging such calls, and remove the 40
redundant calls it found. restoreAllMocks/mockRestore are not flagged
because restoreMocks is not enabled globally.
Two sites keep an inline disable with a reason: nested beforeEach hooks
in filter-checks.spec.ts and onboarding/pr/index.spec.ts intentionally
call mockReset() to discard once-values queued by an outer beforeEach.
Requested by maintainer review feedback (review comment 3052324877).
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
As part of future changes which will fix issues with Composer + Yarn 1
introduced by f430552de4, we need to find
a way to ignore command failure, on a per-command basis.
To do this, we can provide a refactor to introduce a new type,
`CommandWithOptions` which has the ability to specify whether to
`ignoreFailure`.
To make this less of a refactor than would otherwise require, we can
pass around a `(string | CommandWithOptions)[]`
(or a `string[]` or a `CommandWithOptions[]`) to be used, and use
helpers `asRawCommand` and `asRawCommands` to extract the underlying
command where necessary.
In the case a command's failure is being ignored, return the error code
in the `ExecResult`.
We also need to make sure that when executing in Docker, we still
provide the `|| true`s, otherwise we'll start to see commands failing
unexpectedly.
As part of future-proofing the `CommandWithOptions`, we can make sure
that it uses `string[]`s for the command it's representing, to avoid
re-parsing it.
* refactor(util): use spawn instead of exec
- Use child_process.spawn instead of child_process.exec
* refactor(util): use spawn instead of exec
- Use child_process.spawn instead of child_process.exec
* refactor(util): use spawn instead of exec
- Use child_process.spawn instead of child_process.exec
* refactor(util): use spawn instead of exec
- Use child_process.spawn instead of child_process.exec
* refactor(util): use spawn instead of exec
- init spawn-util
* refactor(util): use spawn instead of exec
- spawn-util
* refactor(util): use spawn instead of exec
- init index-spawn.spec.ts
* refactor(util): use spawn instead of exec
- fixed various tests
* refactor(util): use spawn instead of exec
- fix all artifacts.spec.ts
* refactor(util): use spawn instead of exec
- fix all artifacts.spec.ts
* refactor(util): use spawn instead of exec
- fix npm post update imports
* refactor(util): use spawn instead of exec
- revert renaming to minimize PR diff
* refactor(util): use spawn instead of exec
- revert renaming to minimize PR diff
* refactor(util): use spawn instead of exec
- revert renaming to minimize PR diff
* refactor(util): use spawn instead of exec
- revert renaming to minimize PR diff
* refactor(util): use spawn instead of exec
- revert renaming to minimize PR diff
- destroy stdio when terminating child process
* refactor(util): use spawn instead of exec
- delete and revert dev related changes
* refactor(util): use spawn instead of exec
- fix support for windows
* refactor(util): use spawn instead of exec
- handle SIGSTOP and such
- add test coverage
* refactor(util): use spawn instead of exec
- now converts to strings when resolving/rejecting
* refactor(util): use spawn instead of exec
- logs improvements
- force shell (exec like)
- fix tests
* refactor(util): use spawn instead of exec
- strongly type listeners
* refactor(util): use spawn instead of exec
- create helper mock for spawn
* refactor(util): use spawn instead of exec
- cr changes
* Update lib/util/exec/common.ts
Co-authored-by: Sergei Zharinov <zharinov@users.noreply.github.com>
* refactor(util): use spawn instead of exec
- documentation
* refactor(util): use spawn instead of exec
- revert unnecessary formatting
* refactor(util): use spawn instead of exec
* refactor(util): use spawn instead of exec
- added ExecError class
* refactor(util): use spawn instead of exec
- exec-error.ts restructure
* refactor(util): use spawn instead of exec
* Apply suggestions from code review
Co-authored-by: Sergei Zharinov <zharinov@users.noreply.github.com>
* refactor(util): use spawn instead of exec
* refactor(util): use spawn instead of exec
* refactor(util): use spawn instead of exec
- deprecated RawExecOptions.encoding property
* refactor(util): use spawn instead of exec
* refactor(util): use spawn instead of exec
* refactor(util): use spawn instead of exec
Co-authored-by: Sergei Zharinov <zharinov@users.noreply.github.com>