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

erlef / oidcc / 344
92%

Build:
DEFAULT BRANCH: main
Ran 04 Aug 2026 09:17PM UTC
Jobs 1
Files 19
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

04 Aug 2026 09:15PM UTC coverage: 91.958% (+0.07%) from 91.892%
344

push

github

web-flow
Subtract the Age header when computing a cache deadline (#538)

* Subtract the Age header when computing a cache deadline

`headers_to_cache_deadline/2` read only `max-age`, so a document a shared cache
had already held for most of its stated lifetime was treated as fully fresh.
Google serves discovery through a CDN, and the suite's exact 3_600_000
assertions became a range because of it.

`Age` is subtracted from a lifetime the server stated, and only from that. The
caller's `fallback_expiry` is a refresh interval it chose rather than a claim by
the server, so an intermediary's `Age` says nothing about it and does not reduce
it. `max-age=0` still lands on the fallback, as issue #370 needs.

Nothing left of a stated lifetime is reported as `0`, which widens the return
type from `pos_integer()` to `non_neg_integer()`. That is not a usable refresh
interval, so the loaders hold the result above a new `minimum_refresh` option,
itself bounded by `fallback_expiry` so a caller asking for a short interval
still gets it. Without that floor a nearly-stale response schedules an immediate
reload, which for the provider configuration worker is a sustained request loop.

`no-cache` and `no-store` are left alone. Honouring them means choosing a
refresh interval for a library that has to cache to function, and that decision
wants its own discussion.

* Download only coverage artifacts in the coverage jobs

`mix test.coverage` and `rebar3 coveralls send` are sibling jobs with the
same `needs`, and both downloaded every artifact in the run. The first
uploads its `cover` directory as `coverage-report`, which holds the same
three `.coverdata` files the second unpacks, so once that upload lands
`mv artifacts/*/*.coverdata` gets each basename twice and fails:

    mv: will not overwrite just-created
    '_build/test/cover/ct-OTP-27.3.4.coverdata' with
    'artifacts/ct-coverage-27.3.4/ct-OTP-27.3.4.coverdata'

Whether it fires depends on which job downloads first, so it is... (continued)

1132 of 1231 relevant lines covered (91.96%)

65.97 hits per line

Coverage Regressions

Lines Coverage ∆ File
2
97.7
0.05% src/oidcc_provider_configuration.erl
1
94.87
0.59% src/oidcc_http_util.erl
Jobs
ID Job ID Ran Files Coverage
1 344.1 04 Aug 2026 09:17PM UTC 19
91.96
GitHub Action Run
Source Files on build 344
  • Tree
  • List 19
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 5fd55f40 on github
  • Prev Build on main (#343)
  • Next Build on main (#345)
  • Delete
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