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).
This commit is contained in:
parent
556ae6674c
commit
67ed6ee733
2 changed files with 28 additions and 0 deletions
|
@ -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)))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue