@@ -483,4 +483,219 @@ export const tests: [string, Selector[][], string][] = [
483
483
] ,
484
484
"pseudo selector with data" ,
485
485
] ,
486
+
487
+ /*
488
+ * Bad attributes (taken from Sizzle)
489
+ * https://github.com/jquery/sizzle/blob/af163873d7cdfc57f18b16c04b1915209533f0b1/test/unit/selector.js#L602-L651
490
+ */
491
+ [
492
+ "[id=types_all]" ,
493
+ [
494
+ [
495
+ {
496
+ type : "attribute" ,
497
+ action : "equals" ,
498
+ name : "id" ,
499
+ value : "types_all" ,
500
+ ignoreCase : false ,
501
+ } ,
502
+ ] ,
503
+ ] ,
504
+ "Underscores don't need escaping" ,
505
+ ] ,
506
+ [
507
+ "[name=foo\\ bar]" ,
508
+ [
509
+ [
510
+ {
511
+ type : "attribute" ,
512
+ action : "equals" ,
513
+ name : "name" ,
514
+ value : "foo bar" ,
515
+ ignoreCase : false ,
516
+ } ,
517
+ ] ,
518
+ ] ,
519
+ "Escaped space" ,
520
+ ] ,
521
+ [
522
+ "[name=foo\\.baz]" ,
523
+ [
524
+ [
525
+ {
526
+ type : "attribute" ,
527
+ action : "equals" ,
528
+ name : "name" ,
529
+ value : "foo.baz" ,
530
+ ignoreCase : false ,
531
+ } ,
532
+ ] ,
533
+ ] ,
534
+ "Escaped dot" ,
535
+ ] ,
536
+ [
537
+ "[name=foo\\[baz\\]]" ,
538
+ [
539
+ [
540
+ {
541
+ type : "attribute" ,
542
+ action : "equals" ,
543
+ name : "name" ,
544
+ value : "foo[baz]" ,
545
+ ignoreCase : false ,
546
+ } ,
547
+ ] ,
548
+ ] ,
549
+ "Escaped brackets" ,
550
+ ] ,
551
+ [
552
+ "[data-attr='foo_baz\\']']" ,
553
+ [
554
+ [
555
+ {
556
+ type : "attribute" ,
557
+ action : "equals" ,
558
+ name : "data-attr" ,
559
+ value : "foo_baz']" ,
560
+ ignoreCase : false ,
561
+ } ,
562
+ ] ,
563
+ ] ,
564
+ "Escaped quote + right bracket" ,
565
+ ] ,
566
+ [
567
+ "[data-attr='\\'']" ,
568
+ [
569
+ [
570
+ {
571
+ type : "attribute" ,
572
+ action : "equals" ,
573
+ name : "data-attr" ,
574
+ value : "'" ,
575
+ ignoreCase : false ,
576
+ } ,
577
+ ] ,
578
+ ] ,
579
+ "Quoted quote" ,
580
+ ] ,
581
+ [
582
+ "[data-attr='\\\\']" ,
583
+ [
584
+ [
585
+ {
586
+ type : "attribute" ,
587
+ action : "equals" ,
588
+ name : "data-attr" ,
589
+ value : "\\" ,
590
+ ignoreCase : false ,
591
+ } ,
592
+ ] ,
593
+ ] ,
594
+ "Quoted backslash" ,
595
+ ] ,
596
+ [
597
+ "[data-attr='\\\\\\'']" ,
598
+ [
599
+ [
600
+ {
601
+ type : "attribute" ,
602
+ action : "equals" ,
603
+ name : "data-attr" ,
604
+ value : "\\'" ,
605
+ ignoreCase : false ,
606
+ } ,
607
+ ] ,
608
+ ] ,
609
+ "Quoted backslash quote" ,
610
+ ] ,
611
+ [
612
+ "[data-attr='\\\\\\\\']" ,
613
+ [
614
+ [
615
+ {
616
+ type : "attribute" ,
617
+ action : "equals" ,
618
+ name : "data-attr" ,
619
+ value : "\\\\" ,
620
+ ignoreCase : false ,
621
+ } ,
622
+ ] ,
623
+ ] ,
624
+ "Quoted backslash backslash" ,
625
+ ] ,
626
+ [
627
+ "[data-attr='\\5C\\\\']" ,
628
+ [
629
+ [
630
+ {
631
+ type : "attribute" ,
632
+ action : "equals" ,
633
+ name : "data-attr" ,
634
+ value : "\\\\" ,
635
+ ignoreCase : false ,
636
+ } ,
637
+ ] ,
638
+ ] ,
639
+ "Quoted backslash backslash (numeric escape)" ,
640
+ ] ,
641
+ [
642
+ "[data-attr='\\5C \\\\']" ,
643
+ [
644
+ [
645
+ {
646
+ type : "attribute" ,
647
+ action : "equals" ,
648
+ name : "data-attr" ,
649
+ value : "\\\\" ,
650
+ ignoreCase : false ,
651
+ } ,
652
+ ] ,
653
+ ] ,
654
+ "Quoted backslash backslash (numeric escape with trailing space)" ,
655
+ ] ,
656
+ [
657
+ "[data-attr='\\5C\t\\\\']" ,
658
+ [
659
+ [
660
+ {
661
+ type : "attribute" ,
662
+ action : "equals" ,
663
+ name : "data-attr" ,
664
+ value : "\\\\" ,
665
+ ignoreCase : false ,
666
+ } ,
667
+ ] ,
668
+ ] ,
669
+ "Quoted backslash backslash (numeric escape with trailing tab)" ,
670
+ ] ,
671
+ [
672
+ "[data-attr='\\04e00']" ,
673
+ [
674
+ [
675
+ {
676
+ type : "attribute" ,
677
+ action : "equals" ,
678
+ name : "data-attr" ,
679
+ value : "\u4e00" ,
680
+ ignoreCase : false ,
681
+ } ,
682
+ ] ,
683
+ ] ,
684
+ "Long numeric escape (BMP)" ,
685
+ ] ,
686
+ [
687
+ "[data-attr='\\01D306A']" ,
688
+ [
689
+ [
690
+ {
691
+ type : "attribute" ,
692
+ action : "equals" ,
693
+ name : "data-attr" ,
694
+ value : "\uD834\uDF06A" ,
695
+ ignoreCase : false ,
696
+ } ,
697
+ ] ,
698
+ ] ,
699
+ "Long numeric escape (non-BMP)" ,
700
+ ] ,
486
701
] ;
0 commit comments