Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Avoid collision between command and internal field

  • Loading branch information...
commit 67e908ad55fe0dacde37312da350be8371859b90 1 parent de22a94
@dohse dohse authored
Showing with 36 additions and 5 deletions.
  1. +3 −3 index.js
  2. +33 −2 test.js
View
6 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));
View
35 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);
});
});
});
Please sign in to comment.
Something went wrong with that request. Please try again.