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

valkyrjaio / sindri-ts / 30186430401
100%

Build:
DEFAULT BRANCH: 26.x
Ran 26 Jul 2026 03:36AM UTC
Jobs 1
Files 45
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

26 Jul 2026 03:36AM UTC coverage: 100.0%. Remained the same
30186430401

push

github

web-flow
[Sindri] Generate populated route data from imperative getRoutes() providers (#62)

# Description

Sindri's data-cache generators produced **empty** output when run
against a real
application: a TS route provider registers routes imperatively (its
`getRoutes()`
returns concrete `new Route(...)` / `new DynamicRoute(...)` instances),
but that
path was never implemented — `RouteProviderReader.extractRoutes()` was a
stub
returning `[]`, and `GenerateDataFromAst` never consumed a provider's
routes.
On top of that, `ConfigReader` failed to locate the config's providers
array at
all, so the component walk started from nothing.

The net effect: `sindri generate` emitted empty `App*RoutingData` (and
skipped
container data), so a real app upgraded silently and its routes were
never
exercised. This was surfaced by wiring the starter app's test suite
against real
generator output.

This PR makes the generators produce **populated, correct** data from
imperative
`getRoutes()` providers, mirroring the framework's runtime
`RouteCollection`
semantics (literal path and regex, request methods defaulting to `[HEAD,
GET]`,
`RequestMethod.ANY` expanded to every method). Verified end-to-end
against the
starter app: generated files type-check and the app's full suite (55
tests)
passes against the real generated output.

Root causes fixed:

- **`ConfigReader` never found the providers array.** The scan started
at a fixed
  index calibrated to a test fixture (index 10), missing the framework
`HttpConfig` layout (providers at index 9), and only handled bare
identifiers —
not the `new ComponentProvider()` instances real configs use. It now
scans for
the first array-literal argument after `dataNamespace` and unwraps `new
X()`.
- **Provider references resolved by bare name.** Provider lists were
resolved by
searching the whole app tree for a matching class name, which is
ambiguous when
the same short name exists in more than one tree (e.g. an Http *and* a
Cli
`ComponentProvider` ... (continued)

771 of 771 branches covered (100.0%)

Branch coverage included in aggregate %.

128 of 128 new or added lines in 9 files covered. (100.0%)

1228 of 1228 relevant lines covered (100.0%)

11.16 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30186430401.1 26 Jul 2026 03:36AM UTC 45
100.0
GitHub Action Run
Source Files on build 30186430401
  • Tree
  • List 45
  • Changed 10
  • Source Changed 10
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30186430401
  • b240e016 on github
  • Prev Build on 26.x (#30175315336)
  • Next Build on 26.x (#30187360993)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc