From 21770c380605a2b43109975d56a5ffafc85597f2 Mon Sep 17 00:00:00 2001 From: Matt Loring Date: Thu, 17 Mar 2016 16:36:51 -0700 Subject: [PATCH] test: reduce brittleness of tab complete test test-repl-tab-complete includes tests that ensure that certain keys do not appear in tab completions or that completion does not crash the repl. It performed these tests by comparing completion output to a hardcoded list of expected keys. This list is made incorrect by any api changes that occur when new versions of V8 are introduced. With this change, we assert that the specific keys to be avoided are not present in the output instead. PR-URL: https://github.com/nodejs/node/pull/5772 Reviewed-By: Rich Trott Reviewed-By: Colin Ihrig Reviewed-By: James M Snell Conflicts: test/parallel/test-repl-tab-complete.js --- test/parallel/test-repl-tab-complete.js | 67 +++---------------------- 1 file changed, 6 insertions(+), 61 deletions(-) diff --git a/test/parallel/test-repl-tab-complete.js b/test/parallel/test-repl-tab-complete.js index 86a0444c953d27..b1aa6d61f4f462 100644 --- a/test/parallel/test-repl-tab-complete.js +++ b/test/parallel/test-repl-tab-complete.js @@ -230,79 +230,24 @@ putIn.run([ testMe.complete('proxy.', common.mustCall(function(error, data) { assert.strictEqual(error, null); - assert.deepEqual(data, [[], 'proxy.']); })); // Make sure tab completion does not include integer members of an Array -var array_elements = [ [ - 'ary.__defineGetter__', - 'ary.__defineSetter__', - 'ary.__lookupGetter__', - 'ary.__lookupSetter__', - 'ary.__proto__', - 'ary.constructor', - 'ary.hasOwnProperty', - 'ary.isPrototypeOf', - 'ary.propertyIsEnumerable', - 'ary.toLocaleString', - 'ary.toString', - 'ary.valueOf', - '', - 'ary.concat', - 'ary.copyWithin', - 'ary.entries', - 'ary.every', - 'ary.fill', - 'ary.filter', - 'ary.find', - 'ary.findIndex', - 'ary.forEach', - 'ary.indexOf', - 'ary.join', - 'ary.keys', - 'ary.lastIndexOf', - 'ary.length', - 'ary.map', - 'ary.pop', - 'ary.push', - 'ary.reduce', - 'ary.reduceRight', - 'ary.reverse', - 'ary.shift', - 'ary.slice', - 'ary.some', - 'ary.sort', - 'ary.splice', - 'ary.unshift' ], - 'ary.']; - putIn.run(['.clear']); putIn.run(['var ary = [1,2,3];']); testMe.complete('ary.', common.mustCall(function(error, data) { - assert.deepEqual(data, array_elements); + assert.strictEqual(data[0].indexOf('ary.0'), -1); + assert.strictEqual(data[0].indexOf('ary.1'), -1); + assert.strictEqual(data[0].indexOf('ary.2'), -1); })); // Make sure tab completion does not include integer keys in an object -var obj_elements = [ [ - 'obj.__defineGetter__', - 'obj.__defineSetter__', - 'obj.__lookupGetter__', - 'obj.__lookupSetter__', - 'obj.__proto__', - 'obj.constructor', - 'obj.hasOwnProperty', - 'obj.isPrototypeOf', - 'obj.propertyIsEnumerable', - 'obj.toLocaleString', - 'obj.toString', - 'obj.valueOf', - '', - 'obj.a' ], - 'obj.' ]; putIn.run(['.clear']); putIn.run(['var obj = {1:"a","1a":"b",a:"b"};']); testMe.complete('obj.', common.mustCall(function(error, data) { - assert.deepEqual(data, obj_elements); + assert.strictEqual(data[0].indexOf('obj.1'), -1); + assert.strictEqual(data[0].indexOf('obj.1a'), -1); + assert.notStrictEqual(data[0].indexOf('obj.a'), -1); }));