Files
Michael Kriese 4cb4da6bd1 test(manager): close more branch coverage gaps (#45972)
* test(manager): close ansible-galaxy, bun and droneci gaps

Adds three extractions: a bun workspace glob that matches no file, a
workspace package file that cannot be read, and a drone image
continuation that is never terminated.

Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io>

* test(manager/gradle): mark the gradle parser and extract guards

Nineteen guards across the gradle family, none of which a test reaches
without a build script contrived to defeat the parser. Most are variable
lookups and string interpolations that resolved to nothing; the rest
cover a catalog fallback already marked unreachable, a registry that is
already known, and a dep that did not default to the maven datasource a
line earlier.

The include/exclude mode chain stays counted, since a coverage-ignore
hint does not attach to an `else if`.

Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io>

* test(manager): close kustomize, jenkins and homebrew gaps

All five by test, no ignores. A kustomization declaring a local
component, a nameless image and a nameless helm chart yields none of
them, a jenkins plugin entry without an artifactId is skipped, and a
github archive url that is not a tar.gz keeps its suffix in the version
rather than having it trimmed.

Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io>

* test(manager/maven): mark the maven extract and update guards

Fifteen guards across the maven family. Most check a field the extractor
always populates - a dep name, registry urls, a current value. The rest
cover a settings.xml carrying no registries, an array that is never
falsy, a regex whose groups are present because the line already
matched, and three update paths that a buildpack or snapshot bump always
satisfies.

One is left counted: the `propSource` fallback carries an
`istanbul ignore next` that covers the line but not the expression's
branch, and widening it would mean rewriting an existing hint.

Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io>

* test(manager/droneci): write the fixture with codeBlock

The unterminated image fixture was assembled by joining an array of
strings, which hid the shape of the file behind quoting and escapes. It
is now a codeBlock literal laid out as the yaml it represents, with a
parent key so the indentation the extractor matches on survives the
dedent.

Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io>

* test(manager): indent the kustomize and jenkins fixtures properly

The kustomize fixture sat flush with the statement and listed its
components, images and helm charts at the same indentation as their
keys. It is now indented one level inside the literal, with the list
items nested under the keys as yaml is normally written.

The jenkins fixture was an inline string with escaped newlines; it is
now a codeBlock literal laid out the same way.

Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io>

---------

Co-authored-by: Claude Opus 5 <michael.kriese+claude-code@mend.io>
2026-09-16 06:43:00 +00:00
..
2026-01-21 15:13:32 +00:00

The homebrew manager extracts dependencies from Homebrew Formula Ruby files.

Supported Files

Renovate supports Formula files that follow the Homebrew naming convention:

  • Files must be located in a Formula/ directory
  • Files must have a .rb extension
  • Example: Formula/my-package.rb

Supported Dependencies

The manager extracts and updates:

  • GitHub releases: URLs in the format https://github.com/owner/repo/releases/download/v1.2.3/repo-1.2.3.tar.gz
  • GitHub archives: URLs in the format https://github.com/owner/repo/archive/refs/tags/v1.2.3.tar.gz
  • NPM packages: URLs in the format https://registry.npmjs.org/package/-/package-1.2.3.tgz or https://registry.npmjs.org/@scope/package/-/package-1.2.3.tgz
  • SHA256 checksums: Automatically computed for new versions

How It Works

When a new version is available, Renovate:

  1. Downloads the new tarball from GitHub or NPM registry
  2. Calculates the SHA256 checksum
  3. Updates both the url and sha256 fields in the Formula file

Limitations

  • GitHub packages: Only supports packages hosted on github.com
  • NPM packages: Only supports packages from registry.npmjs.org (custom registries are not supported)

Example Formulas

GitHub Package

class MyPackage < Formula
  desc "My awesome package"
  homepage "https://github.com/owner/repo"
  url "https://github.com/owner/repo/releases/download/v1.2.3/repo-1.2.3.tar.gz"
  sha256 "abc123def456..."

  def install
    # installation steps
  end
end

npm Package

class ClaudeCode < Formula
  desc "Anthropic's official CLI for Claude"
  homepage "https://www.anthropic.com/claude-code"
  url "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-1.0.0.tgz"
  sha256 "abc123def456..."
  license "Proprietary"
end

Unsupported Formulas

Formulas with the following characteristics will be skipped:

  • Non-GitHub and non-NPM URLs (e.g., SourceForge, custom domains)
  • NPM packages from custom registries (only registry.npmjs.org is supported)
  • Missing or invalid sha256 field
  • Git repository URLs (e.g., url "https://github.com/owner/repo.git")
  • Invalid class definitions

If you need to change the versioning format, read the versioning documentation to learn more.