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

microlinkhq / keyvhq / 40739756220
97%

Build:
DEFAULT BRANCH: master
Ran 28 Oct 2026 05:55PM UTC
Jobs 14
Files 14
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

28 Oct 2026 05:52PM UTC coverage: 97.015% (+0.3%) from 96.721%
40739756220

push

github

web-flow
fix(redis): keep scanning until the cursor returns to 0 (#288)

* test(redis): iterate a namespace whose SCAN pages come back empty

Seeds 1000 keys outside the namespace and 5 inside it, so the default
SCAN COUNT returns empty pages with a non-zero cursor before reaching
the namespace keys. On master the iterator yields 0 of the 5 entries.

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

* fix(redis): keep scanning until the cursor returns to 0

The iterator returned as soon as a SCAN page had no keys. Redis only
signals the end of a scan with cursor 0; a page may be empty while
the cursor is still non-zero, which is common when the namespace
matches few keys. The iterator stopped early and yielded a partial
or empty result.

Iterate with a loop that ends on cursor '0' and skips the MGET for
empty pages. The loop also replaces the recursive generator, so a
long scan no longer stacks one delegating generator per page.

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

* fix(redis): escape namespace globs and skip missing scan keys

SCAN MATCH treats * ? [ and \ as globs, so a namespace such as [ab]
never yielded or cleared its own keys, and a* cleared neighboring
namespaces. Escape those characters in the shared match pattern.

MGET returns null when a key disappears between SCAN and MGET. Yielding
that null makes Keyv throw while reading expires. Skip those keys.

Co-authored-by: Cursor <cursoragent@cursor.com>

* refactor(redis): guard the empty SCAN page before MGET

The empty-page branch wrapped the fetch and yield. A continue keeps
that path at the top of the loop.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

344 of 368 branches covered (93.48%)

Branch coverage included in aggregate %.

17 of 17 new or added lines in 1 file covered. (100.0%)

1021 of 1039 relevant lines covered (98.27%)

65.91 hits per line

Jobs
ID Job ID Ran Files Coverage
1 @keyvhq/mongo - 40739756220.1 28 Oct 2026 05:55PM UTC 1
97.5
GitHub Action Run
2 @keyvhq/sqlite - 40739756220.2 28 Oct 2026 05:55PM UTC 1
89.09
GitHub Action Run
3 @keyvhq/redis - 40739756220.3 28 Oct 2026 05:55PM UTC 1
99.04
GitHub Action Run
4 @keyvhq/postgres - 40739756220.4 28 Oct 2026 05:56PM UTC 1
91.3
GitHub Action Run
5 @keyvhq/multi - 40739756220.5 28 Oct 2026 05:55PM UTC 1
100.0
GitHub Action Run
6 @keyvhq/sql - 40739756220.6 28 Oct 2026 05:55PM UTC 1
95.3
GitHub Action Run
7 @keyvhq/max-size - 40739756220.7 28 Oct 2026 05:56PM UTC 1
91.89
GitHub Action Run
8 @keyvhq/mysql - 40739756220.8 28 Oct 2026 05:56PM UTC 1
97.67
GitHub Action Run
9 @keyvhq/offline - 40739756220.9 28 Oct 2026 05:56PM UTC 1
100.0
GitHub Action Run
10 @keyvhq/core - 40739756220.10 28 Oct 2026 05:55PM UTC 1
96.88
GitHub Action Run
11 @keyvhq/file - 40739756220.11 28 Oct 2026 05:55PM UTC 1
94.64
GitHub Action Run
12 @keyvhq/memoize - 40739756220.12 28 Oct 2026 05:56PM UTC 1
100.0
GitHub Action Run
13 @keyvhq/stats - 40739756220.13 28 Oct 2026 05:55PM UTC 1
98.68
GitHub Action Run
14 @keyvhq/compress - 40739756220.14 28 Oct 2026 05:55PM UTC 1
100.0
GitHub Action Run
Source Files on build 40739756220
  • Tree
  • List 14
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #40739756220
  • bfb2cbdc on github
  • Prev Build on master (#40682665258)
  • Next Build on master (#40743697818)
  • 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