diff --git a/test/perl-tests.lisp b/test/perl-tests.lisp index a7e6211..b89ea78 100644 --- a/test/perl-tests.lisp +++ b/test/perl-tests.lisp @@ -34,7 +34,7 @@ (in-package :cl-ppcre-test) -(defvar *tests-to-skip* '(662 790 1439) +(defvar *tests-to-skip* '(636 638 662 790 1439) "Some tests we skip because the testdata is generated by a Perl program and CL-PPCRE differs from Perl for these tests - on purpose.") @@ -104,20 +104,20 @@ test files." (unless (find counter *tests-to-skip* :test #'=) (when verbose (format t "~&~4D: ~S" counter info-string)) - (let ((scanner - (handler-bind ((error (lambda (condition) - (declare (ignore condition)) - (when perl-error - ;; we expected an - ;; error, so we can - ;; signal success - (return-from test-block))))) - (create-scanner regex - :case-insensitive-mode case-insensitive-mode - :multi-line-mode multi-line-mode - :single-line-mode single-line-mode - :extended-mode extended-mode)))) - (block test-block + (block inner-test-block + (let ((scanner + (handler-bind ((error (lambda (condition) + (declare (ignore condition)) + (when perl-error + ;; we expected an + ;; error, so we can + ;; signal success + (return-from inner-test-block))))) + (create-scanner regex + :case-insensitive-mode case-insensitive-mode + :multi-line-mode multi-line-mode + :single-line-mode single-line-mode + :extended-mode extended-mode)))) (multiple-value-bind (start end reg-starts reg-ends) (scan scanner target) (cond (perl-error diff --git a/test/perltestdata b/test/perltestdata index f3ba085..1b52320 100644 --- a/test/perltestdata +++ b/test/perltestdata @@ -14286,3 +14286,7 @@ b" nil "b" (nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil)) (1623 "\"abcdxklqj\" =~ /ab(?=.*q)cd/" "ab(?=.*q)cd" nil nil nil nil "abcdxklqj" nil "abcd" (nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil)) (1624 "\"ab\" =~ /a(?!.*$)b/" "a(?!.*$)b" nil nil nil nil "ab" nil nil nil) (1625 "\"Axi\" =~ /.{2}[a-z]/" ".{2}[a-z]" nil nil nil nil "Axi" nil "Axi" (nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil)) +(1626 "\"aaaaaaaaaac\" =~ /((a{0,5}){0,5}){0,5}c/" "((a{0,5}){0,5}){0,5}c" nil nil nil nil "aaaaaaaaaac" nil "aaaaaaaaaac" ("" "" nil nil nil nil nil nil nil nil nil nil nil nil nil nil)) +(1627 "\"aaaaaaaaaa\" =~ /((a{0,5}){0,5}){0,5}c/" "((a{0,5}){0,5}){0,5}c" nil nil nil nil "aaaaaaaaaa" nil nil nil) +(1628 "\"aaaaaaaaaac\" =~ /((a{0,5}){0,5})*c/" "((a{0,5}){0,5})*c" nil nil nil nil "aaaaaaaaaac" nil "aaaaaaaaaac" ("" "" nil nil nil nil nil nil nil nil nil nil nil nil nil nil)) +(1629 "\"aaaaaaaaaa\" =~ /((a{0,5}){0,5})*c/" "((a{0,5}){0,5})*c" nil nil nil nil "aaaaaaaaaa" nil nil nil) diff --git a/test/perltestinput b/test/perltestinput index 8f1ad56..1425493 100644 --- a/test/perltestinput +++ b/test/perltestinput @@ -3945,4 +3945,12 @@ ab /.{2}[a-z]/ - Axi \ No newline at end of file + Axi + +/((a{0,5}){0,5}){0,5}c/ + aaaaaaaaaac + aaaaaaaaaa + +/((a{0,5}){0,5})*c/ + aaaaaaaaaac + aaaaaaaaaa