@@ -527,6 +527,19 @@ describe('path-to-regexp', function () {
527
527
assert . equal ( m [ 1 ] , 'test' ) ;
528
528
} ) ;
529
529
530
+ it ( 'should do non-ending matches (no lookahead)' , function ( ) {
531
+ var params = [ ] ;
532
+ var m = pathToRegExp ( '/:test' , params , { end : false , lookahead : false } ) . exec ( '/test/route' ) ;
533
+
534
+ assert . equal ( params . length , 1 ) ;
535
+ assert . equal ( params [ 0 ] . name , 'test' ) ;
536
+ assert . equal ( params [ 0 ] . optional , false ) ;
537
+
538
+ assert . equal ( m . length , 2 ) ;
539
+ assert . equal ( m [ 0 ] , '/test/' ) ;
540
+ assert . equal ( m [ 1 ] , 'test' ) ;
541
+ } ) ;
542
+
530
543
it ( 'should match trailing slashes in non-ending non-strict mode' , function ( ) {
531
544
var params = [ ] ;
532
545
var re = pathToRegExp ( '/:test' , params , { end : false } ) ;
@@ -571,6 +584,34 @@ describe('path-to-regexp', function () {
571
584
assert . equal ( m [ 0 ] , '/route/' ) ;
572
585
} ) ;
573
586
587
+ it ( 'should match trailing slashes in non-ending non-strict mode (no lookahead)' , function ( ) {
588
+ var params = [ ] ;
589
+ var re = pathToRegExp ( '/route/' , params , { end : false , lookahead : false } ) ;
590
+ var m ;
591
+
592
+ assert . equal ( params . length , 0 ) ;
593
+
594
+ m = re . exec ( '/route/' ) ;
595
+
596
+ assert . equal ( m . length , 1 ) ;
597
+ assert . equal ( m [ 0 ] , '/route/' ) ;
598
+
599
+ m = re . exec ( '/route/test' ) ;
600
+
601
+ assert . equal ( m . length , 1 ) ;
602
+ assert . equal ( m [ 0 ] , '/route/' ) ;
603
+
604
+ m = re . exec ( '/route' ) ;
605
+
606
+ assert . equal ( m . length , 1 ) ;
607
+ assert . equal ( m [ 0 ] , '/route' ) ;
608
+
609
+ m = re . exec ( '/route//' ) ;
610
+
611
+ assert . equal ( m . length , 1 ) ;
612
+ assert . equal ( m [ 0 ] , '/route//' ) ;
613
+ } ) ;
614
+
574
615
it ( 'should match trailing slashing in non-ending strict mode' , function ( ) {
575
616
var params = [ ] ;
576
617
var re = pathToRegExp ( '/route/' , params , { end : false , strict : true } ) ;
@@ -616,6 +657,24 @@ describe('path-to-regexp', function () {
616
657
assert . equal ( m [ 0 ] , '/route' ) ;
617
658
} ) ;
618
659
660
+ it ( 'should not match trailing slashes in non-ending strict mode (no lookahead)' , function ( ) {
661
+ var params = [ ] ;
662
+ var re = pathToRegExp ( '/route' , params , { end : false , strict : true , lookahead : false } ) ;
663
+ var m ;
664
+
665
+ assert . equal ( params . length , 0 ) ;
666
+
667
+ m = re . exec ( '/route' ) ;
668
+
669
+ assert . equal ( m . length , 1 ) ;
670
+ assert . equal ( m [ 0 ] , '/route' ) ;
671
+
672
+ m = re . exec ( '/route/' ) ;
673
+
674
+ assert . ok ( m . length , 1 ) ;
675
+ assert . equal ( m [ 0 ] , '/route/' ) ;
676
+ } ) ;
677
+
619
678
it ( 'should match text after an express param' , function ( ) {
620
679
var params = [ ] ;
621
680
var re = pathToRegExp ( '/(:test)route' , params ) ;
@@ -728,6 +787,12 @@ describe('path-to-regexp', function () {
728
787
} ) ;
729
788
730
789
it ( 'should pull out matching named groups' , function ( ) {
790
+ const majorVersion = Number ( process . version . split ( '.' ) [ 0 ] . replace ( 'v' , '' ) ) ;
791
+ if ( majorVersion < 10 ) {
792
+ console . log ( 'skipping test: node <10 does not support named capture groups' ) ;
793
+ return ;
794
+ }
795
+
731
796
var params = [ ] ;
732
797
var re = pathToRegExp ( / \/ ( .* ) \/ (?< foo > .* ) \/ ( .* ) / , params ) ;
733
798
var m ;
0 commit comments