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

KarpelesLab / libwallet / 25849751291
24%

Build:
DEFAULT BRANCH: master
Ran 14 May 2026 08:29AM UTC
Jobs 1
Files 118
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

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

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>

51 of 118 new or added lines in 4 files covered. (43.22%)

1 existing line in 1 file now uncovered.

3551 of 16447 relevant lines covered (21.59%)

114.27 hits per line

Uncovered Changes

Lines Coverage ∆ File
41
22.46
8.59% wltswap/swap.go
14
3.57
-0.37% wltswap/jupiter.go
12
31.48
23.98% wltswap/provider.go

Coverage Regressions

Lines Coverage ∆ File
1
22.46
8.59% wltswap/swap.go
Jobs
ID Job ID Ran Files Coverage
1 25849751291.1 14 May 2026 08:29AM UTC 118
21.59
GitHub Action Run
Source Files on build 25849751291
  • Tree
  • List 118
  • Changed 5
  • Source Changed 5
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #25849751291
  • 012b14d3 on github
  • Prev Build on master (#25848613067)
  • Next Build on master (#25854519816)
  • 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