@@ -9,14 +9,18 @@ const defaultNpmModules = [
9
9
10
10
describe ( 'dependency-parser - parser()' , ( ) => {
11
11
it ( 'should handle JS file with no dependencies' , ( ) => {
12
- const parser = new Parser ( defaultNpmModules )
12
+ const parser = new Parser ( {
13
+ supportedNpmModules : defaultNpmModules ,
14
+ } )
13
15
const { dependencies } = parser . parse ( path . join ( __dirname , 'check-parser-fixtures' , 'no-dependencies.js' ) )
14
16
expect ( dependencies . map ( d => d . filePath ) ) . toHaveLength ( 0 )
15
17
} )
16
18
17
19
it ( 'should handle JS file with dependencies' , ( ) => {
18
20
const toAbsolutePath = ( ...filepath : string [ ] ) => path . join ( __dirname , 'check-parser-fixtures' , 'simple-example' , ...filepath )
19
- const parser = new Parser ( defaultNpmModules )
21
+ const parser = new Parser ( {
22
+ supportedNpmModules : defaultNpmModules ,
23
+ } )
20
24
const { dependencies } = parser . parse ( toAbsolutePath ( 'entrypoint.js' ) )
21
25
expect ( dependencies . map ( d => d . filePath ) . sort ( ) ) . toEqual ( [
22
26
toAbsolutePath ( 'dep1.js' ) ,
@@ -31,7 +35,9 @@ describe('dependency-parser - parser()', () => {
31
35
it ( 'should report a missing entrypoint file' , ( ) => {
32
36
const missingEntrypoint = path . join ( __dirname , 'check-parser-fixtures' , 'does-not-exist.js' )
33
37
try {
34
- const parser = new Parser ( defaultNpmModules )
38
+ const parser = new Parser ( {
39
+ supportedNpmModules : defaultNpmModules ,
40
+ } )
35
41
parser . parse ( missingEntrypoint )
36
42
} catch ( err ) {
37
43
expect ( err ) . toMatchObject ( { missingFiles : [ missingEntrypoint ] } )
@@ -41,7 +47,9 @@ describe('dependency-parser - parser()', () => {
41
47
it ( 'should report missing check dependencies' , ( ) => {
42
48
const toAbsolutePath = ( ...filepath : string [ ] ) => path . join ( __dirname , 'check-parser-fixtures' , ...filepath )
43
49
try {
44
- const parser = new Parser ( defaultNpmModules )
50
+ const parser = new Parser ( {
51
+ supportedNpmModules : defaultNpmModules ,
52
+ } )
45
53
parser . parse ( toAbsolutePath ( 'missing-dependencies.js' ) )
46
54
} catch ( err ) {
47
55
expect ( err ) . toMatchObject ( { missingFiles : [ toAbsolutePath ( 'does-not-exist.js' ) , toAbsolutePath ( 'does-not-exist2.js' ) ] } )
@@ -51,7 +59,9 @@ describe('dependency-parser - parser()', () => {
51
59
it ( 'should report syntax errors' , ( ) => {
52
60
const entrypoint = path . join ( __dirname , 'check-parser-fixtures' , 'syntax-error.js' )
53
61
try {
54
- const parser = new Parser ( defaultNpmModules )
62
+ const parser = new Parser ( {
63
+ supportedNpmModules : defaultNpmModules ,
64
+ } )
55
65
parser . parse ( entrypoint )
56
66
} catch ( err ) {
57
67
expect ( err ) . toMatchObject ( { parseErrors : [ { file : entrypoint , error : 'Unexpected token (4:70)' } ] } )
@@ -61,16 +71,29 @@ describe('dependency-parser - parser()', () => {
61
71
it ( 'should report unsupported dependencies' , ( ) => {
62
72
const entrypoint = path . join ( __dirname , 'check-parser-fixtures' , 'unsupported-dependencies.js' )
63
73
try {
64
- const parser = new Parser ( defaultNpmModules )
74
+ const parser = new Parser ( {
75
+ supportedNpmModules : defaultNpmModules ,
76
+ } )
65
77
parser . parse ( entrypoint )
66
78
} catch ( err ) {
67
79
expect ( err ) . toMatchObject ( { unsupportedNpmDependencies : [ { file : entrypoint , unsupportedDependencies : [ 'left-pad' , 'right-pad' ] } ] } )
68
80
}
69
81
} )
70
82
83
+ it ( 'should allow unsupported dependencies if configured to do so' , ( ) => {
84
+ const entrypoint = path . join ( __dirname , 'check-parser-fixtures' , 'unsupported-dependencies.js' )
85
+ const parser = new Parser ( {
86
+ supportedNpmModules : defaultNpmModules ,
87
+ checkUnsupportedModules : false ,
88
+ } )
89
+ parser . parse ( entrypoint )
90
+ } )
91
+
71
92
it ( 'should handle circular dependencies' , ( ) => {
72
93
const toAbsolutePath = ( ...filepath : string [ ] ) => path . join ( __dirname , 'check-parser-fixtures' , 'circular-dependencies' , ...filepath )
73
- const parser = new Parser ( defaultNpmModules )
94
+ const parser = new Parser ( {
95
+ supportedNpmModules : defaultNpmModules ,
96
+ } )
74
97
const { dependencies } = parser . parse ( toAbsolutePath ( 'entrypoint.js' ) )
75
98
76
99
// Circular dependencies are allowed in Node.js
@@ -84,7 +107,9 @@ describe('dependency-parser - parser()', () => {
84
107
85
108
it ( 'should parse typescript dependencies' , ( ) => {
86
109
const toAbsolutePath = ( ...filepath : string [ ] ) => path . join ( __dirname , 'check-parser-fixtures' , 'typescript-example' , ...filepath )
87
- const parser = new Parser ( defaultNpmModules )
110
+ const parser = new Parser ( {
111
+ supportedNpmModules : defaultNpmModules ,
112
+ } )
88
113
const { dependencies } = parser . parse ( toAbsolutePath ( 'entrypoint.ts' ) )
89
114
expect ( dependencies . map ( d => d . filePath ) . sort ( ) ) . toEqual ( [
90
115
toAbsolutePath ( 'dep1.ts' ) ,
@@ -102,7 +127,9 @@ describe('dependency-parser - parser()', () => {
102
127
103
128
it ( 'should handle ES Modules' , ( ) => {
104
129
const toAbsolutePath = ( ...filepath : string [ ] ) => path . join ( __dirname , 'check-parser-fixtures' , 'esmodules-example' , ...filepath )
105
- const parser = new Parser ( defaultNpmModules )
130
+ const parser = new Parser ( {
131
+ supportedNpmModules : defaultNpmModules ,
132
+ } )
106
133
const { dependencies } = parser . parse ( toAbsolutePath ( 'entrypoint.js' ) )
107
134
expect ( dependencies . map ( d => d . filePath ) . sort ( ) ) . toEqual ( [
108
135
toAbsolutePath ( 'dep1.js' ) ,
@@ -113,7 +140,9 @@ describe('dependency-parser - parser()', () => {
113
140
114
141
it ( 'should handle Common JS and ES Modules' , ( ) => {
115
142
const toAbsolutePath = ( ...filepath : string [ ] ) => path . join ( __dirname , 'check-parser-fixtures' , 'common-esm-example' , ...filepath )
116
- const parser = new Parser ( defaultNpmModules )
143
+ const parser = new Parser ( {
144
+ supportedNpmModules : defaultNpmModules ,
145
+ } )
117
146
const { dependencies } = parser . parse ( toAbsolutePath ( 'entrypoint.mjs' ) )
118
147
expect ( dependencies . map ( d => d . filePath ) . sort ( ) ) . toEqual ( [
119
148
toAbsolutePath ( 'dep1.js' ) ,
@@ -130,21 +159,27 @@ describe('dependency-parser - parser()', () => {
130
159
*/
131
160
it . skip ( 'should ignore cases where require is reassigned' , ( ) => {
132
161
const entrypoint = path . join ( __dirname , 'check-parser-fixtures' , 'reassign-require.js' )
133
- const parser = new Parser ( defaultNpmModules )
162
+ const parser = new Parser ( {
163
+ supportedNpmModules : defaultNpmModules ,
164
+ } )
134
165
parser . parse ( entrypoint )
135
166
} )
136
167
137
168
// Checks run on Checkly are wrapped to support top level await.
138
169
// For consistency with checks created via the UI, the CLI should support this as well.
139
170
it ( 'should allow top-level await' , ( ) => {
140
171
const entrypoint = path . join ( __dirname , 'check-parser-fixtures' , 'top-level-await.js' )
141
- const parser = new Parser ( defaultNpmModules )
172
+ const parser = new Parser ( {
173
+ supportedNpmModules : defaultNpmModules ,
174
+ } )
142
175
parser . parse ( entrypoint )
143
176
} )
144
177
145
178
it ( 'should allow top-level await in TypeScript' , ( ) => {
146
179
const entrypoint = path . join ( __dirname , 'check-parser-fixtures' , 'top-level-await.ts' )
147
- const parser = new Parser ( defaultNpmModules )
180
+ const parser = new Parser ( {
181
+ supportedNpmModules : defaultNpmModules ,
182
+ } )
148
183
parser . parse ( entrypoint )
149
184
} )
150
185
} )
0 commit comments