• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ben-manes / caffeine / #5497
100%
master: 100%

Build:
Build:
LAST BUILD BRANCH: v3.dev
DEFAULT BRANCH: master
Ran 02 Jun 2026 05:08AM UTC
Jobs 1
Files 78
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

02 Jun 2026 04:54AM UTC coverage: 100.0%. Remained the same
#5497

push

github

ben-manes
Refactor the node and cache code generators

Replace the untyped Set<List<Object>> combinations and the parallel
@Nullable Feature[] featureByIndex array with a cartesian product of
Optional<Feature> dimensions. Eviction is modeled as one mutually-exclusive
dimension (none, size, or weight), which removes the
MAXIMUM_WEIGHT-supersedes-MAXIMUM_SIZE fixup.

Share the driving machinery by composition: a FactoryGenerator is configured
with the matrix dimensions, the class-name encoding, and a SpecFactory that
builds a single specialization, so the node and local-cache generators no
longer duplicate generate()/writeJavaFile()/reformat() and the parent/child
derivation. Each generator is now just its configuration -- a dimension list, a
rule list, an encode alphabet, and a makeSpec method reference.

Make the class-name encoding independent of set iteration order. The name is a
prefix-coded concatenation of feature codes in a canonical order; that order
was previously carried implicitly by ImmutableSet insertion order (guarded by
two apologetic @SuppressWarnings, since an enum-set collector would reorder the
features and silently corrupt the local-cache names whose matrix order differs
from the enum order). The canonical order is now derived from the single
dimension list and applied by sorting at the naming boundary, so no Set or
collector choice can change the output. Since RuleContext already re-wraps the
feature sets into enum order, the rule layer was never order-sensitive; the
parent class name is computed centrally and handed to makeSpec, so both
suppressions are removed. A checkState asserts the prefix-coding invariant at
generation time.

The generated sources are byte-identical.

4034 of 4042 branches covered (99.8%)

8218 of 8218 relevant lines covered (100.0%)

1.0 hits per line

Jobs
ID Job ID Ran Files Coverage
1 #5497.1 02 Jun 2026 05:08AM UTC 78
100.0
Source Files on build #5497
  • Tree
  • List 78
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 60fd34c6 on github
  • Prev Build on v3.dev
  • Next Build on v3.dev
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc