From 67e908ad55fe0dacde37312da350be8371859b90 Mon Sep 17 00:00:00 2001 From: Jonas Dohse Date: Thu, 14 Mar 2013 15:40:32 +0100 Subject: [PATCH] Avoid collision between command and internal field --- index.js | 6 +++--- test.js | 35 +++++++++++++++++++++++++++++++++-- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index 4135dc1..834b43c 100644 --- a/index.js +++ b/index.js @@ -841,7 +841,7 @@ RedisClient.prototype.end = function () { }; function Multi(client, args) { - this.client = client; + this._client = client; this.queue = [["MULTI"]]; if (Array.isArray(args)) { this.queue = this.queue.concat(args); @@ -1009,7 +1009,7 @@ Multi.prototype.exec = function (callback) { args.push(obj[key]); }); } - this.client.send_command(command, args, function (err, reply) { + this._client.send_command(command, args, function (err, reply) { if (err) { var cur = self.queue[index]; if (typeof cur[cur.length - 1] === "function") { @@ -1023,7 +1023,7 @@ Multi.prototype.exec = function (callback) { }, this); // TODO - make this callback part of Multi.prototype instead of creating it each time - return this.client.send_command("EXEC", [], function (err, replies) { + return this._client.send_command("EXEC", [], function (err, replies) { if (err) { if (callback) { callback(new Error(err)); diff --git a/test.js b/test.js index 5431581..3596d94 100644 --- a/test.js +++ b/test.js @@ -496,8 +496,39 @@ tests.SCRIPT_LOAD = function() { client.multi().script("load", command).exec(function(err, result) { assert.strictEqual(result[0].toString(), commandSha); client.multi([['script', 'load', command]]).exec(function(err, result) { - assert.strictEqual(result[0].toString(), commandSha); - next(name); + assert.strictEqual(result[0].toString(), commandSha); + next(name); + }); + }); + }); +}; + +tests.CLIENT_LIST = function() { + var name = "CLIENT_LIST"; + + if (!server_version_at_least(client, [2, 4, 0])) { + console.log("Skipping " + name + " for old Redis server version < 2.4.x"); + return next(name); + } + + function checkResult(result) { + var lines = result.toString().split('\n').slice(0, -1); + assert.strictEqual(lines.length, 4); + assert(lines.every(function(line) { + return line.match(/^addr=/); + })); + } + + bclient.client("list", function(err, result) { + console.log(result.toString()); + checkResult(result); + client.multi().client("list").exec(function(err, result) { + console.log(result.toString()); + checkResult(result); + client.multi([['client', 'list']]).exec(function(err, result) { + console.log(result.toString()); + checkResult(result); + next(name); }); }); });