Skip to content

Commit

Permalink
test: reduce brittleness of tab complete test
Browse files Browse the repository at this point in the history
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: #5772
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>

Conflicts:
	test/parallel/test-repl-tab-complete.js
  • Loading branch information
Matt Loring authored and Fishrock123 committed Mar 22, 2016
1 parent d3654d8 commit 21770c3
Showing 1 changed file with 6 additions and 61 deletions.
67 changes: 6 additions & 61 deletions test/parallel/test-repl-tab-complete.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}));

0 comments on commit 21770c3

Please sign in to comment.