All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
[1.0.3] - 2026-06-12
Added
SCARD– set cardinality (Store.scard/2and server handler).- Unit and integration tests for
SCARD(includingWRONGTYPEon non-set keys). - README section documenting
SCARDbehaviour and limitations.
[1.0.2] - 2026-06-12
Fixed
SCAN/KEYSMATCHnow supports full Redis-style glob patterns (multiple*,?, character classes, escapes). Fixes patterns such as*@*that were previously ignored and returned no keys.
Added
FauxRedis.Glob– internal glob matcher shared byStore.scan/3andKEYS.- Unit and integration tests for
MATCHpatterns andSCANwithoutMATCH.
[1.0.1] - 2026-04-07
Fixed
- Compiler warnings (unused bindings in
Store.match_pattern?/2,ServerSCAN handler). - Credo “nested too deep” in
Store.srem/3andServer.extract_scan_count/1(small refactors). - Dialyzer:
plt_add_apps: [:ex_unit]and ignore patterns for ExUnit macro-expanded calls inFauxRedis.Case; Dialyzer clean withex_doconly in:dev. - Integration test “pipelining many commands” assertion aligned with Redis
INCRsemantics afterSET.
Changed
- Hex / CI: publish tarball with
MIX_ENV=prod(mix hex.publish package), publish docs withMIX_ENV=dev(mix hex.publish docs) soex_docstaysonly: :dev. - Documentation (ExDoc):
groups_for_modules(API vs implementation),source_reffor GitHub links, fixed@typedoclink tot:FauxRedis.response_specinMockRule,FauxRedismodule doc listsaddress/1.
[1.0.0] - 2026-04-06
Changed
- First stable Hex release; public API aligned with 0.1.x.
[0.1.0] - 2026-03-06
Added
- Initial release of FauxRedis – a controllable dummy Redis server for integration testing (ejabberd/XMPP-friendly).
- RESP2 protocol implementation with parser and encoder.
- TCP server and per-connection processes with pipelining support.
- In-memory store supporting strings, hashes, sets, lists, TTLs and basic numeric operations.
- Mocking engine with stubs/expectations, sequential responses, delays, timeouts, connection closes, protocol errors and partial replies.
- Minimal pub/sub support (
PUBLISH,SUBSCRIBE,UNSUBSCRIBE). - ExUnit helper case template and example tests.
- GitHub Actions CI, Credo, formatter and dialyzer configuration.