@@ -836,6 +836,63 @@ it('should not parse invalid arbitrary values', () => {
836
836
}
837
837
} )
838
838
839
+ it ( 'should not parse invalid arbitrary values in variants' , ( ) => {
840
+ let utilities = new Utilities ( )
841
+ utilities . static ( 'flex' , ( ) => [ ] )
842
+
843
+ let variants = new Variants ( )
844
+ variants . functional ( 'data' , ( ) => { } )
845
+
846
+ for ( let candidate of [
847
+ 'data-foo-[#0088cc]:flex' ,
848
+ 'data-foo[#0088cc]:flex' ,
849
+
850
+ 'data-foo-[color:var(--value)]:flex' ,
851
+ 'data-foo[color:var(--value)]:flex' ,
852
+
853
+ 'data-foo-[#0088cc]/50:flex' ,
854
+ 'data-foo[#0088cc]/50:flex' ,
855
+
856
+ 'data-foo-[#0088cc]/[50%]:flex' ,
857
+ 'data-foo[#0088cc]/[50%]:flex' ,
858
+
859
+ 'data-foo-[#0088cc]:flex!' ,
860
+ 'data-foo[#0088cc]:flex!' ,
861
+
862
+ 'data-foo-[var(--value)]:flex' ,
863
+ 'data-foo[var(--value)]:flex' ,
864
+
865
+ 'data-foo-[var(--value)]:flex!' ,
866
+ 'data-foo[var(--value)]:flex!' ,
867
+
868
+ 'data-foo-(color:--value):flex' ,
869
+ 'data-foo(color:--value):flex' ,
870
+
871
+ 'data-foo-(color:--value)/50:flex' ,
872
+ 'data-foo(color:--value)/50:flex' ,
873
+
874
+ 'data-foo-(color:--value)/(--mod):flex' ,
875
+ 'data-foo(color:--value)/(--mod):flex' ,
876
+
877
+ 'data-foo-(color:--value)/(number:--mod):flex' ,
878
+ 'data-foo(color:--value)/(number:--mod):flex' ,
879
+
880
+ 'data-foo-(--value):flex' ,
881
+ 'data-foo(--value):flex' ,
882
+
883
+ 'data-foo-(--value)/50:flex' ,
884
+ 'data-foo(--value)/50:flex' ,
885
+
886
+ 'data-foo-(--value)/(--mod):flex' ,
887
+ 'data-foo(--value)/(--mod):flex' ,
888
+
889
+ 'data-foo-(--value)/(number:--mod):flex' ,
890
+ 'data-foo(--value)/(number:--mod):flex' ,
891
+ ] ) {
892
+ expect ( run ( candidate , { utilities, variants } ) ) . toEqual ( [ ] )
893
+ }
894
+ } )
895
+
839
896
it ( 'should parse a utility with an implicit variable as the modifier' , ( ) => {
840
897
let utilities = new Utilities ( )
841
898
utilities . functional ( 'bg' , ( ) => [ ] )
@@ -966,6 +1023,18 @@ it('should parse a utility with an explicit variable as the modifier that is imp
966
1023
` )
967
1024
} )
968
1025
1026
+ it ( 'should not parse a partial variant' , ( ) => {
1027
+ let utilities = new Utilities ( )
1028
+ utilities . static ( 'flex' , ( ) => [ ] )
1029
+
1030
+ let variants = new Variants ( )
1031
+ variants . static ( 'open' , ( ) => { } )
1032
+ variants . functional ( 'data' , ( ) => { } )
1033
+
1034
+ expect ( run ( 'open-:flex' , { utilities, variants } ) ) . toMatchInlineSnapshot ( `[]` )
1035
+ expect ( run ( 'data-:flex' , { utilities, variants } ) ) . toMatchInlineSnapshot ( `[]` )
1036
+ } )
1037
+
969
1038
it ( 'should parse a static variant starting with @' , ( ) => {
970
1039
let utilities = new Utilities ( )
971
1040
utilities . static ( 'flex' , ( ) => [ ] )
0 commit comments