You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
886 B
27 lines
886 B
2 years ago
|
var test = require('tap').test;
|
||
|
var detective = require('../');
|
||
|
var fs = require('fs');
|
||
|
|
||
|
// in order to use detective to find any function
|
||
|
// it needs to properly handle functions called without args
|
||
|
var src = [ 'fn();', 'otherfn();', 'fn();' ].join('\n')
|
||
|
|
||
|
test('noargs', function (t) {
|
||
|
t.plan(1);
|
||
|
t.deepEqual(detective(src, { word: 'fn' }).length, 0, 'finds no arg id');
|
||
|
});
|
||
|
|
||
|
test('find noargs with nodes', function (t) {
|
||
|
t.plan(4);
|
||
|
var modules = detective.find(src, { word: 'fn', nodes: true });
|
||
|
t.equal(modules.strings.length, 0, 'finds no arg id');
|
||
|
t.equal(modules.expressions.length, 0, 'finds no expressions');
|
||
|
t.equal(modules.nodes.length, 2, 'finds a node for each matching function call');
|
||
|
t.equal(
|
||
|
modules.nodes.filter(function (x) {
|
||
|
return x.callee.name === 'fn'
|
||
|
}).length, 2,
|
||
|
'all matches are correct'
|
||
|
);
|
||
|
});
|