1 | var test = require('tap').test;
|
2 | var detective = require('../');
|
3 | var fs = require('fs');
|
4 | var src = fs.readFileSync(__dirname + '/files/both.js');
|
5 |
|
6 | test('nodes specified in opts and parseopts { range: true }', function (t) {
|
7 | var modules = detective.find(src, { nodes: true, parse: { range: true } });
|
8 | t.deepEqual(modules.strings, [ 'a', 'b' ]);
|
9 | t.deepEqual(modules.expressions, [ "'c' + x", "'d' + y" ]);
|
10 | t.deepEqual(
|
11 | modules.nodes.map(function (n) {
|
12 | var arg = n.arguments[0];
|
13 | return arg.value || arg.left.value;
|
14 | }),
|
15 | [ 'a', 'b', 'c', 'd' ],
|
16 | 'has a node for each require');
|
17 |
|
18 | var range = modules.nodes[0].range;
|
19 | t.equal(range[0], 0, 'includes range start');
|
20 | t.equal(range[1], 12, 'includes range end');
|
21 | t.end();
|
22 | });
|
23 |
|
24 | test('nodes specified in opts and parseopts { range: false }', function (t) {
|
25 | var modules = detective.find(src, { nodes: true, parse: { range: false } });
|
26 | t.deepEqual(modules.strings, [ 'a', 'b' ]);
|
27 | t.deepEqual(modules.expressions, [ "'c' + x", "'d' + y" ]);
|
28 | t.deepEqual(
|
29 | modules.nodes.map(function (n) {
|
30 | var arg = n.arguments[0];
|
31 | return arg.value || arg.left.value;
|
32 | }),
|
33 | [ 'a', 'b', 'c', 'd' ],
|
34 | 'has a node for each require');
|
35 |
|
36 | t.notOk(modules.nodes[0].range, 'includes no ranges');
|
37 | t.end();
|
38 | });
|
39 |
|
40 | test('nodes specified in opts and parseopts { range: true, loc: true }', function (t) {
|
41 | var modules = detective.find(src, { nodes: true, parse: { range: true, loc: true } });
|
42 | t.deepEqual(modules.strings, [ 'a', 'b' ]);
|
43 | t.deepEqual(modules.expressions, [ "'c' + x", "'d' + y" ]);
|
44 | t.deepEqual(
|
45 | modules.nodes.map(function (n) {
|
46 | var arg = n.arguments[0];
|
47 | return arg.value || arg.left.value;
|
48 | }),
|
49 | [ 'a', 'b', 'c', 'd' ],
|
50 | 'has a node for each require');
|
51 |
|
52 | var range = modules.nodes[0].range;
|
53 | t.equal(range[0], 0, 'includes range start');
|
54 | t.equal(range[1], 12, 'includes range end');
|
55 |
|
56 | var loc = modules.nodes[0].loc;
|
57 | t.equal(loc.start.line, 1, 'includes start line');
|
58 | t.equal(loc.start.column, 0, 'includes start column');
|
59 | t.equal(loc.end.line, 1, 'includes end line');
|
60 | t.equal(loc.end.column, 12, 'includes end column');
|
61 | t.end();
|
62 | });
|