TAP version 13 not ok 1 - redis v2.8.0 The canary is dead: ---
# undefinedadded 425 packages from 581 contributors and audited 853 packages in 46.647s
# found 22 vulnerabilities (16 low, 5 moderate, 1 critical)
# run `npm audit fix` to fix them, or `npm audit` for details
# > redis@2.8.0 test /tmp/ad49494f-6686-432d-a7c3-35aef87efef3/redis
# > nyc --cache mocha ./test/*.js ./test/commands/*.js --timeout=8000
# client authentication
# using options: detect_buffers: true;
# using javascript and IPv4
# - allows auth to be provided with 'auth' method
# - support redis 2.4 with retrying auth commands if still loading
# - emits error when auth is bad without callback
# - returns an error when auth is bad (empty string) with a callback
# - allows auth to be provided as part of redis url and do not fire commands before auth is done
# - allows auth and database to be provided as part of redis url query parameter
# - allows auth to be provided as config option for client
# - allows auth and no_ready_check to be provided as config option for client
# - allows auth to be provided post-hoc with auth method
# - reconnects with appropriate authentication while offline commands are present
# - should return an error if the password is not correct and a callback has been provided
# - should emit an error if the password is not correct and no callback has been provided
# - allows auth to be provided post-hoc with auth method again
# - does not allow any commands to be processed if not authenticated using no_ready_check true
# - does not allow auth to be provided post-hoc with auth method if not authenticated before
# - should emit an error if the provided password is faulty
# - pubsub working with auth
# 1) individual commands work properly with batch
# using javascript and IPv6
# - allows auth to be provided with 'auth' method
# - support redis 2.4 with retrying auth commands if still loading
# - emits error when auth is bad without callback
# - returns an error when auth is bad (empty string) with a callback
# - allows auth to be provided as config option for client
# - allows auth and no_ready_check to be provided as config option for client
# - allows auth to be provided post-hoc with auth method
# - reconnects with appropriate authentication while offline commands are present
# - should return an error if the password is not correct and a callback has been provided
# - should emit an error if the password is not correct and no callback has been provided
# - allows auth to be provided post-hoc with auth method again
# - does not allow any commands to be processed if not authenticated using no_ready_check true
# - does not allow auth to be provided post-hoc with auth method if not authenticated before
# - should emit an error if the provided password is faulty
# - pubsub working with auth
# 2) individual commands work properly with batch
# using javascript and /tmp/redis.sock
# - allows auth to be provided with 'auth' method
# - support redis 2.4 with retrying auth commands if still loading
# - emits error when auth is bad without callback
# - returns an error when auth is bad (empty string) with a callback
# - allows auth to be provided as config option for client
# - allows auth and no_ready_check to be provided as config option for client
# - allows auth to be provided post-hoc with auth method
# - reconnects with appropriate authentication while offline commands are present
# - should return an error if the password is not correct and a callback has been provided
# - should emit an error if the password is not correct and no callback has been provided
# - allows auth to be provided post-hoc with auth method again
# - does not allow any commands to be processed if not authenticated using no_ready_check true
# - does not allow auth to be provided post-hoc with auth method if not authenticated before
# - should emit an error if the provided password is faulty
# - pubsub working with auth
# 3) individual commands work properly with batch
# using options: detect_buffers: false;
# using javascript and IPv4
# - allows auth to be provided with 'auth' method
# - support redis 2.4 with retrying auth commands if still loading
# - emits error when auth is bad without callback
# - returns an error when auth is bad (empty string) with a callback
# - allows auth to be provided as part of redis url and do not fire commands before auth is done
# - allows auth and database to be provided as part of redis url query parameter
# - allows auth to be provided as config option for client
# - allows auth and no_ready_check to be provided as config option for client
# - allows auth to be provided post-hoc with auth method
# - reconnects with appropriate authentication while offline commands are present
# - should return an error if the password is not correct and a callback has been provided
# - should emit an error if the password is not correct and no callback has been provided
# - allows auth to be provided post-hoc with auth method again
# - does not allow any commands to be processed if not authenticated using no_ready_check true
# - does not allow auth to be provided post-hoc with auth method if not authenticated before
# - should emit an error if the provided password is faulty
# - pubsub working with auth
# 4) individual commands work properly with batch
# using javascript and IPv6
# - allows auth to be provided with 'auth' method
# - support redis 2.4 with retrying auth commands if still loading
# - emits error when auth is bad without callback
# - returns an error when auth is bad (empty string) with a callback
# - allows auth to be provided as config option for client
# - allows auth and no_ready_check to be provided as config option for client
# - allows auth to be provided post-hoc with auth method
# - reconnects with appropriate authentication while offline commands are present
# - should return an error if the password is not correct and a callback has been provided
# - should emit an error if the password is not correct and no callback has been provided
# - allows auth to be provided post-hoc with auth method again
# - does not allow any commands to be processed if not authenticated using no_ready_check true
# - does not allow auth to be provided post-hoc with auth method if not authenticated before
# - should emit an error if the provided password is faulty
# - pubsub working with auth
# 5) individual commands work properly with batch
# using javascript and /tmp/redis.sock
# - allows auth to be provided with 'auth' method
# - support redis 2.4 with retrying auth commands if still loading
# - emits error when auth is bad without callback
# - returns an error when auth is bad (empty string) with a callback
# - allows auth to be provided as config option for client
# - allows auth and no_ready_check to be provided as config option for client
# - allows auth to be provided post-hoc with auth method
# - reconnects with appropriate authentication while offline commands are present
# - should return an error if the password is not correct and a callback has been provided
# - should emit an error if the password is not correct and no callback has been provided
# - allows auth to be provided post-hoc with auth method again
# - does not allow any commands to be processed if not authenticated using no_ready_check true
# - does not allow auth to be provided post-hoc with auth method if not authenticated before
# - should emit an error if the provided password is faulty
# - pubsub working with auth
# 6) individual commands work properly with batch
# The 'batch' method
# using options: detect_buffers: true;
# using javascript and IPv4
# when not connected
# returns an empty array for missing commands
# returns an error for batch with commands
# returns an empty array for missing commands if promisified
# when connected
# returns an empty array and keep the execution order in takt
# runs normal calls inbetween batch
# returns an empty array if promisified
# returns an empty result array
# fail individually when one command fails using chaining notation
# fail individually when one command fails and emit the error if no callback has been provided
# fail individually when one command in an array of commands fails
# handles multiple operations being applied to a set
# allows multiple operations to be performed using constructor with all kinds of syntax
# converts a non string key to a string
# runs a batch without any further commands
# runs a batch without any further commands and without callback
# allows multiple operations to be performed using a chaining API
# allows multiple commands to work the same as normal to be performed using a chaining API
# allows multiple commands to work the same as normal to be performed using a chaining API promisified
# allows an array to be provided indicating multiple operations to perform
# allows multiple operations to be performed on a hash
# should work without any callback or arguments
# using options: detect_buffers: false;
# using javascript and IPv4
# when not connected
# returns an empty array for missing commands
# returns an error for batch with commands
# returns an empty array for missing commands if promisified
# when connected
# returns an empty array and keep the execution order in takt
# runs normal calls inbetween batch
# returns an empty array if promisified
# returns an empty result array
# fail individually when one command fails using chaining notation
# fail individually when one command fails and emit the error if no callback has been provided
# fail individually when one command in an array of commands fails
# handles multiple operations being applied to a set
# allows multiple operations to be performed using constructor with all kinds of syntax
# converts a non string key to a string
# runs a batch without any further commands
# runs a batch without any further commands and without callback
# allows multiple operations to be performed using a chaining API
# allows multiple commands to work the same as normal to be performed using a chaining API
# allows multiple commands to work the same as normal to be performed using a chaining API promisified
# allows an array to be provided indicating multiple operations to perform
# allows multiple operations to be performed on a hash
# should work without any callback or arguments
# master slave sync
# - sync process and no master should delay ready being emitted for slaves
# connection tests
# unofficially support for a private stream
# quit on lost connections
# calling quit while the connection is down should not end in reconnecting version a
# calling quit while the connection is down should not end in reconnecting version b
# calling quit while the connection is down without offline queue should end the connection right away
# calling quit while connected without offline queue should end the connection when all commands have finished
# do not quit before connected or a connection issue is detected
# quit "succeeds" even if the client connection is closed while doing so
# quit right away if connection drops while quit command is on the fly
# using options: detect_buffers: true;
# using javascript and IPv4
# on lost connection
# emit an error after max retry attempts and do not try to reconnect afterwards (545ms)
# emit an error after max retry timeout and do not try to reconnect afterwards (605ms)
# end connection while retry is still ongoing (206ms)
# can not connect with wrong host / port in the options object
# emits error once if reconnecting after command has been executed but not yet returned without callback
# retryStrategy used to reconnect with individual error (255ms)
# retry_strategy used to reconnect (254ms)
# retryStrategy used to reconnect with defaults (50ms)
# when not connected
# emit an error after the socket timeout exceeded the connect_timeout time (501ms)
# use the system socket timeout if the connect_timeout has not been provided
# clears the socket timeout after a connection has been established
# connect with host and port provided in the options object
# connect with path provided in the options object
# connects correctly with args
# connects correctly with default values
# connects with a port only
# connects correctly to localhost
# connects correctly to the provided host with the port set to null
# connects correctly to localhost and no ready check
# connects correctly to the provided host with the port set to undefined
# connects correctly even if the info command is not present on the redis server
# fake the stream to mock redis
# allows connecting with the redis url to the default host and port, select db 3 and warn about duplicate db option
# allows connecting with the redis url and the default port and auth provided even though it is not required
# allows connecting with the redis url as first parameter and the options as second parameter
# allows connecting with the redis url in the options object and works with protocols other than the redis protocol (e.g. http)
# allows connecting with the redis url and no auth and options as second parameter
# allows connecting with the redis url and no auth and options as third parameter
# redis still loading <= 500 (503ms)
# redis still loading > 1000ms (1003ms)
# using options: detect_buffers: false;
# using javascript and IPv4
# on lost connection
# emit an error after max retry attempts and do not try to reconnect afterwards (544ms)
# emit an error after max retry timeout and do not try to reconnect afterwards (604ms)
# end connection while retry is still ongoing (208ms)
# can not connect with wrong host / port in the options object
# emits error once if reconnecting after command has been executed but not yet returned without callback
# retryStrategy used to reconnect with individual error (254ms)
# retry_strategy used to reconnect (252ms)
# retryStrategy used to reconnect with defaults (52ms)
# when not connected
# emit an error after the socket timeout exceeded the connect_timeout time (502ms)
# use the system socket timeout if the connect_timeout has not been provided
# clears the socket timeout after a connection has been established
# connect with host and port provided in the options object
# connect with path provided in the options object
# connects correctly with args
# connects correctly with default values
# connects with a port only
# connects correctly to localhost
# connects correctly to the provided host with the port set to null
# connects correctly to localhost and no ready check
# connects correctly to the provided host with the port set to undefined
# connects correctly even if the info command is not present on the redis server
# fake the stream to mock redis
# allows connecting with the redis url to the default host and port, select db 3 and warn about duplicate db option
# allows connecting with the redis url and the default port and auth provided even though it is not required
# allows connecting with the redis url as first parameter and the options as second parameter
# allows connecting with the redis url in the options object and works with protocols other than the redis protocol (e.g. http)
# allows connecting with the redis url and no auth and options as second parameter
# allows connecting with the redis url and no auth and options as third parameter
# redis still loading <= 500 (503ms)
# redis still loading > 1000ms (1004ms)
# errors
# AbortError
# should inherit from Error
# should list options properties but not name and message
# should change name and message
# AggregateError
# should inherit from Error and AbortError
# should list options properties but not name and message
# should change name and message
# detect_buffers
# get
# first argument is a string
# returns a string
# returns a string when executed as part of transaction
# first argument is a buffer
# returns a buffer
# returns a bufffer when executed as part of transaction
# multi.hget
# can interleave string and buffer results
# batch.hget
# can interleave string and buffer results
# hmget
# first argument is a string
# returns strings for keys requested
# returns strings for keys requested in transaction
# handles array of strings with undefined values (repro
#344)
# handles array of strings with undefined values in transaction (repro
#344)
# first argument is a buffer
# returns buffers for keys requested
# returns buffers for keys requested in transaction
# returns buffers for keys requested in .batch
# hgetall
# first argument is a string
# returns string values
# returns string values when executed in transaction
# returns string values when executed in .batch
# first argument is a buffer
# returns buffer values
# returns buffer values when executed in transaction
# returns buffer values when executed in .batch
# stack traces
# should return good traces with NODE_ENV=development set (430ms)
# should return good traces with NODE_DEBUG=redis env set (439ms)
# should always return good stack traces for rejected offline commands
# The 'multi' method
# regression test
# saved buffers with charsets different than utf-8 (issue
#913) (570ms)
# pipeline limit
# do not exceed maximum string size (2154ms)
# using options: detect_buffers: true;
# using javascript and IPv4
# when not connected
# reports an error
# reports an error if promisified
# when connected
# executes a pipelined multi properly in combination with the offline queue
# executes a pipelined multi properly after a reconnect in combination with the offline queue (211ms)
# monitor and transactions do not work together
# results in a execabort
# results in a execabort
#2
# sanity check
# when connection is broken
# return an error even if connection is in broken mode if callback is present
# does not emit an error twice if connection is in broken mode with no callback
# when ready
# returns an empty result array
# runs normal calls in-between multis
# runs simultaneous multis with the same client
# runs simultaneous multis with the same client version 2
# roles back a transaction when one command in a sequence of commands fails
# roles back a transaction when one command in an array of commands fails
# handles multiple operations being applied to a set
# allows multiple operations to be performed using constructor with all kinds of syntax
# converts a non string key to a string
# runs a multi without any further commands
# allows multiple operations to be performed using a chaining API
# allows multiple commands to work the same as normal to be performed using a chaining API
# allows multiple commands to work the same as normal to be performed using a chaining API promisified
# allows an array to be provided indicating multiple operations to perform
# allows multiple operations to be performed on a hash
# reports EXECABORT exceptions when they occur (while queueing)
# reports multiple exceptions when they occur (while EXEC is running)
# reports multiple exceptions when they occur (while EXEC is running) promisified
# reports multiple exceptions when they occur (while EXEC is running) and calls cb
# emits an error if no callback has been provided and execabort error occured
# should work without any callback
# should not use a transaction with exec_atomic if no command is used
# should not use a transaction with exec_atomic if only one command is used
# should use transaction with exec_atomic and more than one command used
# do not mutate arguments in the multi constructor
# works properly after a reconnect. issue
#897 (202ms)
# emits error once if reconnecting after multi has been executed but not yet returned without callback (202ms)
# 7) indivdual commands work properly with multi
# using options: detect_buffers: false;
# using javascript and IPv4
# when not connected
# reports an error
# reports an error if promisified
# when connected
# executes a pipelined multi properly in combination with the offline queue
# executes a pipelined multi properly after a reconnect in combination with the offline queue (204ms)
# monitor and transactions do not work together
# results in a execabort
# results in a execabort
#2
# sanity check
# when connection is broken
# return an error even if connection is in broken mode if callback is present
# does not emit an error twice if connection is in broken mode with no callback
# when ready
# returns an empty result array
# runs normal calls in-between multis
# runs simultaneous multis with the same client
# runs simultaneous multis with the same client version 2
# roles back a transaction when one command in a sequence of commands fails
# roles back a transaction when one command in an array of commands fails
# handles multiple operations being applied to a set
# allows multiple operations to be performed using constructor with all kinds of syntax
# converts a non string key to a string
# runs a multi without any further commands
# allows multiple operations to be performed using a chaining API
# allows multiple commands to work the same as normal to be performed using a chaining API
# allows multiple commands to work the same as normal to be performed using a chaining API promisified
# allows an array to be provided indicating multiple operations to perform
# allows multiple operations to be performed on a hash
# reports EXECABORT exceptions when they occur (while queueing)
# reports multiple exceptions when they occur (while EXEC is running)
# reports multiple exceptions when they occur (while EXEC is running) promisified
# reports multiple exceptions when they occur (while EXEC is running) and calls cb
# emits an error if no callback has been provided and execabort error occured
# should work without any callback
# should not use a transaction with exec_atomic if no command is used
# should not use a transaction with exec_atomic if only one command is used
# should use transaction with exec_atomic and more than one command used
# do not mutate arguments in the multi constructor
# works properly after a reconnect. issue
#897 (201ms)
# emits error once if reconnecting after multi has been executed but not yet returned without callback (203ms)
# 8) indivdual commands work properly with multi
# The node_redis client
# individual commands sanity check
# convert minus to underscore in Redis function names
# reset the parser while reconnecting (See
#1190)
# The 'add_command' method
# camel case and snakeCase version exists
# converts special characters in functions names to lowercase
# using options: detect_buffers: true;
# using javascript and IPv4
# when connected
# duplicate
# check if all options got copied properly
# check if all new options replaced the old ones
# works with a callback
# works with a callback and errors out
# works with a promises
# works with a promises and errors
# big data
# safe strings that are bigger than 30000 characters
# safe strings that are bigger than 30000 characters with multi
# send_command
# omitting args should be fine
# using multi with sendCommand should work as individual command instead of using the internal multi
# multi should be handled special
# using another type as cb should throw
# command argument has to be of type string
# args may only be of type Array or undefined
# passing a callback as args and as callback should throw
# multi should be handled special
# the args array may contain a arbitrary number of arguments
# send_command with callback as args
# retry_unfulfilled_commands
# should retry all commands instead of returning an error if a command did not yet return after a connection loss (303ms)
# should retry all commands even if the offline queue is disabled (303ms)
# .end
# used without flush / flush set to false
# used with flush set to true
# does not emit abort errors if no callback was present while not being in debug_mode (101ms)
# commands after using .quit should fail
# - return an error in the callback
# - return an error in the callback version two
# - emit an error
# when redis closes unexpectedly
# reconnects and can retrieve the pre-existing data (202ms)
# reconnects properly when monitoring (202ms)
# and it's subscribed to a channel
# reconnects, unsubscribes, and can retrieve the pre-existing data (202ms)
# reconnects, unsubscribes, and can retrieve the pre-existing data of a explicit channel (203ms)
# domain
# allows client to be executed from within domain
# keeps the same domain by using the offline queue
# catches all errors from within the domain
# idle
# emits idle as soon as there are no outstanding commands
# utf8
# handles utf-8 keys
# unref
# exits subprocess as soon as final command is processed (258ms)
# execution order / fire query while loading
# keep execution order for commands that may fire while redis is still loading
# socket_nodelay
# true
# fires client.on('ready')
# client is functional
# false
# fires client.on('ready')
# client is functional
# defaults to true
# fires client.on('ready')
# client is functional
# retry_max_delay
# sets upper bound on how long client waits before reconnecting
# protocol error
# should gracefully recover and only fail on the already send commands
# enable_offline_queue
# true
# should emit drain if offline queue is flushed and nothing to buffer
# does not return an error and enqueues operation (76ms)
# enqueues operation and keep the queue while trying to reconnect (1122ms)
# flushes the command queue if connection is lost (544ms)
# false
# stream not writable
# emit an error and does not enqueues operation (52ms)
# flushes the command queue if connection is lost (203ms)
# using options: detect_buffers: false;
# using javascript and IPv4
# when connected
# duplicate
# check if all options got copied properly
# check if all new options replaced the old ones
# works with a callback
# works with a callback and errors out
# works with a promises
# works with a promises and errors
# big data
# safe strings that are bigger than 30000 characters
# safe strings that are bigger than 30000 characters with multi
# send_command
# omitting args should be fine
# using multi with sendCommand should work as individual command instead of using the internal multi
# multi should be handled special
# using another type as cb should throw
# command argument has to be of type string
# args may only be of type Array or undefined
# passing a callback as args and as callback should throw
# multi should be handled special
# the args array may contain a arbitrary number of arguments
# send_command with callback as args
# retry_unfulfilled_commands
# should retry all commands instead of returning an error if a command did not yet return after a connection loss (304ms)
# should retry all commands even if the offline queue is disabled (303ms)
# .end
# used without flush / flush set to false
# used with flush set to true
# does not emit abort errors if no callback was present while not being in debug_mode (103ms)
# commands after using .quit should fail
# - return an error in the callback
# - return an error in the callback version two
# - emit an error
# when redis closes unexpectedly
# reconnects and can retrieve the pre-existing data (202ms)
# reconnects properly when monitoring (202ms)
# and it's subscribed to a channel
# reconnects, unsubscribes, and can retrieve the pre-existing data (202ms)
# reconnects, unsubscribes, and can retrieve the pre-existing data of a explicit channel (201ms)
# domain
# allows client to be executed from within domain
# keeps the same domain by using the offline queue
# catches all errors from within the domain
# idle
# emits idle as soon as there are no outstanding commands
# utf8
# handles utf-8 keys
# unref
# exits subprocess as soon as final command is processed (238ms)
# execution order / fire query while loading
# keep execution order for commands that may fire while redis is still loading
# socket_nodelay
# true
# fires client.on('ready')
# client is functional
# false
# fires client.on('ready')
# client is functional
# defaults to true
# fires client.on('ready')
# client is functional
# retry_max_delay
# sets upper bound on how long client waits before reconnecting
# protocol error
# should gracefully recover and only fail on the already send commands
# enable_offline_queue
# true
# should emit drain if offline queue is flushed and nothing to buffer
# does not return an error and enqueues operation (76ms)
# enqueues operation and keep the queue while trying to reconnect (1122ms)
# flushes the command queue if connection is lost (543ms)
# false
# stream not writable
# emit an error and does not enqueues operation (51ms)
# flushes the command queue if connection is lost (202ms)
# prefix key names
# using options: detect_buffers: true;
# using javascript and IPv4
# auto prefix set / get
# auto prefix set / get with .batch
# auto prefix set / get with .multi
# using options: detect_buffers: false;
# using javascript and IPv4
# auto prefix set / get
# auto prefix set / get with .batch
# auto prefix set / get with .multi
# publish/subscribe
# using options: detect_buffers: true;
# using javascript and IPv4
# should not publish a message multiple times per command (130ms)
# should not publish a message without any publish command (51ms)
# arguments variants
# disable resubscribe
# does not fire subscribe events after reconnecting (202ms)
# string_numbers and pub sub
# does not fire subscribe events after reconnecting
# subscribe
# fires a subscribe event for each channel subscribed to even after reconnecting (202ms)
# fires a subscribe event for each channel as buffer subscribed to even after reconnecting (204ms)
# receives messages on subscribed channel
# receives messages if subscribe is called after unsubscribe
# handles SUB_UNSUB_MSG_SUB
# handles SUB_UNSUB_MSG_SUB 2
# emits end event if quit is called from within subscribe
# subscribe; close; resubscribe with prototype inherited property names (405ms)
# multiple subscribe / unsubscribe commands
# reconnects properly with pub sub and select command (202ms)
# should not go into pubsub mode with unsubscribe commands
# handles multiple channels with the same channel name properly, even with buffers
# should only resubscribe to channels not unsubscribed earlier on a reconnect (202ms)
# unsubscribes, subscribes, unsubscribes... single and multiple entries mixed. Withouth callbacks
# unsubscribes, subscribes, unsubscribes... single and multiple entries mixed. Without callbacks
# unsubscribes, subscribes, unsubscribes... single and multiple entries mixed. Without callback and concret channels
# unsubscribes, subscribes, unsubscribes... with pattern matching
# unsubscribe
# fires an unsubscribe event
# puts client back into write mode
# does not complain when unsubscribe is called and there are no subscriptions
# executes callback when unsubscribe is called and there are no subscriptions
# psubscribe
# allows all channels to be subscribed to using a * pattern
# allows to listen to pmessageBuffer and pmessage
# punsubscribe
# does not complain when punsubscribe is called and there are no subscriptions
# executes callback when punsubscribe is called and there are no subscriptions
# fail for other commands while in pub sub mode
# return error if only pub sub commands are allowed
# emit error if only pub sub commands are allowed without callback
# using options: detect_buffers: false;
# using javascript and IPv4
# should not publish a message multiple times per command (130ms)
# should not publish a message without any publish command (51ms)
# arguments variants
# disable resubscribe
# does not fire subscribe events after reconnecting (201ms)
# string_numbers and pub sub
# does not fire subscribe events after reconnecting
# subscribe
# fires a subscribe event for each channel subscribed to even after reconnecting (201ms)
# fires a subscribe event for each channel as buffer subscribed to even after reconnecting (202ms)
# receives messages on subscribed channel
# receives messages if subscribe is called after unsubscribe
# handles SUB_UNSUB_MSG_SUB
# handles SUB_UNSUB_MSG_SUB 2
# emits end event if quit is called from within subscribe
# subscribe; close; resubscribe with prototype inherited property names (627ms)
# multiple subscribe / unsubscribe commands
# reconnects properly with pub sub and select command (203ms)
# should not go into pubsub mode with unsubscribe commands
# handles multiple channels with the same channel name properly, even with buffers
# should only resubscribe to channels not unsubscribed earlier on a reconnect (230ms)
# unsubscribes, subscribes, unsubscribes... single and multiple entries mixed. Withouth callbacks
# unsubscribes, subscribes, unsubscribes... single and multiple entries mixed. Without callbacks
# unsubscribes, subscribes, unsubscribes... single and multiple entries mixed. Without callback and concret channels
# unsubscribes, subscribes, unsubscribes... with pattern matching
# unsubscribe
# fires an unsubscribe event
# puts client back into write mode
# does not complain when unsubscribe is called and there are no subscriptions
# executes callback when unsubscribe is called and there are no subscriptions
# psubscribe
# allows all channels to be subscribed to using a * pattern
# allows to listen to pmessageBuffer and pmessage
# punsubscribe
# does not complain when punsubscribe is called and there are no subscriptions
# executes callback when punsubscribe is called and there are no subscriptions
# fail for other commands while in pub sub mode
# return error if only pub sub commands are allowed
# emit error if only pub sub commands are allowed without callback
# rename commands
# using options: detect_buffers: true;
# using javascript and IPv4
# - allows to use renamed functions
# - should also work with batch
# - should also work with multi
# - should also work with multi and abort transaction
# - should also work prefixed commands
# using options: detect_buffers: false;
# using javascript and IPv4
# - allows to use renamed functions
# - should also work with batch
# - should also work with multi
# - should also work with multi and abort transaction
# - should also work prefixed commands
# return_buffers
# using options: detect_buffers: true;
# using javascript and IPv4
# get
# first argument is a string
# returns a buffer
# returns a bufffer when executed as part of transaction
# multi.hget
# returns buffers
# batch.hget
# returns buffers
# hmget
# first argument is a string
# handles array of strings with undefined values in transaction (repro
#344)
# first argument is a buffer
# returns buffers for keys requested
# returns buffers for keys requested in transaction
# returns buffers for keys requested in .batch
# hgetall
# first argument is a string
# returns buffer values
# returns buffer values when executed in transaction
# returns buffer values when executed in .batch
# first argument is a buffer
# returns buffer values
# returns buffer values when executed in transaction
# returns buffer values when executed in .batch
# publish/subscribe
# receives buffer messages
# using options: detect_buffers: false;
# using javascript and IPv4
# get
# first argument is a string
# returns a buffer
# returns a bufffer when executed as part of transaction
# multi.hget
# returns buffers
# batch.hget
# returns buffers
# hmget
# first argument is a string
# handles array of strings with undefined values in transaction (repro
#344)
# first argument is a buffer
# returns buffers for keys requested
# returns buffers for keys requested in transaction
# returns buffers for keys requested in .batch
# hgetall
# first argument is a string
# returns buffer values
# returns buffer values when executed in transaction
# returns buffer values when executed in .batch
# first argument is a buffer
# returns buffer values
# returns buffer values when executed in transaction
# returns buffer values when executed in .batch
# publish/subscribe
# receives buffer messages
# TLS connection tests
# 9) "before all" hook
# createClient options
# port as first parameter
# pass the options in the second parameter after a port
# pass the options in the third parameter after a port and host being set to null
# pass the options in the third parameter after a port and host being set to undefined
# pass the options in the third parameter after a port and host
# should throw with three parameters all set to a truthy value
# unix socket as first parameter
# pass the options in the second parameter after a port
# pass the options in the third parameter after a port and host being set to null
# redis url as first parameter
# empty redis url including options as second parameter
# begin with two slashes including options as third parameter
# duplicated, identical query options including options obj
# should throw on duplicated, non-identical query options
# should throw without protocol slashes
# warns on protocol other than redis in the redis url
# no parameters or set to null / undefined
# no parameters
# set to null
# set to undefined
# only an options object is passed
# with options
# without options
# should throw with more parameters
# including url as option
# faulty data
# throws on strange connection info
# utils.js
# clone
# ignore the object prototype and clone a nested array / object
# replace falsy values with an empty object as return value
# transform camelCase options to snake_case and add the camel_case option
# throws on circular data
# print helper
# callback with reply
# callback with error
# reply_in_order
# no elements in either queue. Reply in the next tick with callback
# no elements in either queue. Reply in the next tick without callback
# elements in the offline queue. Reply after the offline queue is empty and respect the command_obj callback
# elements in the offline queue. Reply after the offline queue is empty and respect the command_obj error emit
# elements in the offline queue and the command_queue. Reply all other commands got handled respect the command_obj
# The 'blpop' method
# using options: detect_buffers: true;
# using javascript and IPv4
# pops value immediately if list contains values
# pops value immediately if list contains values using array notation
# waits for value if list is not yet populated
# times out after specified time (1534ms)
# using options: detect_buffers: false;
# using javascript and IPv4
# pops value immediately if list contains values
# pops value immediately if list contains values using array notation
# waits for value if list is not yet populated
# times out after specified time (1602ms)
# The 'client' method
# using options: detect_buffers: true;
# using javascript and IPv4
# list
# lists connected clients
# lists connected clients when invoked with multi's chaining syntax
# lists connected clients when invoked with array syntax on client
# lists connected clients when invoked with multi's array syntax
# reply
# as normal command
# - on
# - off
# - skip
# in a batch context
# - on
# - off
# - skip
# setname / getname
# sets the name
# using options: detect_buffers: false;
# using javascript and IPv4
# list
# lists connected clients
# lists connected clients when invoked with multi's chaining syntax
# lists connected clients when invoked with array syntax on client
# lists connected clients when invoked with multi's array syntax
# reply
# as normal command
# - on
# - off
# - skip
# in a batch context
# - on
# - off
# - skip
# setname / getname
# sets the name
# The 'dbsize' method
# using options: detect_buffers: true;
# using javascript and IPv4
# when not connected
# reports an error
# when connected
# returns a zero db size
# when more data is added to Redis
# returns a larger db size
# using options: detect_buffers: false;
# using javascript and IPv4
# when not connected
# reports an error
# when connected
# returns a zero db size
# when more data is added to Redis
# returns a larger db size
# The 'del' method
# using options: detect_buffers: true;
# using javascript and IPv4
# allows a single key to be deleted
# allows del to be called on a key that does not exist
# allows multiple keys to be deleted
# allows multiple keys to be deleted with the array syntax
# allows multiple keys to be deleted with the array syntax and no callback
# using options: detect_buffers: false;
# using javascript and IPv4
# allows a single key to be deleted
# allows del to be called on a key that does not exist
# allows multiple keys to be deleted
# allows multiple keys to be deleted with the array syntax
# allows multiple keys to be deleted with the array syntax and no callback
# The 'eval' method
# using options: detect_buffers: true;
# using javascript and IPv4
# converts a float to an integer when evaluated
# returns a string
# converts boolean true to integer 1
# converts boolean false to null
# converts lua status code to string representation
# converts lua error to an error response
# represents a lua table appropritely
# populates keys and argv correctly
# allows arguments to be provided in array rather than as multiple parameters
# allows a script to be executed that accesses the redis API without callback
# allows a key to be incremented, and performs appropriate conversion from LUA type
# allows a bulk operation to be performed, and performs appropriate conversion from LUA type
# allows a multi mulk operation to be performed, with the appropriate type conversion
# returns an appropriate representation of Lua status reply
# returns an appropriate representation of a Lua error reply
# returns an appropriate representation of a Lua nil reply
# evalsha
# allows a script to be executed that accesses the redis API
# can execute a script if the SHA exists
# returns an error if SHA does not exist
# emit an error if SHA does not exist without any callback
# emits an error if SHA does not exist and no callback has been provided
# using options: detect_buffers: false;
# using javascript and IPv4
# converts a float to an integer when evaluated
# returns a string
# converts boolean true to integer 1
# converts boolean false to null
# converts lua status code to string representation
# converts lua error to an error response
# represents a lua table appropritely
# populates keys and argv correctly
# allows arguments to be provided in array rather than as multiple parameters
# allows a script to be executed that accesses the redis API without callback
# allows a key to be incremented, and performs appropriate conversion from LUA type
# allows a bulk operation to be performed, and performs appropriate conversion from LUA type
# allows a multi mulk operation to be performed, with the appropriate type conversion
# returns an appropriate representation of Lua status reply
# returns an appropriate representation of a Lua error reply
# returns an appropriate representation of a Lua nil reply
# evalsha
# allows a script to be executed that accesses the redis API
# can execute a script if the SHA exists
# returns an error if SHA does not exist
# emit an error if SHA does not exist without any callback
# emits an error if SHA does not exist and no callback has been provided
# The 'exists' method
# using options: detect_buffers: true;
# using javascript and IPv4
# returns 1 if the key exists
# returns 1 if the key exists with array syntax
# returns 0 if the key does not exist
# using options: detect_buffers: false;
# using javascript and IPv4
# returns 1 if the key exists
# returns 1 if the key exists with array syntax
# returns 0 if the key does not exist
# The 'expire' method
# using options: detect_buffers: true;
# using javascript and IPv4
# expires key after timeout (1052ms)
# expires key after timeout with array syntax (1052ms)
# using options: detect_buffers: false;
# using javascript and IPv4
# expires key after timeout (1052ms)
# expires key after timeout with array syntax (1052ms)
# The 'flushdb' method
# using options: detect_buffers: true;
# using javascript and IPv4
# when not connected
# reports an error
# when connected
# when there is data in Redis
# deletes all the keys
# results in a db size of zero
# results in a db size of zero without a callback
# using options: detect_buffers: false;
# using javascript and IPv4
# when not connected
# reports an error
# when connected
# when there is data in Redis
# deletes all the keys
# results in a db size of zero
# results in a db size of zero without a callback
# The 'geoadd' method
# using options: detect_buffers: true;
# using javascript and IPv4
# - returns 1 if the key exists
# using options: detect_buffers: false;
# using javascript and IPv4
# - returns 1 if the key exists
# The 'get' method
# using options: detect_buffers: true;
# using javascript and IPv4
# when not connected
# reports an error
# reports an error promisified
# when connected
# when the key exists in Redis
# gets the value correctly
# should not throw on a get without callback (even if it's not useful)
# when the key does not exist in Redis
# gets a null value
# using options: detect_buffers: false;
# using javascript and IPv4
# when not connected
# reports an error
# reports an error promisified
# when connected
# when the key exists in Redis
# gets the value correctly
# should not throw on a get without callback (even if it's not useful)
# when the key does not exist in Redis
# gets a null value
# The 'getset' method
# using options: detect_buffers: true;
# using javascript and IPv4
# when not connected
# reports an error
# when connected
# when the key exists in Redis
# gets the value correctly
# gets the value correctly with array syntax
# gets the value correctly with array syntax style 2
# when the key does not exist in Redis
# gets a null value
# using options: detect_buffers: false;
# using javascript and IPv4
# when not connected
# reports an error
# when connected
# when the key exists in Redis
# gets the value correctly
# gets the value correctly with array syntax
# gets the value correctly with array syntax style 2
# when the key does not exist in Redis
# gets a null value
# The 'hgetall' method
# using options: detect_buffers: true;
# using javascript and IPv4
# regular client
# handles simple keys and values
# handles fetching keys set using an object
# handles fetching a messing key
# binary client
# returns binary results
# using options: detect_buffers: false;
# using javascript and IPv4
# regular client
# handles simple keys and values
# handles fetching keys set using an object
# handles fetching a messing key
# binary client
# returns binary results
# The 'hincrby' method
# using options: detect_buffers: true;
# using javascript and IPv4
# increments a key that has already been set
# increments a key that has not been set
# using options: detect_buffers: false;
# using javascript and IPv4
# increments a key that has already been set
# increments a key that has not been set
# The 'hlen' method
# using options: detect_buffers: true;
# using javascript and IPv4
# reports the count of keys
# using options: detect_buffers: false;
# using javascript and IPv4
# reports the count of keys
# The 'hmget' method
# using options: detect_buffers: true;
# using javascript and IPv4
# allows keys to be specified using multiple arguments
# allows keys to be specified by passing an array without manipulating the array
# allows keys to be specified by passing an array as first argument
# allows a single key to be specified in an array
# allows keys to be specified that have not yet been set
# using options: detect_buffers: false;
# using javascript and IPv4
# allows keys to be specified using multiple arguments
# allows keys to be specified by passing an array without manipulating the array
# allows keys to be specified by passing an array as first argument
# allows a single key to be specified in an array
# allows keys to be specified that have not yet been set
# The 'hmset' method
# using options: detect_buffers: true;
# using javascript and IPv4
# handles redis-style syntax
# handles object-style syntax
# handles object-style syntax and the key being a number
# allows a numeric key
# allows a numeric key without callback
# allows an array without callback
# allows an array and a callback
# allows a key plus array without callback
# allows a key plus array and a callback
# handles object-style syntax without callback
# using options: detect_buffers: false;
# using javascript and IPv4
# handles redis-style syntax
# handles object-style syntax
# handles object-style syntax and the key being a number
# allows a numeric key
# allows a numeric key without callback
# allows an array without callback
# allows an array and a callback
# allows a key plus array without callback
# allows a key plus array and a callback
# handles object-style syntax without callback
# The 'hset' method
# using options: detect_buffers: true;
# using javascript and IPv4
# allows a value to be set in a hash
# handles an empty value
# handles empty key and value
# warns if someone passed a array either as field or as value
# does not error when a buffer and date are set as values on the same hash
# does not error when a buffer and date are set as fields on the same hash
# using options: detect_buffers: false;
# using javascript and IPv4
# allows a value to be set in a hash
# handles an empty value
# handles empty key and value
# warns if someone passed a array either as field or as value
# does not error when a buffer and date are set as values on the same hash
# does not error when a buffer and date are set as fields on the same hash
# The 'incr' method
# using options: detect_buffers: true;
# using javascript and IPv4
# when connected and a value in Redis
# count above the safe integers as numbers
# count above the safe integers as strings
# using options: detect_buffers: false;
# using javascript and IPv4
# when connected and a value in Redis
# count above the safe integers as numbers
# count above the safe integers as strings
# The 'info' method
# using options: detect_buffers: true;
# using javascript and IPv4
# update serverInfo after a info command
# works with optional section provided with and without callback
# check redis v.2.4 support
# emit error after a failure
# using options: detect_buffers: false;
# using javascript and IPv4
# update serverInfo after a info command
# works with optional section provided with and without callback
# check redis v.2.4 support
# emit error after a failure
# The 'keys' method
# using options: detect_buffers: true;
# using javascript and IPv4
# returns matching keys
# handles a large packet size
# handles an empty response
# using options: detect_buffers: false;
# using javascript and IPv4
# returns matching keys
# handles a large packet size
# handles an empty response
# The 'mget' method
# using options: detect_buffers: true;
# using javascript and IPv4
# handles fetching multiple keys in argument form
# handles fetching multiple keys via an array
# handles fetching multiple keys, when some keys do not exist
# handles fetching multiple keys, when some keys do not exist promisified
# using options: detect_buffers: false;
# using javascript and IPv4
# handles fetching multiple keys in argument form
# handles fetching multiple keys via an array
# handles fetching multiple keys, when some keys do not exist
# handles fetching multiple keys, when some keys do not exist promisified
# The 'monitor' method
# using options: detect_buffers: true;
# monitors commands on all redis clients and works in the correct order
# monitors returns strings in the rawOutput even with return_buffers activated
# monitors reconnects properly and works with the offline queue (202ms)
# monitors reconnects properly and works with the offline queue in a batch statement (202ms)
# monitor activates even if the command could not be processed properly after a reconnect (202ms)
# monitors works in combination with the pub sub mode and the offline queue (357ms)
# using options: detect_buffers: false;
# monitors commands on all redis clients and works in the correct order
# monitors returns strings in the rawOutput even with return_buffers activated
# monitors reconnects properly and works with the offline queue (202ms)
# monitors reconnects properly and works with the offline queue in a batch statement (202ms)
# monitor activates even if the command could not be processed properly after a reconnect (205ms)
# monitors works in combination with the pub sub mode and the offline queue (358ms)
# The 'mset' method
# using options: detect_buffers: true;
# using javascript and IPv4
# when not connected
# reports an error
# when connected
# and a callback is specified
# with valid parameters
# sets the value correctly
# with undefined 'key' parameter and missing 'value' parameter
# reports an error
# and no callback is specified
# with valid parameters
# sets the value correctly
# sets the value correctly with array syntax
# with undefined 'key' and missing 'value' parameter
# emits an error
# using options: detect_buffers: false;
# using javascript and IPv4
# when not connected
# reports an error
# when connected
# and a callback is specified
# with valid parameters
# sets the value correctly
# with undefined 'key' parameter and missing 'value' parameter
# reports an error
# and no callback is specified
# with valid parameters
# sets the value correctly
# sets the value correctly with array syntax
# with undefined 'key' and missing 'value' parameter
# emits an error
# The 'msetnx' method
# using options: detect_buffers: true;
# using javascript and IPv4
# if any keys exist entire operation fails
# sets multiple keys if all keys are not set
# using options: detect_buffers: false;
# using javascript and IPv4
# if any keys exist entire operation fails
# sets multiple keys if all keys are not set
# The 'randomkey' method
# using options: detect_buffers: true;
# using javascript and IPv4
# returns a random key
# using options: detect_buffers: false;
# using javascript and IPv4
# returns a random key
# The 'rename' method
# using options: detect_buffers: true;
# using javascript and IPv4
# populates the new key
# removes the old key
# using options: detect_buffers: false;
# using javascript and IPv4
# populates the new key
# removes the old key
# The 'renamenx' method
# using options: detect_buffers: true;
# using javascript and IPv4
# renames the key if target does not yet exist
# does not rename the key if the target exists
# using options: detect_buffers: false;
# using javascript and IPv4
# renames the key if target does not yet exist
# does not rename the key if the target exists
# The 'rpush' command
# using options: detect_buffers: true;
# using javascript and IPv4
# inserts multiple values at a time into a list
# using options: detect_buffers: false;
# using javascript and IPv4
# inserts multiple values at a time into a list
# The 'sadd' method
# using options: detect_buffers: true;
# using javascript and IPv4
# allows a single value to be added to the set
# does not add the same value to the set twice
# allows multiple values to be added to the set
# allows multiple values to be added to the set with a different syntax
# using options: detect_buffers: false;
# using javascript and IPv4
# allows a single value to be added to the set
# does not add the same value to the set twice
# allows multiple values to be added to the set
# allows multiple values to be added to the set with a different syntax
# The 'scard' method
# using options: detect_buffers: true;
# using javascript and IPv4
# returns the number of values in a set
# using options: detect_buffers: false;
# using javascript and IPv4
# returns the number of values in a set
# The 'script' method
# using options: detect_buffers: true;
# using javascript and IPv4
# loads script with client.script('load')
# allows a loaded script to be evaluated
# allows a script to be loaded as part of a chained transaction
# allows a script to be loaded using a transaction's array syntax
# using options: detect_buffers: false;
# using javascript and IPv4
# loads script with client.script('load')
# allows a loaded script to be evaluated
# allows a script to be loaded as part of a chained transaction
# allows a script to be loaded using a transaction's array syntax
# The 'sdiff' method
# using options: detect_buffers: true;
# using javascript and IPv4
# returns set difference
# using options: detect_buffers: false;
# using javascript and IPv4
# returns set difference
# The 'sdiffstore' method
# using options: detect_buffers: true;
# using javascript and IPv4
# calculates set difference ands stores it in a key
# using options: detect_buffers: false;
# using javascript and IPv4
# calculates set difference ands stores it in a key
# The 'select' method
# using options: detect_buffers: true;
# using javascript and IPv4
# when not connected
# returns an error if redis is not connected
# when connected
# changes the database and calls the callback
# and a callback is specified
# with a valid db index
# selects the appropriate database
# with an invalid db index
# returns an error
# and no callback is specified
# with a valid db index
# selects the appropriate database
# with an invalid db index
# emits an error when callback not provided
# reconnection occurs
# selects the appropriate database after a reconnect (202ms)
# using options: detect_buffers: false;
# using javascript and IPv4
# when not connected
# returns an error if redis is not connected
# when connected
# changes the database and calls the callback
# and a callback is specified
# with a valid db index
# selects the appropriate database
# with an invalid db index
# returns an error
# and no callback is specified
# with a valid db index
# selects the appropriate database
# with an invalid db index
# emits an error when callback not provided
# reconnection occurs
# selects the appropriate database after a reconnect (201ms)
# The 'set' method
# using options: detect_buffers: true;
# using javascript and IPv4
# when not connected
# reports an error
# when connected
# and a callback is specified
# with valid parameters
# sets the value correctly
# set expire date in seconds
# set expire date in milliseconds
# only set the key if (not) already set
# reports an error with invalid parameters
# undefined 'key' and missing 'value' parameter
# empty array as second parameter
# and no callback is specified
# converts null to 'null'
# emit an error with only the key set
# emit an error without any parameters
# with valid parameters
# sets the value correctly
# sets the value correctly even if the callback is explicitly set to undefined
# sets the value correctly with the array syntax
# with undefined 'key' and missing 'value' parameter
# emits an error without callback
# using options: detect_buffers: false;
# using javascript and IPv4
# when not connected
# reports an error
# when connected
# and a callback is specified
# with valid parameters
# sets the value correctly
# set expire date in seconds
# set expire date in milliseconds
# only set the key if (not) already set
# reports an error with invalid parameters
# undefined 'key' and missing 'value' parameter
# empty array as second parameter
# and no callback is specified
# converts null to 'null'
# emit an error with only the key set
# emit an error without any parameters
# with valid parameters
# sets the value correctly
# sets the value correctly even if the callback is explicitly set to undefined
# sets the value correctly with the array syntax
# with undefined 'key' and missing 'value' parameter
# emits an error without callback
# The 'setex' method
# using options: detect_buffers: true;
# using javascript and IPv4
# sets a key with an expiry
# using options: detect_buffers: false;
# using javascript and IPv4
# sets a key with an expiry
# The 'setnx' method
# using options: detect_buffers: true;
# using javascript and IPv4
# sets key if it does not have a value
# does not set key if it already has a value
# using options: detect_buffers: false;
# using javascript and IPv4
# sets key if it does not have a value
# does not set key if it already has a value
# The 'sinter' method
# using options: detect_buffers: true;
# using javascript and IPv4
# handles two sets being intersected
# handles three sets being intersected
# using options: detect_buffers: false;
# using javascript and IPv4
# handles two sets being intersected
# handles three sets being intersected
# The 'sinterstore' method
# using options: detect_buffers: true;
# using javascript and IPv4
# calculates set intersection and stores it in a key
# using options: detect_buffers: false;
# using javascript and IPv4
# calculates set intersection and stores it in a key
# The 'sismember' method
# using options: detect_buffers: true;
# using javascript and IPv4
# returns 0 if the value is not in the set
# returns 1 if the value is in the set
# using options: detect_buffers: false;
# using javascript and IPv4
# returns 0 if the value is not in the set
# returns 1 if the value is in the set
# The 'slowlog' method
# using options: detect_buffers: true;
# using javascript and IPv4
# logs operations in slowlog
# using options: detect_buffers: false;
# using javascript and IPv4
# logs operations in slowlog
# The 'smembers' method
# using options: detect_buffers: true;
# using javascript and IPv4
# returns all values in a set
# using options: detect_buffers: false;
# using javascript and IPv4
# returns all values in a set
# The 'smove' method
# using options: detect_buffers: true;
# using javascript and IPv4
# moves a value to a set that does not yet exist
# does not move a value if it does not exist in the first set
# using options: detect_buffers: false;
# using javascript and IPv4
# moves a value to a set that does not yet exist
# does not move a value if it does not exist in the first set
# The 'sort' method
# using options: detect_buffers: true;
# using javascript and IPv4
# alphabetical
# sorts in ascending alphabetical order
# sorts in descending alphabetical order
# numeric
# sorts in ascending numeric order
# sorts in descending numeric order
# pattern
# handles sorting with a pattern
# handles sorting with a 'by' pattern and 1 'get' pattern
# handles sorting with a 'by' pattern and 2 'get' patterns
# handles sorting with a 'by' pattern and 2 'get' patterns with the array syntax
# sorting with a 'by' pattern and 2 'get' patterns and stores results
# using options: detect_buffers: false;
# using javascript and IPv4
# alphabetical
# sorts in ascending alphabetical order
# sorts in descending alphabetical order
# numeric
# sorts in ascending numeric order
# sorts in descending numeric order
# pattern
# handles sorting with a pattern
# handles sorting with a 'by' pattern and 1 'get' pattern
# handles sorting with a 'by' pattern and 2 'get' patterns
# handles sorting with a 'by' pattern and 2 'get' patterns with the array syntax
# sorting with a 'by' pattern and 2 'get' patterns and stores results
# The 'spop' method
# using options: detect_buffers: true;
# using javascript and IPv4
# returns a random element from the set
# using options: detect_buffers: false;
# using javascript and IPv4
# returns a random element from the set
# The 'srem' method
# using options: detect_buffers: true;
# using javascript and IPv4
# removes a value
# handles attempting to remove a missing value
# allows multiple values to be removed
# allows multiple values to be removed with send_command
# handles a value missing from the set of values being removed
# using options: detect_buffers: false;
# using javascript and IPv4
# removes a value
# handles attempting to remove a missing value
# allows multiple values to be removed
# allows multiple values to be removed with send_command
# handles a value missing from the set of values being removed
# The 'sunion' method
# using options: detect_buffers: true;
# using javascript and IPv4
# returns the union of a group of sets
# using options: detect_buffers: false;
# using javascript and IPv4
# returns the union of a group of sets
# The 'sunionstore' method
# using options: detect_buffers: true;
# using javascript and IPv4
# stores the result of a union
# using options: detect_buffers: false;
# using javascript and IPv4
# stores the result of a union
# The 'ttl' method
# using options: detect_buffers: true;
# using javascript and IPv4
# returns the current ttl on a key
# using options: detect_buffers: false;
# using javascript and IPv4
# returns the current ttl on a key
# The 'type' method
# using options: detect_buffers: true;
# using javascript and IPv4
# reports string type
# reports list type
# reports set type
# reports zset type
# reports hash type
# reports none for null key
# using options: detect_buffers: false;
# using javascript and IPv4
# reports string type
# reports list type
# reports set type
# reports zset type
# reports hash type
# reports none for null key
# The 'watch' method
# using options: detect_buffers: true;
# using javascript and IPv4
# does not execute transaction if watched key was modified prior to execution
# successfully modifies other keys independently of transaction
# using options: detect_buffers: false;
# using javascript and IPv4
# does not execute transaction if watched key was modified prior to execution
# successfully modifies other keys independently of transaction
# The 'zadd' method
# using options: detect_buffers: true;
# using javascript and IPv4
# - reports an error
# - return inf / -inf
# using options: detect_buffers: false;
# using javascript and IPv4
# - reports an error
# - return inf / -inf
# The 'zscan' method
# using options: detect_buffers: true;
# using javascript and IPv4
# - return values
# using options: detect_buffers: false;
# using javascript and IPv4
# - return values
# The 'zscore' method
# using options: detect_buffers: true;
# using javascript and IPv4
# should return the score of member in the sorted set at key
# using options: detect_buffers: false;
# using javascript and IPv4
# should return the score of member in the sorted set at key
# 827 passing (36s)
# 131 pending
# 9 failing
# 1) client authentication using options: detect_buffers: true; using javascript and IPv4 individual commands work properly with batch:
# Uncaught AssertionError [ERR_ASSERTION]: [ { ReplyError: ERR Client sent AUTH, but no password is set
# at parseError (/tmp/ad49494f-6686-432d-a7c3-35aef87efef3/redis/ deepEqual [ 'OK',
# 'OK',
# 'OK',
# 'OK',
# '
# Stats\r\n',
# 'bar',
# 'bar',
# 'foo',
# '/foo',
# '*',
# 'OK' ]
# + expected - actual
# [
# - {
# - "args": [
# - "porkchopsandwiches"
# - ]
# - "code": "ERR"
# - "command": "AUTH"
# - "position": 0
# - }
# "OK"
# "OK"
# "OK"
# + "OK"
# "
# Stats\r\n"
# "bar"
# "bar"
# "foo"
#
# at test/auth.spec.js:332:32
# at Command.callback (lib/multi.js:15:209)
# at normal_reply (index.js:73:1175)
# at RedisClient.return_reply (index.js:92:1)
# at JavascriptRedisParser.returnReply (index.js:26:1888)
# at JavascriptRedisParser.execute (node_modules/redis-parser/lib/parser.js:574:12)
# at Socket. (index.js:42:42)
# at addChunk (_stream_readable.js:263:12)
# at readableAddChunk (_stream_readable.js:250:11)
# at Socket.Readable.push (_stream_readable.js:208:10)
# at TCP.onread (net.js:601:20)
# 2) client authentication using options: detect_buffers: true; using javascript and IPv6 individual commands work properly with batch:
# Uncaught AssertionError [ERR_ASSERTION]: [ { ReplyError: ERR Client sent AUTH, but no password is set
# at parseError (/tmp/ad49494f-6686-432d-a7c3-35aef87efef3/redis/ deepEqual [ 'OK',
# 'OK',
# 'OK',
# 'OK',
# '
# Stats\r\n',
# 'bar',
# 'bar',
# 'foo',
# '/foo',
# '*',
# 'OK' ]
# + expected - actual
# [
# - {
# - "args": [
# - "porkchopsandwiches"
# - ]
# - "code": "ERR"
# - "command": "AUTH"
# - "position": 0
# - }
# "OK"
# "OK"
# "OK"
# + "OK"
# "
# Stats\r\n"
# "bar"
# "bar"
# "foo"
#
# at test/auth.spec.js:332:32
# at Command.callback (lib/multi.js:15:209)
# at normal_reply (index.js:73:1175)
# at RedisClient.return_reply (index.js:92:1)
# at JavascriptRedisParser.returnReply (index.js:26:1888)
# at JavascriptRedisParser.execute (node_modules/redis-parser/lib/parser.js:574:12)
# at Socket. (index.js:42:42)
# at addChunk (_stream_readable.js:263:12)
# at readableAddChunk (_stream_readable.js:250:11)
# at Socket.Readable.push (_stream_readable.js:208:10)
# at TCP.onread (net.js:601:20)
# 3) client authentication using options: detect_buffers: true; using javascript and /tmp/redis.sock individual commands work properly with batch:
# Uncaught AssertionError [ERR_ASSERTION]: [ { ReplyError: ERR Client sent AUTH, but no password is set
# at parseError (/tmp/ad49494f-6686-432d-a7c3-35aef87efef3/redis/ deepEqual [ 'OK',
# 'OK',
# 'OK',
# 'OK',
# '
# Stats\r\n',
# 'bar',
# 'bar',
# 'foo',
# '/foo',
# '*',
# 'OK' ]
# + expected - actual
# [
# - {
# - "args": [
# - "porkchopsandwiches"
# - ]
# - "code": "ERR"
# - "command": "AUTH"
# - "position": 0
# - }
# "OK"
# "OK"
# "OK"
# + "OK"
# "
# Stats\r\n"
# "bar"
# "bar"
# "foo"
#
# at test/auth.spec.js:332:32
# at Command.callback (lib/multi.js:15:209)
# at normal_reply (index.js:73:1175)
# at RedisClient.return_reply (index.js:92:1)
# at JavascriptRedisParser.returnReply (index.js:26:1888)
# at JavascriptRedisParser.execute (node_modules/redis-parser/lib/parser.js:574:12)
# at Socket. (index.js:42:42)
# at addChunk (_stream_readable.js:263:12)
# at readableAddChunk (_stream_readable.js:250:11)
# at Socket.Readable.push (_stream_readable.js:208:10)
# at TCP.onread (net.js:601:20)
# 4) client authentication using options: detect_buffers: false; using javascript and IPv4 individual commands work properly with batch:
# Uncaught AssertionError [ERR_ASSERTION]: [ { ReplyError: ERR Client sent AUTH, but no password is set
# at parseError (/tmp/ad49494f-6686-432d-a7c3-35aef87efef3/redis/ deepEqual [ 'OK',
# 'OK',
# 'OK',
# 'OK',
# '
# Stats\r\n',
# 'bar',
# 'bar',
# 'foo',
# '/foo',
# '*',
# 'OK' ]
# + expected - actual
# [
# - {
# - "args": [
# - "porkchopsandwiches"
# - ]
# - "code": "ERR"
# - "command": "AUTH"
# - "position": 0
# - }
# "OK"
# "OK"
# "OK"
# + "OK"
# "
# Stats\r\n"
# "bar"
# "bar"
# "foo"
#
# at test/auth.spec.js:332:32
# at Command.callback (lib/multi.js:15:209)
# at normal_reply (index.js:73:1175)
# at RedisClient.return_reply (index.js:92:1)
# at JavascriptRedisParser.returnReply (index.js:26:1888)
# at JavascriptRedisParser.execute (node_modules/redis-parser/lib/parser.js:574:12)
# at Socket. (index.js:42:42)
# at addChunk (_stream_readable.js:263:12)
# at readableAddChunk (_stream_readable.js:250:11)
# at Socket.Readable.push (_stream_readable.js:208:10)
# at TCP.onread (net.js:601:20)
# 5) client authentication using options: detect_buffers: false; using javascript and IPv6 individual commands work properly with batch:
# Uncaught AssertionError [ERR_ASSERTION]: [ { ReplyError: ERR Client sent AUTH, but no password is set
# at parseError (/tmp/ad49494f-6686-432d-a7c3-35aef87efef3/redis/ deepEqual [ 'OK',
# 'OK',
# 'OK',
# 'OK',
# '
# Stats\r\n',
# 'bar',
# 'bar',
# 'foo',
# '/foo',
# '*',
# 'OK' ]
# + expected - actual
# [
# - {
# - "args": [
# - "porkchopsandwiches"
# - ]
# - "code": "ERR"
# - "command": "AUTH"
# - "position": 0
# - }
# "OK"
# "OK"
# "OK"
# + "OK"
# "
# Stats\r\n"
# "bar"
# "bar"
# "foo"
#
# at test/auth.spec.js:332:32
# at Command.callback (lib/multi.js:15:209)
# at normal_reply (index.js:73:1175)
# at RedisClient.return_reply (index.js:92:1)
# at JavascriptRedisParser.returnReply (index.js:26:1888)
# at JavascriptRedisParser.execute (node_modules/redis-parser/lib/parser.js:574:12)
# at Socket. (index.js:42:42)
# at addChunk (_stream_readable.js:263:12)
# at readableAddChunk (_stream_readable.js:250:11)
# at Socket.Readable.push (_stream_readable.js:208:10)
# at TCP.onread (net.js:601:20)
# 6) client authentication using options: detect_buffers: false; using javascript and /tmp/redis.sock individual commands work properly with batch:
# Uncaught AssertionError [ERR_ASSERTION]: [ { ReplyError: ERR Client sent AUTH, but no password is set
# at parseError (/tmp/ad49494f-6686-432d-a7c3-35aef87efef3/redis/ deepEqual [ 'OK',
# 'OK',
# 'OK',
# 'OK',
# '
# Stats\r\n',
# 'bar',
# 'bar',
# 'foo',
# '/foo',
# '*',
# 'OK' ]
# + expected - actual
# [
# - {
# - "args": [
# - "porkchopsandwiches"
# - ]
# - "code": "ERR"
# - "command": "AUTH"
# - "position": 0
# - }
# "OK"
# "OK"
# "OK"
# + "OK"
# "
# Stats\r\n"
# "bar"
# "bar"
# "foo"
#
# at test/auth.spec.js:332:32
# at Command.callback (lib/multi.js:15:209)
# at normal_reply (index.js:73:1175)
# at RedisClient.return_reply (index.js:92:1)
# at JavascriptRedisParser.returnReply (index.js:26:1888)
# at JavascriptRedisParser.execute (node_modules/redis-parser/lib/parser.js:574:12)
# at Socket. (index.js:42:42)
# at addChunk (_stream_readable.js:263:12)
# at readableAddChunk (_stream_readable.js:250:11)
# at Socket.Readable.push (_stream_readable.js:208:10)
# at TCP.onread (net.js:601:20)
# 7) The 'multi' method using options: detect_buffers: true; using javascript and IPv4 when ready indivdual commands work properly with multi:
# Uncaught AssertionError [ERR_ASSERTION]: { avg_ttl: 0, expires: 0, keys: 1 } notDeepEqual { avg_ttl: 0, expires: 0, keys: 1 }
# + expected - actual
#
# at test/multi.spec.js:708:32
# at Object.callbackOrEmit [as callback_or_emit] (lib/utils.js:13:809)
# at Command.callback (lib/individualCommands.js:14:82)
# at multi_callback (lib/multi.js:9:221)
# at Command.callback (lib/multi.js:11:212)
# at normal_reply (index.js:73:1175)
# at RedisClient.return_reply (index.js:90:703)
# at JavascriptRedisParser.returnReply (index.js:26:1888)
# at JavascriptRedisParser.execute (node_modules/redis-parser/lib/parser.js:574:12)
# at Socket. (index.js:42:42)
# at addChunk (_stream_readable.js:263:12)
# at readableAddChunk (_stream_readable.js:250:11)
# at Socket.Readable.push (_stream_readable.js:208:10)
# at TCP.onread (net.js:601:20)
# 8) The 'multi' method using options: detect_buffers: false; using javascript and IPv4 when ready indivdual commands work properly with multi:
# Uncaught AssertionError [ERR_ASSERTION]: { avg_ttl: 0, expires: 0, keys: 1 } notDeepEqual { avg_ttl: 0, expires: 0, keys: 1 }
# + expected - actual
#
# at test/multi.spec.js:708:32
# at Object.callbackOrEmit [as callback_or_emit] (lib/utils.js:13:809)
# at Command.callback (lib/individualCommands.js:14:82)
# at multi_callback (lib/multi.js:9:221)
# at Command.callback (lib/multi.js:11:212)
# at normal_reply (index.js:73:1175)
# at RedisClient.return_reply (index.js:90:703)
# at JavascriptRedisParser.returnReply (index.js:26:1888)
# at JavascriptRedisParser.execute (node_modules/redis-parser/lib/parser.js:574:12)
# at Socket. (index.js:42:42)
# at addChunk (_stream_readable.js:263:12)
# at readableAddChunk (_stream_readable.js:250:11)
# at Socket.Readable.push (_stream_readable.js:208:10)
# at TCP.onread (net.js:601:20)
# 9) TLS connection tests "before all" hook:
# Error: spawn stunnel ENOENT
# at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
# at onErrorNT (internal/child_process.js:362:16)
# at _combinedTickCallback (internal/process/next_tick.js:139:11)
# at process._tickDomainCallback (internal/process/next_tick.js:219:9)
# ------------------------|----------|----------|----------|----------|----------------|
# File | % Stmts | % Branch | % Funcs | % Lines |Uncovered Lines |
# ------------------------|----------|----------|----------|----------|----------------|
# All files | 98.63 | 97.4 | 96.58 | 98.63 | |
# redis | 97.9 | 96.26 | 95 | 97.9 | |
# index.js | 97.9 | 96.26 | 95 | 97.9 |... 0,1060,1066 |
# redis/lib | 99.19 | 98.3 | 97.67 | 99.19 | |
# command.js | 100 | 100 | 100 | 100 | |
# commands.js | 98.55 | 95.24 | 80 | 98.55 | 16 |
# createClient.js | 100 | 100 | 100 | 100 | |
# customErrors.js | 100 | 100 | 100 | 100 | |
# debug.js | 100 | 100 | 100 | 100 | |
# extendedApi.js | 100 | 100 | 100 | 100 | |
# individualCommands.js | 98.61 | 97.02 | 97.78 | 98.61 |... 193,194,196 |
# multi.js | 100 | 100 | 100 | 100 | |
# utils.js | 100 | 100 | 100 | 100 | |
# ------------------------|----------|----------|----------|----------|----------------|
# npm WARN deprecated win-spawn@2.0.0: use [cross-spawn](https://github.com/IndigoUnited/node-cross-spawn) or [cross-spawn-async](https://github.com/IndigoUnited/node-cross-spawn-async) instead.
# npm WARN deprecated hoek@2.16.3: The major version is no longer supported. Please update to 4.x or newer
# npm notice created a lockfile as package-lock.json. You should commit this file.
# (node:3888) Warning: process.on(SIGPROF) is reserved while debugging
# node_redis: Warning: Redis server does not require a password, but a password was supplied.
# node_redis: Warning: Redis server does not require a password, but a password was supplied.
# node_redis: Warning: Redis server does not require a password, but a password was supplied.
# node_redis: Warning: Redis server does not require a password, but a password was supplied.
# node_redis: Warning: Redis server does not require a password, but a password was supplied.
# node_redis: Warning: Redis server does not require a password, but a password was supplied.
# node_redis: max_attempts is deprecated and will be removed in v.3.0.0.
# To reduce the number of options and to improve the reconnection handling please use the new `retry_strategy` option instead.
# This replaces the max_attempts and retry_max_delay option.
# node_redis: max_attempts is deprecated and will be removed in v.3.0.0.
# To reduce the number of options and to improve the reconnection handling please use the new `retry_strategy` option instead.
# This replaces the max_attempts and retry_max_delay option.
# node_redis: WARNING: You passed the db option twice!
# node_redis: WARNING: You passed "http" as protocol instead of the "redis" protocol!
# node_redis: Warning: Redis server does not require a password, but a password was supplied.
# node_redis: max_attempts is deprecated and will be removed in v.3.0.0.
# To reduce the number of options and to improve the reconnection handling please use the new `retry_strategy` option instead.
# This replaces the max_attempts and retry_max_delay option.
# node_redis: max_attempts is deprecated and will be removed in v.3.0.0.
# To reduce the number of options and to improve the reconnection handling please use the new `retry_strategy` option instead.
# This replaces the max_attempts and retry_max_delay option.
# node_redis: WARNING: You passed the db option twice!
# node_redis: WARNING: You passed "http" as protocol instead of the "redis" protocol!
# node_redis: Warning: Redis server does not require a password, but a password was supplied.
# node_redis: max_attempts is deprecated and will be removed in v.3.0.0.
# To reduce the number of options and to improve the reconnection handling please use the new `retry_strategy` option instead.
# This replaces the max_attempts and retry_max_delay option.
# node_redis: max_attempts is deprecated and will be removed in v.3.0.0.
# To reduce the number of options and to improve the reconnection handling please use the new `retry_strategy` option instead.
# This replaces the max_attempts and retry_max_delay option.
# node_redis: max_attempts is deprecated and will be removed in v.3.0.0.
# To reduce the number of options and to improve the reconnection handling please use the new `retry_strategy` option instead.
# This replaces the max_attempts and retry_max_delay option.
# node_redis: max_attempts is deprecated and will be removed in v.3.0.0.
# To reduce the number of options and to improve the reconnection handling please use the new `retry_strategy` option instead.
# This replaces the max_attempts and retry_max_delay option.
# node_redis: socket_nodelay is deprecated and will be removed in v.3.0.0.
# Setting socket_nodelay to false likely results in a reduced throughput. Please use .batch for pipelining instead.
# If you are sure you rely on the NAGLE-algorithm you can activate it by calling client.stream.setNoDelay(false) instead.
# node_redis: socket_nodelay is deprecated and will be removed in v.3.0.0.
# Setting socket_nodelay to false likely results in a reduced throughput. Please use .batch for pipelining instead.
# If you are sure you rely on the NAGLE-algorithm you can activate it by calling client.stream.setNoDelay(false) instead.
# node_redis: retry_max_delay is deprecated and will be removed in v.3.0.0.
# To reduce the amount of options and the improve the reconnection handling please use the new `retry_strategy` option instead.
# This replaces the max_attempts and retry_max_delay option.
# node_redis: max_attempts is deprecated and will be removed in v.3.0.0.
# To reduce the number of options and to improve the reconnection handling please use the new `retry_strategy` option instead.
# This replaces the max_attempts and retry_max_delay option.
# node_redis: max_attempts is deprecated and will be removed in v.3.0.0.
# To reduce the number of options and to improve the reconnection handling please use the new `retry_strategy` option instead.
# This replaces the max_attempts and retry_max_delay option.
# node_redis: max_attempts is deprecated and will be removed in v.3.0.0.
# To reduce the number of options and to improve the reconnection handling please use the new `retry_strategy` option instead.
# This replaces the max_attempts and retry_max_delay option.
# node_redis: socket_nodelay is deprecated and will be removed in v.3.0.0.
# Setting socket_nodelay to false likely results in a reduced throughput. Please use .batch for pipelining instead.
# If you are sure you rely on the NAGLE-algorithm you can activate it by calling client.stream.setNoDelay(false) instead.
# node_redis: socket_nodelay is deprecated and will be removed in v.3.0.0.
# Setting socket_nodelay to false likely results in a reduced throughput. Please use .batch for pipelining instead.
# If you are sure you rely on the NAGLE-algorithm you can activate it by calling client.stream.setNoDelay(false) instead.
# node_redis: retry_max_delay is deprecated and will be removed in v.3.0.0.
# To reduce the amount of options and the improve the reconnection handling please use the new `retry_strategy` option instead.
# This replaces the max_attempts and retry_max_delay option.
# node_redis: max_attempts is deprecated and will be removed in v.3.0.0.
# To reduce the number of options and to improve the reconnection handling please use the new `retry_strategy` option instead.
# This replaces the max_attempts and retry_max_delay option.
# node_redis: max_attempts is deprecated and will be removed in v.3.0.0.
# To reduce the number of options and to improve the reconnection handling please use the new `retry_strategy` option instead.
# This replaces the max_attempts and retry_max_delay option.
# node_redis: max_attempts is deprecated and will be removed in v.3.0.0.
# To reduce the number of options and to improve the reconnection handling please use the new `retry_strategy` option instead.
# This replaces the max_attempts and retry_max_delay option.
# node_redis: Deprecated: The MSET command contains a "undefined" argument.
# This is converted to a "undefined" string now and will return an error from v.3.0 on.
# Please handle this in your code to make sure everything works as you intended it to.
# node_redis: Deprecated: The MSET command contains a "undefined" argument.
# This is converted to a "undefined" string now and will return an error from v.3.0 on.
# Please handle this in your code to make sure everything works as you intended it to.
# node_redis: Deprecated: The SET command contains a "undefined" argument.
# This is converted to a "undefined" string now and will return an error from v.3.0 on.
# Please handle this in your code to make sure everything works as you intended it to.
# node_redis: Deprecated: The SET command contains a "null" argument.
# This is converted to a "null" string now and will return an error from v.3.0 on.
# Please handle this in your code to make sure everything works as you intended it to.
# node_redis: Deprecated: The SET command contains a "undefined" argument.
# This is converted to a "undefined" string now and will return an error from v.3.0 on.
# Please handle this in your code to make sure everything works as you intended it to.
# node_redis: Deprecated: The SET command contains a "null" argument.
# This is converted to a "null" string now and will return an error from v.3.0 on.
# Please handle this in your code to make sure everything works as you intended it to.
# npm ERR! Test failed. See above for more details. duration_ms: 89623 ... 1..1