Commit Graph

49 Commits

Author SHA1 Message Date
Sebastian Poxhofer 05e1271376 test: use expect().resolves instead of awaiting inside expect (#45672)
Enables the vitest/prefer-expect-resolves oxlint rule and applies its
autofix across the spec suite.
2026-09-04 10:40:46 +00:00
Sebastian Poxhofer df8c4051ff test(core): replace file snapshots with explicit assertions (#45660)
* test(core): replace file snapshots with explicit assertions

* test(core): replace inline snapshots with explicit assertions

* test(core): assert on relevant sections instead of full bodies

* test(core): drop assertions implied by full equality

* test(core): address review feedback

* test(core): use resolves instead of awaiting inside expect
2026-09-04 10:28:55 +00:00
Sebastian Poxhofer 97327c3d28 refactor(linters): add prefer-coerce-array rule (#45492)
* refactor(linters): add prefer-coerce-array rule

Refs #45217

`x ?? []` and `coerceArray(x)` say the same thing, but only the second
one is searchable and consistent. The rule flags a `??` whose default is
a bare `[]` literal; a non-empty default or an asserted `([] as Foo[])`
still passes.

Applying it across `lib/` surfaced three spots the helper cannot cover,
which keep `?? []` with a disable comment or a narrower fix:

- `package-files.ts` destructures a tuple, which `coerceArray()` widens
- `generate.spec.ts` defaults `matchAll()`, an iterator rather than an array
- `mise/upgradeable-tooling.ts` declares a `Record` return, so its
  `?? []` fallback was wrong to begin with and becomes `coerceObject()`

* refactor(platform/github): hoist the GHE version header lookup

`Object.entries(...).find()` returns a tuple, and defaulting it with
`?? []` only to destructure the second element reads as an array
default when it is not one. Name the found entry instead, which drops
the `?? []` rather than routing a tuple through `coerceArray()`.
2026-08-28 09:27:58 +00:00
Sebastian Poxhofer fbedd41e82 test: replace env operation with vi.stubEnv() (#45490)
* test: replace manual process.env mutation with vi.stubEnv

Enable Vitest's `unstubEnvs` so env stubs are reverted automatically
before every test, and convert the manual `process.env.X = ...` /
`delete process.env.X` pairs in specs to `vi.stubEnv()`.

This removes the hand-written `afterEach` cleanup blocks and the
`const OLD_ENV = process.env` / `process.env = { ...OLD_ENV }`
save-restore dance, which silently leaked state between tests when a
test set a variable without a matching delete.

Left as-is (incompatible with `unstubEnvs`, which unstubs before each
test, not after):
- module top-level env writes (cocoapods, gomod, post-update, pip-compile
  and bundler artifacts specs)
- `beforeAll` env writes -- the two in `util/http` moved to `beforeEach`

* test: stop asserting on ambient environment variables

Three specs asserted on values that the surrounding environment can
override, so they only passed on a machine that happened not to set them:

- `util/exec/env`: `getChildProcessEnv()` forwards every entry of
  `basicEnvVars`, but the spec only seeded a subset. Any other forwarded
  variable that was set ambiently (e.g. a lowercase `http_proxy`) leaked
  into the `toEqual` assertion. Clear all of them first.
- `util/git/index`: `process.env.GIT_SSH_COMMAND` deliberately overrides
  the default that the two env-inheritance tests assert on. Clear it.
- `logger/pretty-stdout`: the colorized level strings are built at import
  time, so the `beforeEach` setting `FORCE_COLOR` could never affect them
  -- it was dead code, and the test silently assumed a terminal without
  colour support. Derive the expectation the same way the module does.

* test(datasource/nuget): use a throwaway cache dir for nupkg downloads

The `determine source URL from nupkg` tests do not mock the filesystem,
so they really wrote downloaded packages into a fixed `/tmp/cache` path.
That fails wherever the system tmpdir is not writable, and two checkouts
running the suite at once would share the same directory.

Use `tmp.dir({ unsafeCleanup: true })` and clean it up afterwards, which
is the pattern the other specs that touch disk already use.

* feat(lint): add renovate/prefer-stub-env rule

Enforces in specs what the migration to `vi.stubEnv` established:

- assigning to or deleting `process.env.X` inside `beforeEach`, `afterEach`,
  `it` or `test` is reported, with a fixer that rewrites it to `vi.stubEnv()`
- module scope, `describe` bodies and `beforeAll` / `afterAll` are left alone:
  `unstubEnvs` reverts stubs *before* each test, so a stub created there is
  gone by the time the first test runs, and those must keep assigning directly
- replacing the `process.env` object is reported everywhere and never fixed.
  `vi.stubEnv()` captures the original object when the worker starts, so after
  a reassignment its deletes silently target the old object

The rule found 28 further violations in specs the earlier sweep missed, since
that one was anchored on `delete process.env`. Twelve were auto-fixed; the
rest replaced `process.env` wholesale and are now `clearEnv()` from test/util.

`util/exec/index.spec.ts` opts out with a comment: it asserts on the whole
child env, and `vi.stubEnv()` cannot express that because it maps `PROD`,
`DEV` and `SSR` onto '' instead of deleting them.
2026-08-28 09:26:20 +00:00
renovate[bot] 196101a6bb chore(deps): update dependency oxlint-tsgolint to v0.25.0 (main) (#44424)
* chore(deps): update dependency oxlint-tsgolint to v0.25.0

| datasource | package         | from   | to     |
| ---------- | --------------- | ------ | ------ |
| npm        | oxlint-tsgolint | 0.23.0 | 0.25.0 |

* chore: fix new no-unnecessary-type-assertion findings

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Sebastian Poxhofer <sebastian.poxhofer@stedi.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 07:04:21 +00:00
Sebastian Poxhofer e9c9c92e10 test(oxlint): enable vitest/consistent-test-it (#44554)
refactor(oxlint): enable vitest/consistent-test-it

Enforce `it` over `test` in spec files via
vitest/consistent-test-it (fn: "it"), matching repo convention.
Renamed all 52 pre-existing `test(`/`test.each` usages across
13 spec files to `it(`/`it.each` using oxlint --fix.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:28:52 +00:00
Jamie Tanna b39b50f559 chore: expose known environment variables (#42201)
To provide more programmatic means to determine what environment
variables configure Renovate configuration options - and whether they're
Repo, Inherit or Global config options - we can expose these in two
forms:

- `getEnvOptionsMap()`
- a static JSON file, `renovate-env-options.ts`

This will provide programmatic use-cases from a plain JSON file that can
be used more readily - especially as it's distributed in the docs and
built package - as well as a function that can be used by users of
Renovate-as-a-library.

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-04-14 15:27:50 +00:00
Jamie Tanna 9c57ae1399 test(config): ensure no duplicate environment variable names (#42204)
As we continue to be more careful with our environment variable usage,
we should make sure it's not possible to ever have a clash.

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-03-27 15:06:21 +00:00
Jamie Tanna 57f01ae0a1 chore(workers/global): improve error message on parsing environment vars (#41324)
As part of #41323, we noticed that the error that's thrown isn't super
helpful, as it doesn't include the environment variable name.

To improve this, we can wrap the `Error` with the environment variable
name that's in use, as well as the error message.

In the future we can improve this further.
2026-02-19 11:59:28 +00:00
Jamie Tanna 2536f535c0 fix(workers/global): migrate string-based repositoryCacheForceLocal (#41323)
* fix(workers/global): migrate string-based `repositoryCacheForceLocal`

For users who had previously set `RENOVATE_X_REPO_CACHE_FORCE_LOCAL` to
a non-empty string, we can make sure to auto-migrate them to the
expected value of `true`.

Because this is an environment variable, we cannot use a migration, and
so instead need to handle it when we're performing the manual migration.

* test(workers/global): clarify empty `X_REPO_CACHE_FORCE_LOCAL` does not get migrated
2026-02-19 11:55:22 +00:00
Jamie Tanna 067a19490b feat: promote repositoryCacheForceLocal out of experimental (#41207)
We've been happily using this with Mend Renovate Self-Hosted customers
since introduction in 2024, and so we're happy making this
non-experimental now.

This follows other changes where we've promoted an experimental option
to non-experimental, and heavily driven by Claude Sonnet 4.5.

We can also rename config item to use the same `repositoryCache` prefix.

Co-authored-by: Claude Sonnet 4.5 <jamie.tanna+github-copilot@mend.io>
2026-02-16 11:20:30 +00:00
Sergei Zharinov 930cf6633c refactor: Rewrite imports with .ts extensions (#40700)
fix: Additional vi.mock path corrections and prettier formatting
2026-01-26 22:48:17 +00:00
renovate[bot] 1280fe4dc7 chore(deps): update dependency @vitest/eslint-plugin to v1.3.16 (main) (#38502)
* chore(deps): update dependency @vitest/eslint-plugin to v1.3.16

| datasource | package               | from   | to     |
| ---------- | --------------------- | ------ | ------ |
| npm        | @vitest/eslint-plugin | 1.3.13 | 1.3.16 |

* fix linting errors

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: secustor <sebastian@poxhofer.at>
2025-10-13 09:24:15 +00:00
RahulGautamSingh 3691ff90b2 feat(config): baseBranchPatterns (#35579) 2025-07-14 19:05:27 +00:00
Sebastian Poxhofer 78002a0993 feat: add RENOVATE_ prefix to Github com token and env host rules (#34568) 2025-03-05 12:54:30 +00:00
Trim21 6e5731b554 test: migrate from jest to vitest (#34499) 2025-02-26 14:18:38 +00:00
renovate[bot] 55845508b6 chore(deps): update eslint monorepo to v9 (major) (#33573)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2025-02-20 11:31:13 +00:00
Gabriel-Ladzaretti 6aa5c4238f refactor(config): reusable env getConfig function (#33350)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2024-12-31 13:28:26 +00:00
RahulGautamSingh 8ec8391310 feat(self-hosted): convert experimental vars to config options (#29137)
Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com>
2024-08-19 15:45:49 +00:00
RahulGautamSingh 3857332a9e feat(self-hosted): convert experimental env vars to config options (#29154)
Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com>
2024-08-07 07:28:34 +00:00
RahulGautamSingh bb6c27faf8 feat(github): convert platformCommit to enum (#29156)
BREAKING CHANGE: platformCommit will be automatically enabled if running as a GitHub app
2024-07-25 15:28:16 +02:00
RahulGautamSingh 044dc0fa28 feat(self-hosted): mergeConfidenceEndpoint and mergeConfidenceDatasources (#28880)
Co-authored-by: Rhys Arkins <rhys@arkins.net>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com>
2024-05-21 13:57:56 +00:00
RahulGautamSingh 10a4a8bb26 feat(self-hosted): autodiscoverRepoSort and autodiscoverRepoOrder (#28738)
Co-authored-by: Rhys Arkins <rhys@arkins.net>
2024-05-06 18:16:01 +00:00
RahulGautamSingh de65584bf8 feat(config): validate file config on repo runs (#26379)
Co-authored-by: Rhys Arkins <rhys@arkins.net>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2024-04-13 08:52:28 +00:00
Sergei Zharinov b69416ce17 refactor(prettier): Force trailing commas (#25631) 2023-11-07 15:50:29 +00:00
Jiahao Guo 8ad31261d7 feat(github): support fine-grained token (#23810) 2023-08-16 05:53:48 +00:00
renovate[bot] fe739befbf chore(deps): update linters to v6 (major) (#23325)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2023-08-02 15:07:49 +00:00
RahulGautamSingh 2c264af8d2 feat: migraterecreateClosed to recreateWhen (#21039)
Co-authored-by: Rhys Arkins <rhys@arkins.net>
Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2023-06-12 15:48:40 +00:00
Jamie Magee e3b163f07a feat: log when using fine-grained PATs (#20097)
Co-authored-by: Rhys Arkins <rhys@arkins.net>
2023-01-30 08:48:29 +01:00
RahulGautamSingh c56588eaba refactor: convert PlatformmId to union (#18458) 2022-11-01 14:46:09 +00:00
Rhys Arkins a35b4ae709 fix(config): coerce newlines in env and CLI (#18563)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2022-10-26 06:40:10 +00:00
Rhys Arkins 43c3ea1acb fix(config)!: unify env and cli coercions (#13171)
Unifies CLI and env coercions.

BREAKING CHANGE: boolean variables must be true or false when configured in env, and errors will be thrown for invalid values. Previously invalided values were ignored and treated as false.
2022-10-23 06:48:35 +02:00
Colin O'Dell 976f805d44 fix(config): remove empty items from comma-separated env-supplied config options (#18067) 2022-10-02 05:01:08 +00:00
Michael Kriese 4f82df4c3d feat(buildpack): enable cache (#16591) 2022-07-21 07:00:02 +00:00
Maron 0cf2ab4823 feat: refactor requireConfig option (#15594) 2022-05-18 10:21:51 +00:00
Michael Kriese 64f5bd5f03 test: enforce lint style rules (#15085) 2022-04-12 14:49:49 +00:00
MaronHatoum 3e312fd641 feat: refactor dry-run option (#14849)
* feat : added dryRun new behavior + added more migration

* feat : revert extra space

* feat : revert extra code

* feat : added unit tests

* feat : added unit tests

* feat : removed extra tests + removed unnecessary condition

* feat: changes after CR

* feat: added dry run migration cli and env + unit tests

* Update lib/workers/global/config/parse/cli.ts

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>

* feat: migration changes + added logs + added unit test

* feat: removed log msgs + change unit test

* feat: update

* feat: update

* Update lib/workers/global/config/parse/cli.ts

Co-authored-by: Rhys Arkins <rhys@arkins.net>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2022-04-11 20:29:02 +00:00
Michael Kriese 5723be1ac5 refactor: add strict null checks (#14169) 2022-02-11 11:02:30 +01:00
Michael Kriese 82e89825ab chore: remove airbnb (#12557) 2021-11-08 13:03:55 +00:00
Michael Kriese 7afc2b75d5 test: fix lint (#12551) 2021-11-08 13:16:58 +01:00
Florian Greinacher 70700eedae feat(config)!: make host rule detection configurable and opt-in (#12294)
Add configuration option `detectHostRulesFromEnv`.

BREAKING CHANGE: `hostRules` are no longer automatically derived from env variables such as `NPM_X_TOKEN`. Set `detectHostRulesFromEnv=true` in config to re-enable same functionality.
2021-11-05 08:10:27 +01:00
Oleg Krivtsov 29dde2f694 test: improve test readability with expect-more-jest (#12329) 2021-10-27 07:24:36 +02:00
Sergei Zharinov 6f649eb661 feat(platform): Use uniform platformAutomerge option (#12069)
Existing `azureAutoComplete` and `gitLabAutomerge` options are now unified/renamed to `platformAutomerge`, and also defaulting to `true`.

BREAKING CHANGE: Azure autocomplete will now only be enabled when `automerge` is also enabled (to align with how GitLab automerge already worked). If you were using `azureAutoComplete` before without explicitly enabling Renovate `automerge` field then you will now need to do so. Platform automerge is now the default behavior whenever automerge is enabled.
2021-10-11 06:36:07 +00:00
Sergei Zharinov 1b6ea2447f refactor(config): Better prefix handling and enhanced coverage (#12083) 2021-10-09 09:08:00 +02:00
Maksim 1f86b71fd5 refactor: constants (#11690) 2021-10-06 07:43:32 +02:00
Sergei Zharinov 5f4b9f9a3a test: Fix test descriptions and enforce it via new linting rule (#11285) 2021-08-18 05:46:56 +00:00
Sergei Zharinov 1392955a04 refactor: Identify tests relying on single snapshots (#11150)
Co-authored-by: Jamie Magee <jamie.magee@gmail.com>
2021-08-07 23:43:34 +00:00
Sergei Zharinov 31785b8742 fix(config): Replace '__' to '_' globally when decoding hostRules from env (#10939) 2021-07-23 10:09:30 +00:00
Rhys Arkins 11694e9294 refactor: move config/parse into global worker (#10282) 2021-06-02 12:06:16 +02:00