@@ -15,7 +15,12 @@ describe('findStaticPlugins', () => {
1515 plugins: [plugin1, plugin2, 'plugin3', require('./plugin4')]
1616 }
1717 ` ) ,
18- ) . toEqual ( [ './plugin1' , './plugin2' , 'plugin3' , './plugin4' ] )
18+ ) . toEqual ( [
19+ [ './plugin1' , null ] ,
20+ [ './plugin2' , null ] ,
21+ [ 'plugin3' , null ] ,
22+ [ './plugin4' , null ] ,
23+ ] )
1924
2025 expect (
2126 findStaticPlugins ( js `
@@ -26,7 +31,12 @@ describe('findStaticPlugins', () => {
2631 plugins: [plugin1, plugin2, 'plugin3', require('./plugin4')]
2732 } as any
2833 ` ) ,
29- ) . toEqual ( [ './plugin1' , './plugin2' , 'plugin3' , './plugin4' ] )
34+ ) . toEqual ( [
35+ [ './plugin1' , null ] ,
36+ [ './plugin2' , null ] ,
37+ [ 'plugin3' , null ] ,
38+ [ './plugin4' , null ] ,
39+ ] )
3040
3141 expect (
3242 findStaticPlugins ( js `
@@ -37,7 +47,12 @@ describe('findStaticPlugins', () => {
3747 plugins: [plugin1, plugin2, 'plugin3', require('./plugin4')]
3848 } satisfies any
3949 ` ) ,
40- ) . toEqual ( [ './plugin1' , './plugin2' , 'plugin3' , './plugin4' ] )
50+ ) . toEqual ( [
51+ [ './plugin1' , null ] ,
52+ [ './plugin2' , null ] ,
53+ [ 'plugin3' , null ] ,
54+ [ './plugin4' , null ] ,
55+ ] )
4156
4257 expect (
4358 findStaticPlugins ( js `
@@ -47,7 +62,11 @@ describe('findStaticPlugins', () => {
4762 plugins: [plugin1, 'plugin2', require('./plugin3')]
4863 } as any
4964 ` ) ,
50- ) . toEqual ( [ './plugin1' , 'plugin2' , './plugin3' ] )
65+ ) . toEqual ( [
66+ [ './plugin1' , null ] ,
67+ [ 'plugin2' , null ] ,
68+ [ './plugin3' , null ] ,
69+ ] )
5170
5271 expect (
5372 findStaticPlugins ( js `
@@ -57,7 +76,11 @@ describe('findStaticPlugins', () => {
5776 plugins: [plugin1, 'plugin2', require('./plugin3')]
5877 } satisfies any
5978 ` ) ,
60- ) . toEqual ( [ './plugin1' , 'plugin2' , './plugin3' ] )
79+ ) . toEqual ( [
80+ [ './plugin1' , null ] ,
81+ [ 'plugin2' , null ] ,
82+ [ './plugin3' , null ] ,
83+ ] )
6184
6285 expect (
6386 findStaticPlugins ( js `
@@ -67,7 +90,87 @@ describe('findStaticPlugins', () => {
6790 plugins: [plugin1, 'plugin2', require('./plugin3')]
6891 }
6992 ` ) ,
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+ ] )
71174 } )
72175
73176 test ( 'bails out on inline plugins' , ( ) => {
@@ -114,21 +217,67 @@ describe('findStaticPlugins', () => {
114217 ) . toEqual ( null )
115218 } )
116219
117- test ( 'bails for plugins with options' , ( ) => {
220+ test ( 'bails on invalid plugin options' , ( ) => {
118221 expect (
119222 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'
121236
122237 export default {
123- plugins: [plugin1({foo:'bar'})]
238+ plugins: [
239+ plugin(),
240+ ]
124241 }
125242 ` ) ,
126243 ) . toEqual ( null )
127244
128245 expect (
129246 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+
130277 export default {
131- plugins: [require('@tailwindcss/typography')({foo:'bar'})]
278+ plugins: [
279+ plugin({ foo: something }),
280+ ]
132281 }
133282 ` ) ,
134283 ) . toEqual ( null )
0 commit comments