diff options
author | Mattias Engdegård <mattiase@acm.org> | 2019-10-10 21:20:20 +0200 |
---|---|---|
committer | Mattias Engdegård <mattiase@acm.org> | 2019-10-13 20:29:27 +0200 |
commit | 67ed6ee7337d66dc1101e41bc2e67bde5ab0ecd4 (patch) | |
tree | 2ab9cbaee0cd98bd3a01d496c91e6ca4fda041dd /test/lisp/emacs-lisp | |
parent | 556ae6674c600e19453a43de51817aa8b4df52fa (diff) | |
download | emacs-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.el | 23 |
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))))) |