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

KarpelesLab / libwallet / 25849751291 / 1
24%
master: 24%

Build:
DEFAULT BRANCH: master
Ran 14 May 2026 08:29AM UTC
Files 118
Run time 3s
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

14 May 2026 08:19AM UTC coverage: 21.591% (+0.2%) from 21.389%
25849751291.1

push

github

MagicalTux
wltswap: Swap:quotes — per-provider attempts, no silent fallback

The runQuote layer was silently falling back from Jupiter to dFlow on
ErrCodeProviderUnavailable. Hosts only ever saw one provider's result,
and there was no way for the user to compare. Worse, the fallback
didn't fire for Jupiter's HTTP 400 "Failed to get quotes" (the most
common no-route signature on small Solana swaps) — that got
classified as ErrCodeProviderBadRequest, which the fallback skipped.

Replaced with explicit comparison:

  Swap:quotes (plural) fans the request out to every provider
  available for the chain in parallel and returns one QuoteAttempt
  per provider. Successful attempts carry a Quote with its own
  cached quoteId; failed attempts carry a typed SwapError. The host
  renders the attempts side-by-side and the user picks. libwallet
  never silently switches providers.

  Swap:quote (singular) no longer silently falls back. Primary
  provider's result — error or quote — is what the caller gets.

  Jupiter HTTP 400 "Failed to get quotes" reclassified from
  ErrCodeProviderBadRequest to ErrCodeNoLiquidity to match the
  HTTP 200 empty-transaction path that already maps to no_liquidity.
  Hosts that branch on the code now see one code for both no-route
  surfaces regardless of how Jupiter chose to report it.

Dart side: SwapApi.quotes() + QuoteAttempt + SwapError model. The
silent-fallback removal in Swap:quote is documented in the doc
comment plus the CHANGELOG.

Tests cover: runQuotes collects per-provider attempts (one
successful + one with NoLiquidity), provider order is preserved,
each successful attempt gets a QuoteId stamped so execute works
immediately, ProviderLabel maps correctly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

3551 of 16447 relevant lines covered (21.59%)

114.27 hits per line

Source Files on job 25849751291.1
  • Tree
  • List 118
  • Changed 5
  • Source Changed 5
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 25849751291
  • 012b14d3 on github
  • Prev Job for on master (#25848613067.1)
  • Next Job for on master (#25854519816.1)
  • Delete
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