@@ -516,8 +516,20 @@ describe('path-to-regexp', function () {
516
516
517
517
it ( 'should do non-ending matches' , function ( ) {
518
518
var params = [ ] ;
519
- var re = pathToRegExp ( '/:test' , params , { end : false } )
520
- var m = re . exec ( '/test/route' ) ;
519
+ var m = pathToRegExp ( '/:test' , params , { end : false } ) . exec ( '/test/route' ) ;
520
+
521
+ assert . equal ( params . length , 1 ) ;
522
+ assert . equal ( params [ 0 ] . name , 'test' ) ;
523
+ assert . equal ( params [ 0 ] . optional , false ) ;
524
+
525
+ assert . equal ( m . length , 2 ) ;
526
+ assert . equal ( m [ 0 ] , '/test' ) ;
527
+ assert . equal ( m [ 1 ] , 'test' ) ;
528
+ } ) ;
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' ) ;
521
533
522
534
assert . equal ( params . length , 1 ) ;
523
535
assert . equal ( params [ 0 ] . name , 'test' ) ;
@@ -558,6 +570,34 @@ describe('path-to-regexp', function () {
558
570
559
571
m = re . exec ( '/route/test' ) ;
560
572
573
+ assert . equal ( m . length , 1 ) ;
574
+ assert . equal ( m [ 0 ] , '/route' ) ;
575
+
576
+ m = re . exec ( '/route' ) ;
577
+
578
+ assert . equal ( m . length , 1 ) ;
579
+ assert . equal ( m [ 0 ] , '/route' ) ;
580
+
581
+ m = re . exec ( '/route//' ) ;
582
+
583
+ assert . equal ( m . length , 1 ) ;
584
+ assert . equal ( m [ 0 ] , '/route/' ) ;
585
+ } ) ;
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
+
561
601
assert . equal ( m . length , 1 ) ;
562
602
assert . equal ( m [ 0 ] , '/route/' ) ;
563
603
@@ -613,6 +653,24 @@ describe('path-to-regexp', function () {
613
653
614
654
m = re . exec ( '/route/' ) ;
615
655
656
+ assert . ok ( m . length , 1 ) ;
657
+ assert . equal ( m [ 0 ] , '/route' ) ;
658
+ } ) ;
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
+
616
674
assert . ok ( m . length , 1 ) ;
617
675
assert . equal ( m [ 0 ] , '/route/' ) ;
618
676
} ) ;
@@ -729,6 +787,12 @@ describe('path-to-regexp', function () {
729
787
} ) ;
730
788
731
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
+
732
796
var params = [ ] ;
733
797
var re = pathToRegExp ( / \/ ( .* ) \/ (?< foo > .* ) \/ ( .* ) / , params ) ;
734
798
var m ;
0 commit comments