summaryrefslogtreecommitdiff
path: root/test/lisp/emacs-lisp
diff options
context:
space:
mode:
authorMattias Engdegård <mattiase@acm.org>2019-10-10 21:20:20 +0200
committerMattias Engdegård <mattiase@acm.org>2019-10-13 20:29:27 +0200
commit67ed6ee7337d66dc1101e41bc2e67bde5ab0ecd4 (patch)
tree2ab9cbaee0cd98bd3a01d496c91e6ca4fda041dd /test/lisp/emacs-lisp
parent556ae6674c600e19453a43de51817aa8b4df52fa (diff)
downloademacs-67ed6ee7337d66dc1101e41bc2e67bde5ab0ecd4.tar.gz
emacs-67ed6ee7337d66dc1101e41bc2e67bde5ab0ecd4.tar.bz2
emacs-67ed6ee7337d66dc1101e41bc2e67bde5ab0ecd4.zip
Correctly explain test failures with mixed uni/multibyte strings
* lisp/emacs-lisp/ert.el (ert--explain-equal-rec): * test/lisp/emacs-lisp/ert-tests.el (ert-test-explain-equal): When explaining a difference between a unibyte and a multibyte string, first convert both to multibyte. Otherwise, we might end up comparing unibyte char C to multibyte char C, 127<C<256, and not detect the difference (bug#30219).
Diffstat (limited to 'test/lisp/emacs-lisp')
-rw-r--r--test/lisp/emacs-lisp/ert-tests.el23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/lisp/emacs-lisp/ert-tests.el b/test/lisp/emacs-lisp/ert-tests.el
index 36db1eeb425..3a9e81595b1 100644
--- a/test/lisp/emacs-lisp/ert-tests.el
+++ b/test/lisp/emacs-lisp/ert-tests.el
@@ -627,6 +627,29 @@ This macro is used to test if macroexpansion in `should' works."
(should (equal (ert--explain-equal 'a sym)
`(different-symbols-with-the-same-name a ,sym)))))
+(ert-deftest ert-test-explain-equal-strings ()
+ (should (equal (ert--explain-equal "abc" "axc")
+ '(array-elt 1 (different-atoms
+ (?b "#x62" "?b")
+ (?x "#x78" "?x")))))
+ (should (equal (ert--explain-equal "abc" "abxc")
+ '(arrays-of-different-length
+ 3 4 "abc" "abxc" first-mismatch-at 2)))
+ (should (equal (ert--explain-equal "xyA" "xyÅ")
+ '(array-elt 2 (different-atoms
+ (?A "#x41" "?A")
+ (?Å "#xc5" "?Å")))))
+ (should (equal (ert--explain-equal "m\xff" "m\u00ff")
+ `(array-elt
+ 1 (different-atoms
+ (#x3fffff "#x3fffff" ,(string-to-multibyte "?\xff"))
+ (#xff "#xff" "?ÿ")))))
+ (should (equal (ert--explain-equal (string-to-multibyte "m\xff") "m\u00ff")
+ `(array-elt
+ 1 (different-atoms
+ (#x3fffff "#x3fffff" ,(string-to-multibyte "?\xff"))
+ (#xff "#xff" "?ÿ"))))))
+
(ert-deftest ert-test-explain-equal-improper-list ()
(should (equal (ert--explain-equal '(a . b) '(a . c))
'(cdr (different-atoms b c)))))