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

akvo / akvo-mis / #637
88%

Build:
DEFAULT BRANCH: main
Ran 21 May 2026 09:18AM UTC
Jobs 1
Files 109
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

21 May 2026 09:11AM UTC coverage: 88.055% (-0.02%) from 88.073%
#637

push

coveralls-python

web-flow
Feature/222 mobile rename saved to draft and improve statistics (#223)

* [#220] fix(sqlite): Phase 0+1 — fix defineSyncFormSubmissionTask and eliminate close/delete races

Phase 0 — Functional bug:
- background-task.js: defineSyncFormSubmissionTask now opens its own DB connection
  and passes it to syncFormSubmission (was called with undefined, always returned Failed)

Phase 1 — Crash eliminators:
- background-task.js: remove syncFormVersion internal db.closeAsync (ownership violation,
  caused Sentry #7286813050 — NativeStatement.finalizeAsync on closed resource)
- background-task.js: add finally-close to defineSyncFormVersionTask, registerBackgroundTask,
  syncDatapointsBackground (was scattered across early returns and success path only)
- cascades.js: fix dropFiles forEach(async) → reduce (fire-and-forget deletions)
- cascades.js: fix close/delete race — openDatabaseSync → closeSync before deleteAsync
- cascades.js: fix loadDataSource leaked connection — add outer try/finally closeAsync

Co-Authored-By: Claude <noreply@anthropic.com>

* [#220] fix(sqlite): Phase 2 — replace forEach(async) with awaited reduce

- FormPage.js: refreshForm made async; cascade close converted from
  forEach+closeAsync to reduce+closeSync; all callers now await refreshForm()
- AddUser.js: handleGetAllForms sequential form+cascade fetching via reduce
  with inner Promise.allSettled for concurrent cascade downloads
- AuthForm.js: handleGetAllForms parallel fetch via Promise.allSettled,
  sequential DB write via reduce to prevent overlapping upserts

Co-Authored-By: Claude <noreply@anthropic.com>

* [#220] fix(sqlite): Phase 3 — await fire-and-forget DB write, catch unhandled rejection

- SettingsForm.js: handleOnSwitch made async; DB write awaited inside try/catch
  with Sentry capture to prevent unhandled rejection crash on switch toggle
- SyncService.js: setInterval onSync() now has .catch(Sentry.captureException)
  to prevent unhandled rejection from crashing the app ... (continued)

4997 of 5827 branches covered (85.76%)

Branch coverage included in aggregate %.

9629 of 10783 relevant lines covered (89.3%)

0.89 hits per line

Coverage Regressions

Lines Coverage ∆ File
2
94.03
-1.0% utils/custom_generator.py
1
98.43
-0.52% api/v1/v1_profile/models.py
Jobs
ID Job ID Ran Files Coverage
1 #637.1 21 May 2026 09:18AM UTC 109
88.06
Source Files on build #637
  • Tree
  • List 109
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • e2ac832c on github
  • Prev Build on main
  • Next Build on main
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