From a90b791295b446f7f9a05a277757b4a23c434409 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Fri, 27 May 2016 16:35:09 +0200 Subject: [PATCH] Only run detect_buffers tests once --- test/detect_buffers.spec.js | 459 ++++++++++++++++++------------------ 1 file changed, 227 insertions(+), 232 deletions(-) diff --git a/test/detect_buffers.spec.js b/test/detect_buffers.spec.js index 82f1aa99e3..2e2f7f1ed0 100644 --- a/test/detect_buffers.spec.js +++ b/test/detect_buffers.spec.js @@ -7,265 +7,260 @@ var redis = config.redis; describe('detect_buffers', function () { - helper.allTests(function (parser, ip, args) { + var client; + var args = config.configureClient('javascript', 'localhost', { + detect_buffers: true + }); - describe('using ' + parser + ' and ' + ip, function () { - var client; - var args = config.configureClient(parser, ip, { - detect_buffers: true + beforeEach(function (done) { + client = redis.createClient.apply(null, args); + client.once('error', done); + client.once('connect', function () { + client.flushdb(function (err) { + client.hmset('hash key 2', 'key 1', 'val 1', 'key 2', 'val 2'); + client.set('string key 1', 'string value'); + return done(err); + }); + }); + }); + + afterEach(function () { + client.end(true); + }); + + describe('get', function () { + describe('first argument is a string', function () { + it('returns a string', function (done) { + client.get('string key 1', helper.isString('string value', done)); }); - beforeEach(function (done) { - client = redis.createClient.apply(null, args); - client.once('error', done); - client.once('connect', function () { - client.flushdb(function (err) { - client.hmset('hash key 2', 'key 1', 'val 1', 'key 2', 'val 2'); - client.set('string key 1', 'string value'); - return done(err); - }); + it('returns a string when executed as part of transaction', function (done) { + client.multi().get('string key 1').exec(function (err, res) { + helper.isString('string value', done)(err, res[0]); + }); + }); + }); + + describe('first argument is a buffer', function () { + it('returns a buffer', function (done) { + client.get(new Buffer('string key 1'), function (err, reply) { + assert.strictEqual(true, Buffer.isBuffer(reply)); + assert.strictEqual('', reply.inspect()); + return done(err); }); }); - afterEach(function () { - client.end(true); - }); - - describe('get', function () { - describe('first argument is a string', function () { - it('returns a string', function (done) { - client.get('string key 1', helper.isString('string value', done)); - }); - - it('returns a string when executed as part of transaction', function (done) { - client.multi().get('string key 1').exec(function (err, res) { - helper.isString('string value', done)(err, res[0]); - }); - }); + it('returns a bufffer when executed as part of transaction', function (done) { + client.multi().get(new Buffer('string key 1')).exec(function (err, reply) { + assert.strictEqual(1, reply.length); + assert.strictEqual(true, Buffer.isBuffer(reply[0])); + assert.strictEqual('', reply[0].inspect()); + return done(err); }); + }); + }); + }); - describe('first argument is a buffer', function () { - it('returns a buffer', function (done) { - client.get(new Buffer('string key 1'), function (err, reply) { - assert.strictEqual(true, Buffer.isBuffer(reply)); - assert.strictEqual('', reply.inspect()); - return done(err); - }); - }); + describe('multi.hget', function () { + it('can interleave string and buffer results', function (done) { + client.multi() + .hget('hash key 2', 'key 1') + .hget(new Buffer('hash key 2'), 'key 1') + .hget('hash key 2', new Buffer('key 2')) + .hget('hash key 2', 'key 2') + .exec(function (err, reply) { + assert.strictEqual(true, Array.isArray(reply)); + assert.strictEqual(4, reply.length); + assert.strictEqual('val 1', reply[0]); + assert.strictEqual(true, Buffer.isBuffer(reply[1])); + assert.strictEqual('', reply[1].inspect()); + assert.strictEqual(true, Buffer.isBuffer(reply[2])); + assert.strictEqual('', reply[2].inspect()); + assert.strictEqual('val 2', reply[3]); + return done(err); + }); + }); + }); - it('returns a bufffer when executed as part of transaction', function (done) { - client.multi().get(new Buffer('string key 1')).exec(function (err, reply) { - assert.strictEqual(1, reply.length); - assert.strictEqual(true, Buffer.isBuffer(reply[0])); - assert.strictEqual('', reply[0].inspect()); - return done(err); - }); - }); + describe('batch.hget', function () { + it('can interleave string and buffer results', function (done) { + client.batch() + .hget('hash key 2', 'key 1') + .hget(new Buffer('hash key 2'), 'key 1') + .hget('hash key 2', new Buffer('key 2')) + .hget('hash key 2', 'key 2') + .exec(function (err, reply) { + assert.strictEqual(true, Array.isArray(reply)); + assert.strictEqual(4, reply.length); + assert.strictEqual('val 1', reply[0]); + assert.strictEqual(true, Buffer.isBuffer(reply[1])); + assert.strictEqual('', reply[1].inspect()); + assert.strictEqual(true, Buffer.isBuffer(reply[2])); + assert.strictEqual('', reply[2].inspect()); + assert.strictEqual('val 2', reply[3]); + return done(err); + }); + }); + }); + + describe('hmget', function () { + describe('first argument is a string', function () { + it('returns strings for keys requested', function (done) { + client.hmget('hash key 2', 'key 1', 'key 2', function (err, reply) { + assert.strictEqual(true, Array.isArray(reply)); + assert.strictEqual(2, reply.length); + assert.strictEqual('val 1', reply[0]); + assert.strictEqual('val 2', reply[1]); + return done(err); }); }); - describe('multi.hget', function () { - it('can interleave string and buffer results', function (done) { - client.multi() - .hget('hash key 2', 'key 1') - .hget(new Buffer('hash key 2'), 'key 1') - .hget('hash key 2', new Buffer('key 2')) - .hget('hash key 2', 'key 2') - .exec(function (err, reply) { - assert.strictEqual(true, Array.isArray(reply)); - assert.strictEqual(4, reply.length); - assert.strictEqual('val 1', reply[0]); - assert.strictEqual(true, Buffer.isBuffer(reply[1])); - assert.strictEqual('', reply[1].inspect()); - assert.strictEqual(true, Buffer.isBuffer(reply[2])); - assert.strictEqual('', reply[2].inspect()); - assert.strictEqual('val 2', reply[3]); - return done(err); - }); + it('returns strings for keys requested in transaction', function (done) { + client.multi().hmget('hash key 2', 'key 1', 'key 2').exec(function (err, reply) { + assert.strictEqual(true, Array.isArray(reply)); + assert.strictEqual(1, reply.length); + assert.strictEqual(2, reply[0].length); + assert.strictEqual('val 1', reply[0][0]); + assert.strictEqual('val 2', reply[0][1]); + return done(err); }); }); - describe('batch.hget', function () { - it('can interleave string and buffer results', function (done) { - client.batch() - .hget('hash key 2', 'key 1') - .hget(new Buffer('hash key 2'), 'key 1') - .hget('hash key 2', new Buffer('key 2')) - .hget('hash key 2', 'key 2') - .exec(function (err, reply) { - assert.strictEqual(true, Array.isArray(reply)); - assert.strictEqual(4, reply.length); - assert.strictEqual('val 1', reply[0]); - assert.strictEqual(true, Buffer.isBuffer(reply[1])); - assert.strictEqual('', reply[1].inspect()); - assert.strictEqual(true, Buffer.isBuffer(reply[2])); - assert.strictEqual('', reply[2].inspect()); - assert.strictEqual('val 2', reply[3]); - return done(err); - }); + it('handles array of strings with undefined values (repro #344)', function (done) { + client.hmget('hash key 2', 'key 3', 'key 4', function (err, reply) { + assert.strictEqual(true, Array.isArray(reply)); + assert.strictEqual(2, reply.length); + assert.equal(null, reply[0]); + assert.equal(null, reply[1]); + return done(err); }); }); - describe('hmget', function () { - describe('first argument is a string', function () { - it('returns strings for keys requested', function (done) { - client.hmget('hash key 2', 'key 1', 'key 2', function (err, reply) { - assert.strictEqual(true, Array.isArray(reply)); - assert.strictEqual(2, reply.length); - assert.strictEqual('val 1', reply[0]); - assert.strictEqual('val 2', reply[1]); - return done(err); - }); - }); - - it('returns strings for keys requested in transaction', function (done) { - client.multi().hmget('hash key 2', 'key 1', 'key 2').exec(function (err, reply) { - assert.strictEqual(true, Array.isArray(reply)); - assert.strictEqual(1, reply.length); - assert.strictEqual(2, reply[0].length); - assert.strictEqual('val 1', reply[0][0]); - assert.strictEqual('val 2', reply[0][1]); - return done(err); - }); - }); - - it('handles array of strings with undefined values (repro #344)', function (done) { - client.hmget('hash key 2', 'key 3', 'key 4', function (err, reply) { - assert.strictEqual(true, Array.isArray(reply)); - assert.strictEqual(2, reply.length); - assert.equal(null, reply[0]); - assert.equal(null, reply[1]); - return done(err); - }); - }); - - it('handles array of strings with undefined values in transaction (repro #344)', function (done) { - client.multi().hmget('hash key 2', 'key 3', 'key 4').exec(function (err, reply) { - assert.strictEqual(true, Array.isArray(reply)); - assert.strictEqual(1, reply.length); - assert.strictEqual(2, reply[0].length); - assert.equal(null, reply[0][0]); - assert.equal(null, reply[0][1]); - return done(err); - }); - }); + it('handles array of strings with undefined values in transaction (repro #344)', function (done) { + client.multi().hmget('hash key 2', 'key 3', 'key 4').exec(function (err, reply) { + assert.strictEqual(true, Array.isArray(reply)); + assert.strictEqual(1, reply.length); + assert.strictEqual(2, reply[0].length); + assert.equal(null, reply[0][0]); + assert.equal(null, reply[0][1]); + return done(err); }); + }); + }); - describe('first argument is a buffer', function () { - it('returns buffers for keys requested', function (done) { - client.hmget(new Buffer('hash key 2'), 'key 1', 'key 2', function (err, reply) { - assert.strictEqual(true, Array.isArray(reply)); - assert.strictEqual(2, reply.length); - assert.strictEqual(true, Buffer.isBuffer(reply[0])); - assert.strictEqual(true, Buffer.isBuffer(reply[1])); - assert.strictEqual('', reply[0].inspect()); - assert.strictEqual('', reply[1].inspect()); - return done(err); - }); - }); - - it('returns buffers for keys requested in transaction', function (done) { - client.multi().hmget(new Buffer('hash key 2'), 'key 1', 'key 2').exec(function (err, reply) { - assert.strictEqual(true, Array.isArray(reply)); - assert.strictEqual(1, reply.length); - assert.strictEqual(2, reply[0].length); - assert.strictEqual(true, Buffer.isBuffer(reply[0][0])); - assert.strictEqual(true, Buffer.isBuffer(reply[0][1])); - assert.strictEqual('', reply[0][0].inspect()); - assert.strictEqual('', reply[0][1].inspect()); - return done(err); - }); - }); - - it('returns buffers for keys requested in .batch', function (done) { - client.batch().hmget(new Buffer('hash key 2'), 'key 1', 'key 2').exec(function (err, reply) { - assert.strictEqual(true, Array.isArray(reply)); - assert.strictEqual(1, reply.length); - assert.strictEqual(2, reply[0].length); - assert.strictEqual(true, Buffer.isBuffer(reply[0][0])); - assert.strictEqual(true, Buffer.isBuffer(reply[0][1])); - assert.strictEqual('', reply[0][0].inspect()); - assert.strictEqual('', reply[0][1].inspect()); - return done(err); - }); - }); + describe('first argument is a buffer', function () { + it('returns buffers for keys requested', function (done) { + client.hmget(new Buffer('hash key 2'), 'key 1', 'key 2', function (err, reply) { + assert.strictEqual(true, Array.isArray(reply)); + assert.strictEqual(2, reply.length); + assert.strictEqual(true, Buffer.isBuffer(reply[0])); + assert.strictEqual(true, Buffer.isBuffer(reply[1])); + assert.strictEqual('', reply[0].inspect()); + assert.strictEqual('', reply[1].inspect()); + return done(err); }); }); - describe('hgetall', function (done) { - describe('first argument is a string', function () { - it('returns string values', function (done) { - client.hgetall('hash key 2', function (err, reply) { - assert.strictEqual('object', typeof reply); - assert.strictEqual(2, Object.keys(reply).length); - assert.strictEqual('val 1', reply['key 1']); - assert.strictEqual('val 2', reply['key 2']); - return done(err); - }); - }); - - it('returns string values when executed in transaction', function (done) { - client.multi().hgetall('hash key 2').exec(function (err, reply) { - assert.strictEqual(1, reply.length); - assert.strictEqual('object', typeof reply[0]); - assert.strictEqual(2, Object.keys(reply[0]).length); - assert.strictEqual('val 1', reply[0]['key 1']); - assert.strictEqual('val 2', reply[0]['key 2']); - return done(err); - }); - }); - - it('returns string values when executed in .batch', function (done) { - client.batch().hgetall('hash key 2').exec(function (err, reply) { - assert.strictEqual(1, reply.length); - assert.strictEqual('object', typeof reply[0]); - assert.strictEqual(2, Object.keys(reply[0]).length); - assert.strictEqual('val 1', reply[0]['key 1']); - assert.strictEqual('val 2', reply[0]['key 2']); - return done(err); - }); - }); + it('returns buffers for keys requested in transaction', function (done) { + client.multi().hmget(new Buffer('hash key 2'), 'key 1', 'key 2').exec(function (err, reply) { + assert.strictEqual(true, Array.isArray(reply)); + assert.strictEqual(1, reply.length); + assert.strictEqual(2, reply[0].length); + assert.strictEqual(true, Buffer.isBuffer(reply[0][0])); + assert.strictEqual(true, Buffer.isBuffer(reply[0][1])); + assert.strictEqual('', reply[0][0].inspect()); + assert.strictEqual('', reply[0][1].inspect()); + return done(err); }); + }); - describe('first argument is a buffer', function () { - it('returns buffer values', function (done) { - client.hgetall(new Buffer('hash key 2'), function (err, reply) { - assert.strictEqual(null, err); - assert.strictEqual('object', typeof reply); - assert.strictEqual(2, Object.keys(reply).length); - assert.strictEqual(true, Buffer.isBuffer(reply['key 1'])); - assert.strictEqual(true, Buffer.isBuffer(reply['key 2'])); - assert.strictEqual('', reply['key 1'].inspect()); - assert.strictEqual('', reply['key 2'].inspect()); - return done(err); - }); - }); + it('returns buffers for keys requested in .batch', function (done) { + client.batch().hmget(new Buffer('hash key 2'), 'key 1', 'key 2').exec(function (err, reply) { + assert.strictEqual(true, Array.isArray(reply)); + assert.strictEqual(1, reply.length); + assert.strictEqual(2, reply[0].length); + assert.strictEqual(true, Buffer.isBuffer(reply[0][0])); + assert.strictEqual(true, Buffer.isBuffer(reply[0][1])); + assert.strictEqual('', reply[0][0].inspect()); + assert.strictEqual('', reply[0][1].inspect()); + return done(err); + }); + }); + }); + }); - it('returns buffer values when executed in transaction', function (done) { - client.multi().hgetall(new Buffer('hash key 2')).exec(function (err, reply) { - assert.strictEqual(1, reply.length); - assert.strictEqual('object', typeof reply[0]); - assert.strictEqual(2, Object.keys(reply[0]).length); - assert.strictEqual(true, Buffer.isBuffer(reply[0]['key 1'])); - assert.strictEqual(true, Buffer.isBuffer(reply[0]['key 2'])); - assert.strictEqual('', reply[0]['key 1'].inspect()); - assert.strictEqual('', reply[0]['key 2'].inspect()); - return done(err); - }); - }); + describe('hgetall', function (done) { + describe('first argument is a string', function () { + it('returns string values', function (done) { + client.hgetall('hash key 2', function (err, reply) { + assert.strictEqual('object', typeof reply); + assert.strictEqual(2, Object.keys(reply).length); + assert.strictEqual('val 1', reply['key 1']); + assert.strictEqual('val 2', reply['key 2']); + return done(err); + }); + }); - it('returns buffer values when executed in .batch', function (done) { - client.batch().hgetall(new Buffer('hash key 2')).exec(function (err, reply) { - assert.strictEqual(1, reply.length); - assert.strictEqual('object', typeof reply[0]); - assert.strictEqual(2, Object.keys(reply[0]).length); - assert.strictEqual(true, Buffer.isBuffer(reply[0]['key 1'])); - assert.strictEqual(true, Buffer.isBuffer(reply[0]['key 2'])); - assert.strictEqual('', reply[0]['key 1'].inspect()); - assert.strictEqual('', reply[0]['key 2'].inspect()); - return done(err); - }); - }); + it('returns string values when executed in transaction', function (done) { + client.multi().hgetall('hash key 2').exec(function (err, reply) { + assert.strictEqual(1, reply.length); + assert.strictEqual('object', typeof reply[0]); + assert.strictEqual(2, Object.keys(reply[0]).length); + assert.strictEqual('val 1', reply[0]['key 1']); + assert.strictEqual('val 2', reply[0]['key 2']); + return done(err); + }); + }); + + it('returns string values when executed in .batch', function (done) { + client.batch().hgetall('hash key 2').exec(function (err, reply) { + assert.strictEqual(1, reply.length); + assert.strictEqual('object', typeof reply[0]); + assert.strictEqual(2, Object.keys(reply[0]).length); + assert.strictEqual('val 1', reply[0]['key 1']); + assert.strictEqual('val 2', reply[0]['key 2']); + return done(err); + }); + }); + }); + + describe('first argument is a buffer', function () { + it('returns buffer values', function (done) { + client.hgetall(new Buffer('hash key 2'), function (err, reply) { + assert.strictEqual(null, err); + assert.strictEqual('object', typeof reply); + assert.strictEqual(2, Object.keys(reply).length); + assert.strictEqual(true, Buffer.isBuffer(reply['key 1'])); + assert.strictEqual(true, Buffer.isBuffer(reply['key 2'])); + assert.strictEqual('', reply['key 1'].inspect()); + assert.strictEqual('', reply['key 2'].inspect()); + return done(err); + }); + }); + + it('returns buffer values when executed in transaction', function (done) { + client.multi().hgetall(new Buffer('hash key 2')).exec(function (err, reply) { + assert.strictEqual(1, reply.length); + assert.strictEqual('object', typeof reply[0]); + assert.strictEqual(2, Object.keys(reply[0]).length); + assert.strictEqual(true, Buffer.isBuffer(reply[0]['key 1'])); + assert.strictEqual(true, Buffer.isBuffer(reply[0]['key 2'])); + assert.strictEqual('', reply[0]['key 1'].inspect()); + assert.strictEqual('', reply[0]['key 2'].inspect()); + return done(err); + }); + }); + + it('returns buffer values when executed in .batch', function (done) { + client.batch().hgetall(new Buffer('hash key 2')).exec(function (err, reply) { + assert.strictEqual(1, reply.length); + assert.strictEqual('object', typeof reply[0]); + assert.strictEqual(2, Object.keys(reply[0]).length); + assert.strictEqual(true, Buffer.isBuffer(reply[0]['key 1'])); + assert.strictEqual(true, Buffer.isBuffer(reply[0]['key 2'])); + assert.strictEqual('', reply[0]['key 1'].inspect()); + assert.strictEqual('', reply[0]['key 2'].inspect()); + return done(err); }); }); });