mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
8-bit locale needed for 8-bit regexp tests
Since the regex library expects 8-bit clean characters and an 8-bit locale, tests of 8-bit characters need to occur within the context of an 8-bit locale. * test-suite/tests/regexp.test (regexp-quote tests): wrap them in an ISO-8859-1 locale
This commit is contained in:
parent
7519234547
commit
0d05ae7c4b
1 changed files with 44 additions and 43 deletions
|
@ -132,55 +132,56 @@
|
|||
|
||||
(with-test-prefix "regexp-quote"
|
||||
|
||||
(pass-if-exception "no args" exception:wrong-num-args
|
||||
(regexp-quote))
|
||||
(with-locale "en_US.iso88591"
|
||||
(pass-if-exception "no args" exception:wrong-num-args
|
||||
(regexp-quote))
|
||||
|
||||
(pass-if-exception "bad string arg" exception:wrong-type-arg
|
||||
(regexp-quote 'blah))
|
||||
(pass-if-exception "bad string arg" exception:wrong-type-arg
|
||||
(regexp-quote 'blah))
|
||||
|
||||
(let ((lst `((regexp/basic ,regexp/basic)
|
||||
(regexp/extended ,regexp/extended)))
|
||||
;; string of all characters, except #\nul which doesn't work because
|
||||
;; it's the usual end-of-string for the underlying C regexec()
|
||||
(allchars (list->string (map integer->char
|
||||
(cdr (iota char-code-limit))))))
|
||||
(for-each
|
||||
(lambda (elem)
|
||||
(let ((name (car elem))
|
||||
(flag (cadr elem)))
|
||||
(let ((lst `((regexp/basic ,regexp/basic)
|
||||
(regexp/extended ,regexp/extended)))
|
||||
;; string of all characters, except #\nul which doesn't work because
|
||||
;; it's the usual end-of-string for the underlying C regexec()
|
||||
(allchars (list->string (map integer->char
|
||||
(cdr (iota char-code-limit))))))
|
||||
(for-each
|
||||
(lambda (elem)
|
||||
(let ((name (car elem))
|
||||
(flag (cadr elem)))
|
||||
|
||||
(with-test-prefix name
|
||||
(with-test-prefix name
|
||||
|
||||
;; try on each individual character, except #\nul
|
||||
(do ((i 1 (1+ i)))
|
||||
((>= i char-code-limit))
|
||||
(let* ((c (integer->char i))
|
||||
(s (string c))
|
||||
(q (regexp-quote s)))
|
||||
(pass-if (list "char" i c s q)
|
||||
(let ((m (regexp-exec (make-regexp q flag) s)))
|
||||
(and (= 0 (match:start m))
|
||||
(= 1 (match:end m)))))))
|
||||
;; try on each individual character, except #\nul
|
||||
(do ((i 1 (1+ i)))
|
||||
((>= i char-code-limit))
|
||||
(let* ((c (integer->char i))
|
||||
(s (string c))
|
||||
(q (regexp-quote s)))
|
||||
(pass-if (list "char" i (format #f "~s ~s ~s" c s q))
|
||||
(let ((m (regexp-exec (make-regexp q flag) s)))
|
||||
(and (= 0 (match:start m))
|
||||
(= 1 (match:end m)))))))
|
||||
|
||||
;; try on pattern "aX" where X is each character, except #\nul
|
||||
;; this exposes things like "?" which are special only when they
|
||||
;; follow a pattern to repeat or whatever ("a" in this case)
|
||||
(do ((i 1 (1+ i)))
|
||||
((>= i char-code-limit))
|
||||
(let* ((c (integer->char i))
|
||||
(s (string #\a c))
|
||||
(q (regexp-quote s)))
|
||||
(pass-if (list "string \"aX\"" i c s q)
|
||||
(let ((m (regexp-exec (make-regexp q flag) s)))
|
||||
(and (= 0 (match:start m))
|
||||
(= 2 (match:end m)))))))
|
||||
;; try on pattern "aX" where X is each character, except #\nul
|
||||
;; this exposes things like "?" which are special only when they
|
||||
;; follow a pattern to repeat or whatever ("a" in this case)
|
||||
(do ((i 1 (1+ i)))
|
||||
((>= i char-code-limit))
|
||||
(let* ((c (integer->char i))
|
||||
(s (string #\a c))
|
||||
(q (regexp-quote s)))
|
||||
(pass-if (list "string \"aX\"" i (format #f "~s ~s ~s" c s q))
|
||||
(let ((m (regexp-exec (make-regexp q flag) s)))
|
||||
(and (= 0 (match:start m))
|
||||
(= 2 (match:end m)))))))
|
||||
|
||||
(pass-if "string of all chars"
|
||||
(let ((m (regexp-exec (make-regexp (regexp-quote allchars)
|
||||
flag) allchars)))
|
||||
(and (= 0 (match:start m))
|
||||
(= (string-length allchars) (match:end m))))))))
|
||||
lst)))
|
||||
(pass-if "string of all chars"
|
||||
(let ((m (regexp-exec (make-regexp (regexp-quote allchars)
|
||||
flag) allchars)))
|
||||
(and (= 0 (match:start m))
|
||||
(= (string-length allchars) (match:end m))))))))
|
||||
lst))))
|
||||
|
||||
;;;
|
||||
;;; regexp-substitute
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue