Function: ert--explain-equal-including-properties
ert--explain-equal-including-properties is a byte-compiled function
defined in ert.el.gz.
Signature
(ert--explain-equal-including-properties A B)
Documentation
Explainer function for ert-equal-including-properties.
Returns a programmer-readable explanation of why A and B are not
ert-equal-including-properties, or nil if they are.
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/ert.el.gz
;; TODO(ohler): Once bug 6581 is fixed, rename this to
;; `ert--explain-equal-including-properties-rec' and add a fast-path
;; wrapper like `ert--explain-equal'.
(defun ert--explain-equal-including-properties (a b)
"Explainer function for `ert-equal-including-properties'.
Returns a programmer-readable explanation of why A and B are not
`ert-equal-including-properties', or nil if they are."
(if (not (equal a b))
(ert--explain-equal a b)
(cl-assert (stringp a) t)
(cl-assert (stringp b) t)
(cl-assert (eql (length a) (length b)) t)
(cl-loop for i from 0 to (length a)
for props-a = (text-properties-at i a)
for props-b = (text-properties-at i b)
for difference = (ert--plist-difference-explanation
props-a props-b)
do (when difference
(cl-return `(char ,i ,(substring-no-properties a i (1+ i))
,difference
context-before
,(ert--abbreviate-string
(substring-no-properties a 0 i)
10 t)
context-after
,(ert--abbreviate-string
(substring-no-properties a (1+ i))
10 nil))))
;; TODO(ohler): Get `equal-including-properties' fixed in
;; Emacs, delete `ert-equal-including-properties', and
;; re-enable this assertion.
;;finally (cl-assert (equal-including-properties a b) t)
)))