Repository navigation
refactor(redis): sealed RedisReply, typed command arguments, the test fake out of lib (#1571) - #1722
Merged
Merged
Conversation
…mmand arguments are typed, RedisConnectionTestFake moves to test/ (#1571)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1571
RedisReply(core/database/redis_reply.dart):RedisNil,RedisInt,RedisSimple,RedisBulk,RedisArray,RedisErrorReply, parsed once from what theredispackage returns.asInt(),asArray(),asBulk(),asText(),asDouble(),asBulkOrNull()throwRedisProtocolExceptionon a wrong shape, whereredisReplyInt(reply, -1)turned it into a number.RedisConnection.command(List<Object>)returns aRedisReply. Arguments areString | int | double | Uint8List | RedisBulkValue, converted in one place; anything else is anArgumentErrorbefore it reaches the wire.sendCommandstays as the raw call for the CLI terminal and the fakes.scan,getMaxDatabases,keyType,ttl,typesAndTtls,get,hgetall,hscan,lrange,lindex,smembers,sscan,zrangeWithScores, the length anddelcounts,exists,renamenx,delMany) use it; the nine hand-writtenis List/length == 2checks are two small helpers (_cursorAndBulks,_pairs).RedisConnectionTestFake(~280 lines that shipped in the release binary) is nowtest/support/redis_connection_test_fake.dart; nine test files import it from there.redis_connection.dartwent from 1162 to 848 lines.Behaviour: the same for a real server. What changes is a reply of the wrong shape: it now throws instead of becoming 0, -1 or an empty list. The existing Redis, database, nosql, workspace and e2e tests pass unchanged (1262 locally), so the fakes already answered in the right shapes.
Tests:
redis_reply_test.dart(whatRedisReply.frommakes of each raw reply, accessors, the exception, non-UTF-8 bytes,commandargument conversion and refusal).