Commit Graph

35 Commits

Author SHA1 Message Date
ntsk 9d1070091a fix(manager/pep621): support array form of tool.uv.sources (#44970)
* test(manager/pep621): cover array uv sources

* fix(manager/pep621): support array uv sources

* test(manager/pep621): cover unknown source fallback
2026-09-04 11:06:07 +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 a473e73b3e fix(linters): forbid inert counts in v8 coverage-ignore comments (#45287)
Adds a custom oxlint rule renovate/v8-ignore-no-count that flags the
count form '/* v8 ignore next <N> */'. The count is not honored by
vitest's ast-v8-to-istanbul hint parser, which captures only the
keyword (if/else/next/file); 'next' always exempts exactly the next
AST node. Trailing counts therefore suggest a line range that is never
applied and mislead readers.

The rule is autofixable (drops the count, preserving actual behavior)
and has been applied to all existing occurrences.
2026-08-22 11:25:31 +00:00
Sebastian Poxhofer a1971afa78 fix(linters): add linting rule to enforce usage of our regEx utility (#44690)
* ci(linter): add renovate/require-regex-util rule

Adds a custom oxlint rule that flags raw RegExp usage in lib/
production code: any `new RegExp(...)` call and any regex literal
that is not the direct first argument of `regEx(...)`. The regEx()
helper from lib/util/regex.ts uses the RE2 engine for ReDoS-safe
matching and caches compiled patterns. lib/util/regex.ts itself is
exempt.

The rule is disabled for **/*.spec.ts, test/**, and tools/** via
config overrides, because vitest APIs such as expect.stringMatching
need bare RegExp instances (a past commit reverted regEx() there).

Severity is set to "warn" instead of "error": the repo currently has
197 pre-existing violations (above the agreed mechanical-fix
threshold of 80), and a number of them are deliberately
RE2-incompatible patterns (lookahead/lookbehind/named backreferences,
see TODO #12872/#12875 markers in e.g. lib/modules/versioning/rez/
pattern.ts and lib/modules/manager/dockerfile/extract.ts) that need
per-site judgment before they can be wrapped in regEx() or suppressed
with a justified disable comment. No violation fixes are included in
this commit.

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

* ci(linter): enforce renovate/require-regex-util at error

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

* refactor: use regEx() for regex literals and RegExp construction in lib

Burn down all renovate/require-regex-util violations (197):

- wrap RE2-compatible regex literals and RegExp constructions in regEx()
- rewrite lookaround patterns where behavior is provably preserved:
  goproxy separator split, sbt-package link extraction, leiningen
  comment stripping and keyword search, npm GitHub owner validation
  (unit-count bound replaced by an explicit length check)
- keep native RegExp with disable comments where RE2 cannot be used:
  moo / good-enough-parser lexer patterns (moo rejects RE2 instances),
  MigrationsService propertyName (matched via isRegExp, which RE2
  instances fail), rez named backreferences and lookaheads, GitHub
  markdown link negative lookbehind, emoji astral-plane matching
- drop stale TODO #12875 comments for patterns current re2 handles

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

* refactor: reduce require-regex-util disable comments

Rewrite the github massage-markdown-links URL regex to capture an
optional `api.` prefix in a named group (skipped in code) instead of
relying on a negative lookbehind, so both the base and global variants
can use regEx()/RE2 and their two disable comments are removed. Add
spec cases for api-prefixed URLs that match the URL shape.

Consolidate the four related line disables in rez/pattern.ts (bound and
range patterns emulating Python conditional patterns via named
backreferences and lookaheads, which RE2 cannot express) into a single
block disable/enable pair, matching the treatment of the lexer files.

Disable comment count drops from 13 to 8.

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

* refactor(datasource/sbt-package): use named capture group in link regex

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

* refactor(manager/cake): restore original multiLineComment regex spelling

The [^] -> [\\s\\S] rewrite was only needed for an RE2 wrap that was
later reverted; keep the diff minimal.

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

* fix(datasource/go): skip empty GOPROXY segments

The switch from a lookahead split to a capture-group split (needed because
RE2 has no lookahead support) changed how empty GOPROXY segments parse:
`a|,b` yielded `{ url: ',', fallback: '|' }` before and
`{ url: '', fallback: ',' }` after. The comma fallback only continues on
404/410, so a failing proxy ahead of an empty segment silently stopped the
lookup instead of falling through to the remaining proxies.

Empty segments carry no url to query, so drop them.

* refactor(datasource/go): use isTruthy for empty segment filter

* fix(datasource/go): filter empty segments before mapping

Filtering after the map broke the contextual typing from the
GoproxyItem[] annotation, widening fallback to string.

* refactor(platform/github): use regEx() for merge queue query stripping

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 14:30:46 +00:00
Sergei Zharinov cca6227dfa fix(git): resolve child env before adding authentication (#45184)
* fix(git): preserve approved runtime config with authentication

* test(git): remove redundant authentication cases

* test(git): update post-upgrade environment assertions

* test(hermit): cover uninstall setup failure

* refactor(git): clarify authentication host types

* refactor(git): coerce exec options

* refactor(git): coerce docker env vars

* refactor(exec): coerce docker env vars
2026-08-10 11:54:18 +00:00
Sebastian Poxhofer 9717259ffc refactor(oxlint): enable no-else-return and unicorn/no-lonely-if (#44553)
Enable no-else-return (with allowElseIf: false) and unicorn/no-lonely-if
as errors in .oxlintrc.json and fix all 131 pre-existing violations
(91 no-else-return, 40 unicorn/no-lonely-if) across 98 files.

The no-else-return violations were fixed with the oxlint autofix
(iterated to a fixpoint, plus two else-if chains that required
--fix-dangerously) followed by Prettier formatting. One comment dropped
by the autofix in lib/modules/manager/pub/artifacts.ts was restored
manually. The unicorn/no-lonely-if violations were merged by hand,
preserving comments and coverage-ignore hints.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:11:21 +00:00
Sebastian Poxhofer d004b52a91 test: add coverage for lines detected by pnpm check (#43589)
tests: add coverage for lines detected by pnpm check
2026-05-26 07:53:07 +00:00
Jamie Tanna 2d1e57532f refactor(types): rename lockFile to fileName in ArtifactError (#41631)
As `fileName` makes more sense (as it's not always a lock file we're
updating).

Also, if you set `fileName`, it would never actually output the
filename.

This renames the usages of `lockFile` to `fileName`.

Co-authored-by: Claude Sonnet 4.5 <jamie.tanna+github-copilot@mend.io>
2026-03-10 09:57:31 +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
RahulGautamSingh 76f911041a refactor: use named exports (#39196)
* use named exports

* fix test

* add missing imnport

* fix prettier
2025-11-10 12:00:35 +00:00
Sebastian Poxhofer c75991e197 refactor(manager/pep621): use abstract class for processors (#37643) 2025-08-25 11:43:13 +00:00
Michael Kriese 0691d29ae9 feat(pep621): return found lockfiles (#37633) 2025-08-20 14:43:43 +00:00
Michael Kriese 3211d56e21 refactor(zod): rename schema to match our best practices guide (#37499) 2025-08-14 10:35:03 +00:00
akern40 61cc1513ba feat(pep621): Add support for uv workspaces (#37064) 2025-08-12 08:33:18 +00:00
Sergei Zharinov 2ce429f4d1 refactor(pep621): Simplify schema (#37441) 2025-08-12 05:25:18 +00:00
Nico Tonnhofer 5651c2e910 fix(manager/pep621): depType requires-python should ignore implicit default registry url (#36910) 2025-07-09 05:38:59 +00:00
Johannes Feichtner 5a9190488e feat(pep621): detect uv constraint from tool.uv.required-version (#36850) 2025-07-06 07:13:56 +00:00
RahulGautamSingh 455db4228d fix(manager/pep621): use depName in lock update commands (#35855) 2025-05-11 07:39:51 +00:00
Nik Stuckenbrock f067f6a60e fix(pep621): make name for uv index optional (#35150) 2025-04-28 14:19:06 +00:00
RahulGautamSingh 80b7cdf1e0 refactor(util): move user env to util folder (#35103) 2025-04-02 10:27:27 +00:00
Michael Kriese e9cbd02865 fix(lockfilemaintenance): ensure isLockFileMaintenance on grouping (#33971) 2025-02-20 12:57:05 +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
Maxime Brunet 84017e05cc refactor: refactor Google Auth util (#33486) 2025-01-09 10:35:47 +00:00
Bas Schoenmaeckers 8c5a56e34c fix(manager/pep621): remove pinned indexes from UV_EXTRA_INDEX_URL (#32819) 2024-12-03 21:59:48 +00:00
Bas Schoenmaeckers 55b08e281b feat(manager/pep621): add support for uv index configuration (#32771) 2024-11-29 08:49:37 +00:00
Maxime Brunet 80f03a86dc feat(uv): support GCloud credentials for Google Artifact Registry when locking (#32545) 2024-11-17 09:01:33 +00:00
Maxime Brunet 22880e9aac feat(pep621): set Git insteadOf directives when updating pdm/uv locks (#32378) 2024-11-14 06:13:12 +00:00
Mathieu Kniewallner 4b0a5d12a2 refactor(manager): extract applyGitSource (#32236) 2024-10-31 06:06:28 +00:00
Mathieu Kniewallner c20044e2d5 fix(manager/uv): apply normalization on sources (#31297) 2024-10-29 18:56:50 +00:00
Mathieu Kniewallner 7f4181afec test(manager/uv): move source skip test to extract (#32195) 2024-10-29 16:48:41 +00:00
Nam Vu 03cf03b2be feat(manager/uv): add support for git sources (#31928)
Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>
2024-10-19 13:57:08 +00:00
Tor Arvid Lund 1ca7d263f0 feat: export UV_EXTRA_INDEX_URL before doing 'uv lock' (#31840)
Co-authored-by: Rhys Arkins <rhys@arkins.net>
2024-10-11 09:33:58 +00:00
Mathieu Kniewallner e5eab538e4 fix(manager/uv): skip unsupported sources (#31270) 2024-09-09 20:45:44 +00:00
Mathieu Kniewallner 058578f619 feat(manager/uv): extract packages from lockfile (#31137)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2024-09-02 06:29:27 +00:00
Mathieu Kniewallner e8d872f7d1 feat(managers): add support for uv universal locking (#30756)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2024-08-19 14:34:22 +00:00