TAP version 13 not ok 1 - redis v2.8.0 The canary is dead: ---
# undefinedredis@2.8.0 /tmp/a8a79fe3-b31b-437f-96a8-d0f5002fc43c/redis
# +-- bluebird@3.5.3
# +-- coveralls@2.13.3
# | +-- js-yaml@3.6.1
# | | +-- argparse@1.0.10
# | | | `-- sprintf-js@1.0.3
# | | `-- esprima@2.7.3
# | +-- lcov-parse@0.0.10
# | +-- log-driver@1.2.5
# | +-- minimist@1.2.0
# | `-- request@2.79.0
# | +-- aws-sign2@0.6.0
# | +-- aws4@1.8.0
# | +-- caseless@0.11.0
# | +-- combined-stream@1.0.7
# | | `-- delayed-stream@1.0.0
# | +-- extend@3.0.2
# | +-- forever-agent@0.6.1
# | +-- form-data@2.1.4
# | | `-- asynckit@0.4.0
# | +-- har-validator@2.0.6
# | | +-- commander@2.19.0
# | | +-- is-my-json-valid@2.19.0
# | | | +-- generate-function@2.3.1
# | | | | `-- is-property@1.0.2
# | | | +-- generate-object-property@1.2.0
# | | | +-- is-my-ip-valid@1.0.0
# | | | +-- jsonpointer@4.0.1
# | | | `-- xtend@4.0.1
# | | `-- pinkie-promise@2.0.1
# | | `-- pinkie@2.0.4
# | +-- hawk@3.1.3
# | | +-- boom@2.10.1
# | | +-- cryptiles@2.0.5
# | | +-- hoek@2.16.3
# | | `-- sntp@1.0.9
# | +-- http-signature@1.1.1
# | | +-- assert-plus@0.2.0
# | | +-- jsprim@1.4.1
# | | | +-- assert-plus@1.0.0
# | | | +-- extsprintf@1.3.0
# | | | +-- json-schema@0.2.3
# | | | `-- verror@1.10.0
# | | | `-- assert-plus@1.0.0
# | | `-- sshpk@1.16.0
# | | +-- asn1@0.2.4
# | | +-- assert-plus@1.0.0
# | | +-- bcrypt-pbkdf@1.0.2
# | | +-- dashdash@1.14.1
# | | | `-- assert-plus@1.0.0
# | | +-- ecc-jsbn@0.1.2
# | | +-- getpass@0.1.7
# | | | `-- assert-plus@1.0.0
# | | +-- jsbn@0.1.1
# | | +-- safer-buffer@2.1.2
# | | `-- tweetnacl@0.14.5
# | +-- is-typedarray@1.0.0
# | +-- isstream@0.1.2
# | +-- json-stringify-safe@5.0.1
# | +-- mime-types@2.1.21
# | | `-- mime-db@1.37.0
# | +-- oauth-sign@0.8.2
# | +-- qs@6.3.2
# | +-- stringstream@0.0.6
# | +-- tough-cookie@2.3.4
# | | `-- punycode@1.4.1
# | +-- tunnel-agent@0.4.3
# | `-- uuid@3.3.2
# +-- double-ended-queue@2.1.0-0
# +-- eslint@4.19.1
# | +-- ajv@5.5.2
# | | +-- co@4.6.0
# | | +-- fast-deep-equal@1.1.0
# | | +-- fast-json-stable-stringify@2.0.0
# | | `-- json-schema-traverse@0.3.1
# | +-- babel-code-frame@6.26.0
# | | +-- chalk@1.1.3
# | | | +-- ansi-styles@2.2.1
# | | | +-- has-ansi@2.0.0
# | | | | `-- ansi-regex@2.1.1
# | | | +-- strip-ansi@3.0.1
# | | | `-- supports-color@2.0.0
# | | `-- js-tokens@3.0.2
# | +-- chalk@2.4.2
# | | +-- ansi-styles@3.2.1
# | | | `-- color-convert@1.9.3
# | | | `-- color-name@1.1.3
# | | `-- supports-color@5.5.0
# | | `-- has-flag@3.0.0
# | +-- concat-stream@1.6.2
# | | +-- buffer-from@1.1.1
# | | +-- inherits@2.0.3
# | | +-- readable-stream@2.3.6
# | | | +-- core-util-is@1.0.2
# | | | +-- isarray@1.0.0
# | | | +-- process-nextick-args@2.0.0
# | | | +-- safe-buffer@5.1.2
# | | | +-- string_decoder@1.1.1
# | | | `-- util-deprecate@1.0.2
# | | `-- typedarray@0.0.6
# | +-- cross-spawn@5.1.0
# | | +-- lru-cache@4.1.5
# | | | +-- pseudomap@1.0.2
# | | | `-- yallist@2.1.2
# | | +-- shebang-command@1.2.0
# | | | `-- shebang-regex@1.0.0
# | | `-- which@1.3.1
# | | `-- isexe@2.0.0
# | +-- debug@3.2.6
# | | `-- ms@2.1.1
# | +-- doctrine@2.1.0
# | +-- eslint-scope@3.7.3
# | | +-- esrecurse@4.2.1
# | | `-- estraverse@4.2.0
# | +-- eslint-visitor-keys@1.0.0
# | +-- espree@3.5.4
# | | +-- acorn@5.7.3
# | | `-- acorn-jsx@3.0.1
# | | `-- acorn@3.3.0
# | +-- esquery@1.0.1
# | +-- esutils@2.0.2
# | +-- file-entry-cache@2.0.0
# | | +-- flat-cache@1.3.4
# | | | +-- circular-json@0.3.3
# | | | +-- graceful-fs@4.1.15
# | | | +-- rimraf@2.6.3
# | | | `-- write@0.2.1
# | | `-- object-assign@4.1.1
# | +-- functional-red-black-tree@1.0.1
# | +-- glob@7.1.3
# | | +-- fs.realpath@1.0.0
# | | +-- inflight@1.0.6
# | | | `-- wrappy@1.0.2
# | | +-- once@1.4.0
# | | `-- path-is-absolute@1.0.1
# | +-- globals@11.10.0
# | +-- ignore@3.3.10
# | +-- imurmurhash@0.1.4
# | +-- inquirer@3.3.0
# | | +-- ansi-escapes@3.1.0
# | | +-- chalk@2.4.2
# | | | +-- ansi-styles@3.2.1
# | | | `-- supports-color@5.5.0
# | | +-- cli-cursor@2.1.0
# | | | `-- restore-cursor@2.0.0
# | | | +-- onetime@2.0.1
# | | | | `-- mimic-fn@1.2.0
# | | | `-- signal-exit@3.0.2
# | | +-- cli-width@2.2.0
# | | +-- external-editor@2.2.0
# | | | +-- chardet@0.4.2
# | | | +-- iconv-lite@0.4.24
# | | | `-- tmp@0.0.33
# | | | `-- os-tmpdir@1.0.2
# | | +-- figures@2.0.0
# | | +-- mute-stream@0.0.7
# | | +-- run-async@2.3.0
# | | | `-- is-promise@2.1.0
# | | +-- rx-lite@4.0.8
# | | +-- rx-lite-aggregates@4.0.8
# | | +-- string-width@2.1.1
# | | | +-- is-fullwidth-code-point@2.0.0
# | | | `-- strip-ansi@4.0.0
# | | | `-- ansi-regex@3.0.0
# | | +-- strip-ansi@4.0.0
# | | | `-- ansi-regex@3.0.0
# | | `-- through@2.3.8
# | +-- is-resolvable@1.1.0
# | +-- js-yaml@3.12.1
# | | `-- esprima@4.0.1
# | +-- json-stable-stringify-without-jsonify@1.0.1
# | +-- levn@0.3.0
# | | +-- prelude-ls@1.1.2
# | | `-- type-check@0.3.2
# | +-- lodash@4.17.11
# | +-- minimatch@3.0.4
# | | `-- brace-expansion@1.1.11
# | | +-- balanced-match@1.0.0
# | | `-- concat-map@0.0.1
# | +-- mkdirp@0.5.1
# | | `-- minimist@0.0.8
# | +-- natural-compare@1.4.0
# | +-- optionator@0.8.2
# | | +-- deep-is@0.1.3
# | | +-- fast-levenshtein@2.0.6
# | | `-- wordwrap@1.0.0
# | +-- path-is-inside@1.0.2
# | +-- pluralize@7.0.0
# | +-- progress@2.0.3
# | +-- regexpp@1.1.0
# | +-- require-uncached@1.0.3
# | | +-- caller-path@0.1.0
# | | | `-- callsites@0.2.0
# | | `-- resolve-from@1.0.1
# | +-- semver@5.6.0
# | +-- strip-ansi@4.0.0
# | | `-- ansi-regex@3.0.0
# | +-- strip-json-comments@2.0.1
# | +-- table@4.0.2
# | | +-- ajv-keywords@2.1.1
# | | +-- chalk@2.4.2
# | | | +-- ansi-styles@3.2.1
# | | | `-- supports-color@5.5.0
# | | `-- slice-ansi@1.0.0
# | `-- text-table@0.2.0
# +-- intercept-stdout@0.1.2
# | `-- lodash.toarray@3.0.2
# | +-- lodash._arraycopy@3.0.0
# | +-- lodash._basevalues@3.0.0
# | `-- lodash.keys@3.1.2
# | +-- lodash._getnative@3.9.1
# | +-- lodash.isarguments@3.1.0
# | `-- lodash.isarray@3.0.4
# +-- metrics@0.1.21
# | `-- events@2.1.0
# +-- mocha@3.5.3
# | +-- browser-stdout@1.3.0
# | +-- commander@2.9.0
# | | `-- graceful-readlink@1.0.1
# | +-- debug@2.6.8
# | | `-- ms@2.0.0
# | +-- diff@3.2.0
# | +-- escape-string-regexp@1.0.5
# | +-- glob@7.1.1
# | +-- growl@1.9.2
# | +-- he@1.1.1
# | +-- json3@3.3.2
# | +-- lodash.create@3.1.1
# | | +-- lodash._baseassign@3.2.0
# | | | `-- lodash._basecopy@3.0.1
# | | +-- lodash._basecreate@3.0.3
# | | `-- lodash._isiterateecall@3.0.9
# | `-- supports-color@3.1.2
# | `-- has-flag@1.0.0
# +-- nyc@10.3.2
# | +-- archy@1.0.0
# | +-- arrify@1.0.1
# | +-- caching-transform@1.0.1
# | | `-- write-file-atomic@1.3.4
# | | +-- graceful-fs@4.1.11
# | | +-- imurmurhash@0.1.4
# | | `-- slide@1.1.6
# | +-- convert-source-map@1.5.0
# | +-- debug-log@1.0.1
# | +-- default-require-extensions@1.0.0
# | | `-- strip-bom@2.0.0
# | | `-- is-utf8@0.2.1
# | +-- find-cache-dir@0.1.1
# | | +-- commondir@1.0.1
# | | `-- pkg-dir@1.0.0
# | +-- find-up@1.1.2
# | | +-- path-exists@2.1.0
# | | `-- pinkie-promise@2.0.1
# | | `-- pinkie@2.0.4
# | +-- foreground-child@1.5.6
# | | `-- cross-spawn@4.0.2
# | | `-- lru-cache@4.0.2
# | | +-- pseudomap@1.0.2
# | | `-- yallist@2.1.2
# | +-- glob@7.1.1
# | | +-- fs.realpath@1.0.0
# | | +-- inflight@1.0.6
# | | | `-- wrappy@1.0.2
# | | +-- inherits@2.0.3
# | | +-- minimatch@3.0.3
# | | | `-- brace-expansion@1.1.7
# | | | +-- balanced-match@0.4.2
# | | | `-- concat-map@0.0.1
# | | +-- once@1.4.0
# | | `-- path-is-absolute@1.0.1
# | +-- istanbul-lib-coverage@1.1.0
# | +-- istanbul-lib-hook@1.0.6
# | | `-- append-transform@0.4.0
# | +-- istanbul-lib-instrument@1.7.1
# | | +-- babel-generator@6.24.1
# | | | +-- babel-messages@6.23.0
# | | | +-- babel-runtime@6.23.0
# | | | | +-- core-js@2.4.1
# | | | | `-- regenerator-runtime@0.10.5
# | | | +-- detect-indent@4.0.0
# | | | | `-- repeating@2.0.1
# | | | | `-- is-finite@1.0.2
# | | | +-- jsesc@1.3.0
# | | | +-- lodash@4.17.4
# | | | `-- trim-right@1.0.1
# | | +-- babel-template@6.24.1
# | | +-- babel-traverse@6.24.1
# | | | +-- babel-code-frame@6.22.0
# | | | | +-- chalk@1.1.3
# | | | | | +-- ansi-styles@2.2.1
# | | | | | +-- escape-string-regexp@1.0.5
# | | | | | +-- has-ansi@2.0.0
# | | | | | `-- supports-color@2.0.0
# | | | | `-- js-tokens@3.0.1
# | | | +-- globals@9.17.0
# | | | `-- invariant@2.2.2
# | | | `-- loose-envify@1.3.1
# | | +-- babel-types@6.24.1
# | | | +-- esutils@2.0.2
# | | | `-- to-fast-properties@1.0.3
# | | +-- babylon@6.17.0
# | | `-- semver@5.3.0
# | +-- istanbul-lib-report@1.1.0
# | | +-- path-parse@1.0.5
# | | `-- supports-color@3.2.3
# | | `-- has-flag@1.0.0
# | +-- istanbul-lib-source-maps@1.2.0
# | | +-- debug@2.6.6
# | | | `-- ms@0.7.3
# | | `-- source-map@0.5.6
# | +-- istanbul-reports@1.1.0
# | | `-- handlebars@4.0.8
# | | +-- async@1.5.2
# | | +-- optimist@0.6.1
# | | | `-- wordwrap@0.0.3
# | | +-- source-map@0.4.4
# | | | `-- amdefine@1.0.1
# | | `-- uglify-js@2.8.22
# | | +-- uglify-to-browserify@1.0.2
# | | `-- yargs@3.10.0
# | | +-- camelcase@1.2.1
# | | +-- cliui@2.1.0
# | | | +-- center-align@0.1.3
# | | | | +-- align-text@0.1.4
# | | | | | `-- longest@1.0.1
# | | | | `-- lazy-cache@1.0.4
# | | | +-- right-align@0.1.3
# | | | `-- wordwrap@0.0.2
# | | `-- window-size@0.1.0
# | +-- md5-hex@1.3.0
# | | `-- md5-o-matic@0.1.1
# | +-- merge-source-map@1.0.3
# | +-- micromatch@2.3.11
# | | +-- arr-diff@2.0.0
# | | | `-- arr-flatten@1.0.3
# | | +-- array-unique@0.2.1
# | | +-- braces@1.8.5
# | | | +-- expand-range@1.8.2
# | | | | `-- fill-range@2.2.3
# | | | | +-- is-number@2.1.0
# | | | | +-- isobject@2.1.0
# | | | | | `-- isarray@1.0.0
# | | | | +-- randomatic@1.1.6
# | | | | `-- repeat-string@1.6.1
# | | | +-- preserve@0.2.0
# | | | `-- repeat-element@1.1.2
# | | +-- expand-brackets@0.1.5
# | | | `-- is-posix-bracket@0.1.1
# | | +-- extglob@0.3.2
# | | +-- filename-regex@2.0.1
# | | +-- is-extglob@1.0.0
# | | +-- is-glob@2.0.1
# | | +-- kind-of@3.2.0
# | | | `-- is-buffer@1.1.5
# | | +-- normalize-path@2.1.1
# | | | `-- remove-trailing-separator@1.0.1
# | | +-- object.omit@2.0.1
# | | | +-- for-own@0.1.5
# | | | | `-- for-in@1.0.2
# | | | `-- is-extendable@0.1.1
# | | +-- parse-glob@3.0.4
# | | | +-- glob-base@0.3.0
# | | | | `-- glob-parent@2.0.0
# | | | `-- is-dotfile@1.0.2
# | | `-- regex-cache@0.4.3
# | | +-- is-equal-shallow@0.1.3
# | | `-- is-primitive@2.0.0
# | +-- mkdirp@0.5.1
# | | `-- minimist@0.0.8
# | +-- resolve-from@2.0.0
# | +-- rimraf@2.6.1
# | +-- signal-exit@3.0.2
# | +-- spawn-wrap@1.2.4
# | | +-- os-homedir@1.0.2
# | | +-- signal-exit@2.1.2
# | | `-- which@1.2.14
# | | `-- isexe@2.0.0
# | +-- test-exclude@4.1.0
# | | +-- object-assign@4.1.1
# | | +-- read-pkg-up@1.0.1
# | | | `-- read-pkg@1.1.0
# | | | +-- load-json-file@1.1.0
# | | | | +-- parse-json@2.2.0
# | | | | | `-- error-ex@1.3.1
# | | | | | `-- is-arrayish@0.2.1
# | | | | `-- pify@2.3.0
# | | | +-- normalize-package-data@2.3.8
# | | | | +-- hosted-git-info@2.4.2
# | | | | +-- is-builtin-module@1.0.0
# | | | | | `-- builtin-modules@1.1.1
# | | | | `-- validate-npm-package-license@3.0.1
# | | | | +-- spdx-correct@1.0.2
# | | | | | `-- spdx-license-ids@1.2.2
# | | | | `-- spdx-expression-parse@1.0.4
# | | | `-- path-type@1.1.0
# | | `-- require-main-filename@1.0.1
# | +-- yargs@7.1.0
# | | +-- camelcase@3.0.0
# | | +-- cliui@3.2.0
# | | | `-- wrap-ansi@2.1.0
# | | +-- decamelize@1.2.0
# | | +-- get-caller-file@1.0.2
# | | +-- os-locale@1.4.0
# | | | `-- lcid@1.0.0
# | | | `-- invert-kv@1.0.0
# | | +-- require-directory@2.1.1
# | | +-- set-blocking@2.0.0
# | | +-- string-width@1.0.2
# | | | +-- code-point-at@1.1.0
# | | | +-- is-fullwidth-code-point@1.0.0
# | | | | `-- number-is-nan@1.0.1
# | | | `-- strip-ansi@3.0.1
# | | | `-- ansi-regex@2.1.1
# | | +-- which-module@1.0.0
# | | `-- y18n@3.2.1
# | `-- yargs-parser@5.0.0
# | `-- camelcase@3.0.0
# +-- redis-commands@1.4.0
# +-- redis-parser@2.6.0
# +-- tcp-port-used@0.1.2
# | +-- debug@0.7.4
# | +-- is2@0.0.9
# | | `-- deep-is@0.1.2
# | `-- q@0.9.7
# +-- uuid@2.0.3
# `-- win-spawn@2.0.0
# > redis@2.8.0 test /tmp/a8a79fe3-b31b-437f-96a8-d0f5002fc43c/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 (548ms)
# emit an error after max retry timeout and do not try to reconnect afterwards (608ms)
# end connection while retry is still ongoing (232ms)
# 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 (256ms)
# retry_strategy used to reconnect (253ms)
# retryStrategy used to reconnect with defaults (51ms)
# 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 (508ms)
# redis still loading > 1000ms (1004ms)
# 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 (548ms)
# emit an error after max retry timeout and do not try to reconnect afterwards (603ms)
# 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 (257ms)
# retry_strategy used to reconnect (254ms)
# retryStrategy used to reconnect with defaults (53ms)
# 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 (502ms)
# redis still loading > 1000ms (1003ms)
# 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 (520ms)
# should return good traces with NODE_DEBUG=redis env set (482ms)
# 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) (688ms)
# pipeline limit
# do not exceed maximum string size (2165ms)
# 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 (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 (205ms)
# emits error once if reconnecting after multi has been executed but not yet returned without callback (204ms)
# 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 (202ms)
# 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 (205ms)
# emits error once if reconnecting after multi has been executed but not yet returned without callback (202ms)
# 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 (304ms)
# should retry all commands even if the offline queue is disabled (306ms)
# .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 (110ms)
# 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 (203ms)
# reconnects, unsubscribes, and can retrieve the pre-existing data of a explicit channel (202ms)
# 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 (444ms)
# 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 (1128ms)
# flushes the command queue if connection is lost (546ms)
# false
# stream not writable
# emit an error and does not enqueues operation (52ms)
# flushes the command queue if connection is lost (202ms)
# 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 (308ms)
# should retry all commands even if the offline queue is disabled (307ms)
# .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 (203ms)
# and it's subscribed to a channel
# reconnects, unsubscribes, and can retrieve the pre-existing data (204ms)
# reconnects, unsubscribes, and can retrieve the pre-existing data of a explicit channel (204ms)
# 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 (299ms)
# 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 (1125ms)
# flushes the command queue if connection is lost (555ms)
# 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 (134ms)
# should not publish a message without any publish command (50ms)
# 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 (203ms)
# 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 (408ms)
# multiple subscribe / unsubscribe commands
# reconnects properly with pub sub and select command (204ms)
# 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 (203ms)
# 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 (136ms)
# should not publish a message without any publish command (58ms)
# 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 (403ms)
# multiple subscribe / unsubscribe commands
# reconnects properly with pub sub and select command (205ms)
# 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 (213ms)
# 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 (38ms)
# 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 (1618ms)
# 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 (1589ms)
# 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 (1054ms)
# 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 (203ms)
# 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 (356ms)
# 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 (201ms)
# monitors reconnects properly and works with the offline queue in a batch statement (201ms)
# monitor activates even if the command could not be processed properly after a reconnect (201ms)
# monitors works in combination with the pub sub mode and the offline queue (353ms)
# 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: [ { ReplyError: ERR Client sent AUTH, but no password is set
# at parseError (/tmp/a8a79fe3-b31b-437f-96a8-d0f5002fc43c/redi 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:203)
# at normal_reply (index.js:73:1201)
# at RedisClient.return_reply (index.js:92:1)
# at JavascriptRedisParser.returnReply (index.js:26:1920)
# at JavascriptRedisParser.execute (node_modules/redis-parser/lib/parser.js:574:12)
# at Socket. (index.js:42:43)
# at readableAddChunk (_stream_readable.js:176:18)
# at Socket.Readable.push (_stream_readable.js:134:10)
# at TCP.onread (net.js:559:20)
# 2) client authentication using options: detect_buffers: true; using javascript and IPv6 individual commands work properly with batch:
# Uncaught AssertionError: [ { ReplyError: ERR Client sent AUTH, but no password is set
# at parseError (/tmp/a8a79fe3-b31b-437f-96a8-d0f5002fc43c/redi 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:203)
# at normal_reply (index.js:73:1201)
# at RedisClient.return_reply (index.js:92:1)
# at JavascriptRedisParser.returnReply (index.js:26:1920)
# at JavascriptRedisParser.execute (node_modules/redis-parser/lib/parser.js:574:12)
# at Socket. (index.js:42:43)
# at readableAddChunk (_stream_readable.js:176:18)
# at Socket.Readable.push (_stream_readable.js:134:10)
# at TCP.onread (net.js:559:20)
# 3) client authentication using options: detect_buffers: true; using javascript and /tmp/redis.sock individual commands work properly with batch:
# Uncaught AssertionError: [ { ReplyError: ERR Client sent AUTH, but no password is set
# at parseError (/tmp/a8a79fe3-b31b-437f-96a8-d0f5002fc43c/redi 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:203)
# at normal_reply (index.js:73:1201)
# at RedisClient.return_reply (index.js:92:1)
# at JavascriptRedisParser.returnReply (index.js:26:1920)
# at JavascriptRedisParser.execute (node_modules/redis-parser/lib/parser.js:574:12)
# at Socket. (index.js:42:43)
# at readableAddChunk (_stream_readable.js:176:18)
# at Socket.Readable.push (_stream_readable.js:134:10)
# at TCP.onread (net.js:559:20)
# 4) client authentication using options: detect_buffers: false; using javascript and IPv4 individual commands work properly with batch:
# Uncaught AssertionError: [ { ReplyError: ERR Client sent AUTH, but no password is set
# at parseError (/tmp/a8a79fe3-b31b-437f-96a8-d0f5002fc43c/redi 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:203)
# at normal_reply (index.js:73:1201)
# at RedisClient.return_reply (index.js:92:1)
# at JavascriptRedisParser.returnReply (index.js:26:1920)
# at JavascriptRedisParser.execute (node_modules/redis-parser/lib/parser.js:574:12)
# at Socket. (index.js:42:43)
# at readableAddChunk (_stream_readable.js:176:18)
# at Socket.Readable.push (_stream_readable.js:134:10)
# at TCP.onread (net.js:559:20)
# 5) client authentication using options: detect_buffers: false; using javascript and IPv6 individual commands work properly with batch:
# Uncaught AssertionError: [ { ReplyError: ERR Client sent AUTH, but no password is set
# at parseError (/tmp/a8a79fe3-b31b-437f-96a8-d0f5002fc43c/redi 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:203)
# at normal_reply (index.js:73:1201)
# at RedisClient.return_reply (index.js:92:1)
# at JavascriptRedisParser.returnReply (index.js:26:1920)
# at JavascriptRedisParser.execute (node_modules/redis-parser/lib/parser.js:574:12)
# at Socket. (index.js:42:43)
# at readableAddChunk (_stream_readable.js:176:18)
# at Socket.Readable.push (_stream_readable.js:134:10)
# at TCP.onread (net.js:559:20)
# 6) client authentication using options: detect_buffers: false; using javascript and /tmp/redis.sock individual commands work properly with batch:
# Uncaught AssertionError: [ { ReplyError: ERR Client sent AUTH, but no password is set
# at parseError (/tmp/a8a79fe3-b31b-437f-96a8-d0f5002fc43c/redi 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:203)
# at normal_reply (index.js:73:1201)
# at RedisClient.return_reply (index.js:92:1)
# at JavascriptRedisParser.returnReply (index.js:26:1920)
# at JavascriptRedisParser.execute (node_modules/redis-parser/lib/parser.js:574:12)
# at Socket. (index.js:42:43)
# at readableAddChunk (_stream_readable.js:176:18)
# at Socket.Readable.push (_stream_readable.js:134:10)
# at TCP.onread (net.js:559:20)
# 7) The 'multi' method using options: detect_buffers: true; using javascript and IPv4 when ready indivdual commands work properly with multi:
# Uncaught AssertionError: { 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:218)
# at Command.callback (lib/multi.js:11:209)
# at normal_reply (index.js:73:1201)
# at RedisClient.return_reply (index.js:90:718)
# at JavascriptRedisParser.returnReply (index.js:26:1920)
# at JavascriptRedisParser.execute (node_modules/redis-parser/lib/parser.js:574:12)
# at Socket. (index.js:42:43)
# at readableAddChunk (_stream_readable.js:176:18)
# at Socket.Readable.push (_stream_readable.js:134:10)
# at TCP.onread (net.js:559:20)
# 8) The 'multi' method using options: detect_buffers: false; using javascript and IPv4 when ready indivdual commands work properly with multi:
# Uncaught AssertionError: { 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:218)
# at Command.callback (lib/multi.js:11:209)
# at normal_reply (index.js:73:1201)
# at RedisClient.return_reply (index.js:90:718)
# at JavascriptRedisParser.returnReply (index.js:26:1920)
# at JavascriptRedisParser.execute (node_modules/redis-parser/lib/parser.js:574:12)
# at Socket. (index.js:42:43)
# at readableAddChunk (_stream_readable.js:176:18)
# at Socket.Readable.push (_stream_readable.js:134:10)
# at TCP.onread (net.js:559:20)
# 9) TLS connection tests "before all" hook:
# Error: spawn stunnel ENOENT
# at exports._errnoException (util.js:1020:11)
# at Process.ChildProcess._handle.onexit (internal/child_process.js:197:32)
# at onErrorNT (internal/child_process.js:376:16)
# at _combinedTickCallback (internal/process/next_tick.js:80:11)
# at process._tickDomainCallback (internal/process/next_tick.js:128: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 cryptiles@2.0.5: This version is no longer maintained. Please upgrade to the latest version.
# npm WARN deprecated boom@2.10.1: This version is no longer maintained. Please upgrade to the latest version.
# npm WARN deprecated hoek@2.16.3: This version is no longer maintained. Please upgrade to the latest version.
# npm WARN deprecated circular-json@0.3.3: CircularJSON is in maintenance only, flatted is its successor.
# 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: 66666 ... 1..1