-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
/
utils.test.js
105 lines (94 loc) 路 2.31 KB
/
utils.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
'use strict';
const assert = require('assert');
const path = require('path');
const {parse} = require('babel-eslint');
const readPkgUp = require('read-pkg-up');
const {
isStaticRequire,
isStaticResolve,
relativePathForRequire
} = require('../src/utils');
const pkgInfo = readPkgUp.sync({cwd: __dirname});
const pkgPath = pkgInfo.path;
const pkgName = pkgInfo.pkg.name;
describe('utils', () => {
describe('isRequire', () => {
it('identifies requires', () => {
assert.equal(
isStaticRequire(getFirstExpression(parse("require('@parcel/core')"))),
true
);
});
it("doesn't handle dynamic requires", () => {
assert.equal(
isStaticRequire(getFirstExpression(parse('require(dynamic)'))),
false
);
});
});
describe('isResolve', () => {
it('identifies built-in require.resolve', () => {
assert.equal(
isStaticResolve(
getFirstExpression(parse("require.resolve('@parcel/core')"))
),
true
);
});
});
describe('relativePathForRequire', () => {
it('behaves identically as path.relative on unix', () => {
let sep = path.sep;
path.sep = '/';
assert.equal(
relativePathForRequire({
origin: __filename,
request: '@parcel/eslint-plugin/',
pkgName,
pkgPath
}),
'../'
);
path.sep = sep;
});
it('uses / to separate paths even when path.sep is not /', () => {
let sep = path.sep;
path.sep = '\\';
assert.equal(
relativePathForRequire({
origin: __filename,
request: '@parcel/eslint-plugin/',
pkgName,
pkgPath
}),
'../'
);
path.sep = sep;
});
it('leaves absolute paths alone', () => {
assert.equal(
relativePathForRequire({
origin: __filename,
request: '/a/b',
pkgName,
pkgPath
}),
'/a/b'
);
});
it('prepends ./ to peer paths', () => {
assert.equal(
relativePathForRequire({
origin: __filename,
request: '@parcel/eslint-plugin/test/baz',
pkgName,
pkgPath
}),
'./baz'
);
});
});
});
function getFirstExpression(program) {
return program.body[0].expression;
}