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)
             )))