summaryrefslogtreecommitdiff
path: root/test-suite/tests/regexp.test
diff options
context:
space:
mode:
Diffstat (limited to 'test-suite/tests/regexp.test')
-rw-r--r--test-suite/tests/regexp.test15
1 files changed, 12 insertions, 3 deletions
diff --git a/test-suite/tests/regexp.test b/test-suite/tests/regexp.test
index 832542edc..c2b65a64c 100644
--- a/test-suite/tests/regexp.test
+++ b/test-suite/tests/regexp.test
@@ -147,6 +147,14 @@
(define char-code-limit 256)
+;; Since `regexp-quote' uses string ports, and since it is used below
+;; with non-ASCII characters, these ports must be Unicode-capable.
+(define-syntax with-unicode
+ (syntax-rules ()
+ ((_ exp)
+ (with-fluids ((%default-port-encoding "UTF-8"))
+ exp))))
+
(with-test-prefix "regexp-quote"
(pass-if-exception "no args" exception:wrong-num-args
@@ -175,7 +183,7 @@
(s (string c)))
(pass-if (list "char" i (format #f "~s ~s" c s))
(with-ascii-or-latin1-locale i
- (let* ((q (regexp-quote s))
+ (let* ((q (with-unicode (regexp-quote s)))
(m (regexp-exec (make-regexp q flag) s)))
(and (= 0 (match:start m))
(= 1 (match:end m))))))))
@@ -187,7 +195,7 @@
((>= i char-code-limit))
(let* ((c (integer->char i))
(s (string #\a c))
- (q (regexp-quote s)))
+ (q (with-unicode (regexp-quote s))))
(pass-if (list "string \"aX\"" i (format #f "~s ~s ~s" c s q))
(with-ascii-or-latin1-locale i
(let* ((m (regexp-exec (make-regexp q flag) s)))
@@ -196,7 +204,8 @@
(pass-if "string of all chars"
(with-latin1-locale
- (let ((m (regexp-exec (make-regexp (regexp-quote allchars)
+ (let ((m (regexp-exec (make-regexp (with-unicode
+ (regexp-quote allchars))
flag) allchars)))
(and (= 0 (match:start m))
(= (string-length allchars) (match:end m)))))))))