@@ -15,7 +15,12 @@ describe('findStaticPlugins', () => {
15
15
plugins: [plugin1, plugin2, 'plugin3', require('./plugin4')]
16
16
}
17
17
` ) ,
18
- ) . toEqual ( [ './plugin1' , './plugin2' , 'plugin3' , './plugin4' ] )
18
+ ) . toEqual ( [
19
+ [ './plugin1' , null ] ,
20
+ [ './plugin2' , null ] ,
21
+ [ 'plugin3' , null ] ,
22
+ [ './plugin4' , null ] ,
23
+ ] )
19
24
20
25
expect (
21
26
findStaticPlugins ( js `
@@ -26,7 +31,12 @@ describe('findStaticPlugins', () => {
26
31
plugins: [plugin1, plugin2, 'plugin3', require('./plugin4')]
27
32
} as any
28
33
` ) ,
29
- ) . toEqual ( [ './plugin1' , './plugin2' , 'plugin3' , './plugin4' ] )
34
+ ) . toEqual ( [
35
+ [ './plugin1' , null ] ,
36
+ [ './plugin2' , null ] ,
37
+ [ 'plugin3' , null ] ,
38
+ [ './plugin4' , null ] ,
39
+ ] )
30
40
31
41
expect (
32
42
findStaticPlugins ( js `
@@ -37,7 +47,12 @@ describe('findStaticPlugins', () => {
37
47
plugins: [plugin1, plugin2, 'plugin3', require('./plugin4')]
38
48
} satisfies any
39
49
` ) ,
40
- ) . toEqual ( [ './plugin1' , './plugin2' , 'plugin3' , './plugin4' ] )
50
+ ) . toEqual ( [
51
+ [ './plugin1' , null ] ,
52
+ [ './plugin2' , null ] ,
53
+ [ 'plugin3' , null ] ,
54
+ [ './plugin4' , null ] ,
55
+ ] )
41
56
42
57
expect (
43
58
findStaticPlugins ( js `
@@ -47,7 +62,11 @@ describe('findStaticPlugins', () => {
47
62
plugins: [plugin1, 'plugin2', require('./plugin3')]
48
63
} as any
49
64
` ) ,
50
- ) . toEqual ( [ './plugin1' , 'plugin2' , './plugin3' ] )
65
+ ) . toEqual ( [
66
+ [ './plugin1' , null ] ,
67
+ [ 'plugin2' , null ] ,
68
+ [ './plugin3' , null ] ,
69
+ ] )
51
70
52
71
expect (
53
72
findStaticPlugins ( js `
@@ -57,7 +76,11 @@ describe('findStaticPlugins', () => {
57
76
plugins: [plugin1, 'plugin2', require('./plugin3')]
58
77
} satisfies any
59
78
` ) ,
60
- ) . toEqual ( [ './plugin1' , 'plugin2' , './plugin3' ] )
79
+ ) . toEqual ( [
80
+ [ './plugin1' , null ] ,
81
+ [ 'plugin2' , null ] ,
82
+ [ './plugin3' , null ] ,
83
+ ] )
61
84
62
85
expect (
63
86
findStaticPlugins ( js `
@@ -67,7 +90,87 @@ describe('findStaticPlugins', () => {
67
90
plugins: [plugin1, 'plugin2', require('./plugin3')]
68
91
}
69
92
` ) ,
70
- ) . toEqual ( [ './plugin1' , 'plugin2' , './plugin3' ] )
93
+ ) . toEqual ( [
94
+ [ './plugin1' , null ] ,
95
+ [ 'plugin2' , null ] ,
96
+ [ './plugin3' , null ] ,
97
+ ] )
98
+ } )
99
+
100
+ test ( 'can extract plugin options' , ( ) => {
101
+ expect (
102
+ findStaticPlugins ( js `
103
+ import plugin1 from './plugin1'
104
+ import * as plugin2 from './plugin2'
105
+
106
+ export default {
107
+ plugins: [
108
+ plugin1({
109
+ foo: 'bar',
110
+ }),
111
+ plugin2({
112
+ foo: 'bar',
113
+ }),
114
+ require('./plugin3')({
115
+ foo: 'bar',
116
+ }),
117
+ ]
118
+ }
119
+ ` ) ,
120
+ ) . toEqual ( [
121
+ [ './plugin1' , { foo : 'bar' } ] ,
122
+ [ './plugin2' , { foo : 'bar' } ] ,
123
+ [ './plugin3' , { foo : 'bar' } ] ,
124
+ ] )
125
+ } )
126
+
127
+ test ( 'can extract all supported data types' , ( ) => {
128
+ expect (
129
+ findStaticPlugins ( js `
130
+ import plugin from 'plugin'
131
+
132
+ export default {
133
+ plugins: [
134
+ plugin({
135
+ 'is-arr-mixed': [null, true, false, 1234567, 1.35, 'foo', 'bar', 'true'],
136
+ 'is-arr': ['foo', 'bar'],
137
+ 'is-null': null,
138
+ 'is-true': true,
139
+ 'is-false': false,
140
+ 'is-int': 1234567,
141
+ 'is-float': 1.35,
142
+ 'is-sci': 1.35e-5,
143
+ 'is-str-null': 'null',
144
+ 'is-str-true': 'true',
145
+ 'is-str-false': 'false',
146
+ 'is-str-int': '1234567',
147
+ 'is-str-float': '1.35',
148
+ 'is-str-sci': '1.35e-5',
149
+ }),
150
+ ]
151
+ }
152
+ ` ) ,
153
+ ) . toEqual ( [
154
+ [
155
+ 'plugin' ,
156
+ {
157
+ 'is-arr-mixed' : [ null , true , false , 1234567 , 1.35 , 'foo' , 'bar' , 'true' ] ,
158
+ 'is-arr' : [ 'foo' , 'bar' ] ,
159
+ 'is-null' : null ,
160
+ 'is-true' : true ,
161
+ 'is-false' : false ,
162
+ 'is-int' : 1234567 ,
163
+ 'is-float' : 1.35 ,
164
+ 'is-sci' : 1.35e-5 ,
165
+ 'is-str-null' : 'null' ,
166
+ 'is-str-true' : 'true' ,
167
+ 'is-str-false' : 'false' ,
168
+ 'is-str-int' : '1234567' ,
169
+ 'is-str-float' : '1.35' ,
170
+ 'is-str-sci' : '1.35e-5' ,
171
+ } ,
172
+ ] ,
173
+ ] )
71
174
} )
72
175
73
176
test ( 'bails out on inline plugins' , ( ) => {
@@ -114,21 +217,67 @@ describe('findStaticPlugins', () => {
114
217
) . toEqual ( null )
115
218
} )
116
219
117
- test ( 'bails for plugins with options' , ( ) => {
220
+ test ( 'bails on invalid plugin options' , ( ) => {
118
221
expect (
119
222
findStaticPlugins ( js `
120
- import plugin1 from './plugin1'
223
+ import plugin from './plugin'
224
+
225
+ export default {
226
+ plugins: [
227
+ plugin({ foo }),
228
+ ]
229
+ }
230
+ ` ) ,
231
+ ) . toEqual ( null )
232
+
233
+ expect (
234
+ findStaticPlugins ( js `
235
+ import plugin from './plugin'
121
236
122
237
export default {
123
- plugins: [plugin1({foo:'bar'})]
238
+ plugins: [
239
+ plugin(),
240
+ ]
124
241
}
125
242
` ) ,
126
243
) . toEqual ( null )
127
244
128
245
expect (
129
246
findStaticPlugins ( js `
247
+ import plugin from './plugin'
248
+
249
+ export default {
250
+ plugins: [
251
+ plugin({ foo: { bar: 2 } }),
252
+ ]
253
+ }
254
+ ` ) ,
255
+ ) . toEqual ( null )
256
+
257
+ expect (
258
+ findStaticPlugins ( js `
259
+ import plugin from './plugin'
260
+
261
+ const OPTIONS = { foo: 1 }
262
+
263
+ export default {
264
+ plugins: [
265
+ plugin(OPTIONS),
266
+ ]
267
+ }
268
+ ` ) ,
269
+ ) . toEqual ( null )
270
+
271
+ expect (
272
+ findStaticPlugins ( js `
273
+ import plugin from './plugin'
274
+
275
+ let something = 1
276
+
130
277
export default {
131
- plugins: [require('@tailwindcss/typography')({foo:'bar'})]
278
+ plugins: [
279
+ plugin({ foo: something }),
280
+ ]
132
281
}
133
282
` ) ,
134
283
) . toEqual ( null )
0 commit comments