emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/num3-mode cbb80d325f: Avoid mocking font-lock-append-te


From: Michał Nazarewicz
Subject: [elpa] externals/num3-mode cbb80d325f: Avoid mocking font-lock-append-text-property in tests
Date: Sat, 6 Aug 2022 14:22:34 -0400 (EDT)

branch: externals/num3-mode
commit cbb80d325f27efd9682ead553c3aff5663d4730b
Author: Michal Nazarewicz <mina86@mina86.com>
Commit: Michal Nazarewicz <mina86@mina86.com>

    Avoid mocking font-lock-append-text-property in tests
    
    * test.el (num3-mode-test): Rather than mocking functions that the
    mode’s matcher is calling, scan text properties after it runs.  This
    not only results in a shorter code but also removes the need for the
    test to know how the function being tested operates.
---
 test.el | 30 ++++++++++++------------------
 1 file changed, 12 insertions(+), 18 deletions(-)

diff --git a/test.el b/test.el
index 65f2f61b96..aa57df8ad0 100644
--- a/test.el
+++ b/test.el
@@ -31,24 +31,18 @@ caret (‘^’).  For example:
 
     (num3-mode-test \"6.2831853071\"
                     \"6.^^^___^^^_\")"
-  (with-temp-buffer
-    (insert text)
-    (setq text (copy-sequence text))
-    (goto-char (point-min))
-    (cl-letf ((num3-group-size 3)
-              (num3-threshold 5)
-              ((symbol-function 'font-lock-append-text-property)
-               (lambda (lo hi prop face)
-                 (should (<= (point-min) lo hi (point-max)))
-                 (should (< lo hi))
-                 (should (eq 'face prop))
-                 (should (memq face '(num3-face-even num3-face-odd)))
-                 (let ((start (- lo (point-min)))
-                       (char (if (eq face 'num3-face-even) ?^ ?_)))
-                   (dotimes (offset (- hi lo))
-                     (aset text (+ start offset) char))))))
-      (num3--matcher (point-max))))
-  (should (equal want text)))
+  (let ((got (with-temp-buffer
+               (insert text)
+               (goto-char (point-min))
+               (let ((num3-group-size 3) (num3-threshold 5))
+                 (num3--matcher (point-max)))
+               (buffer-string))))
+    (dotimes (idx (length got))
+      (when-let ((face (get-text-property idx 'face got)))
+        (aset got idx (cond ((equal face '(num3-face-even)) ?^)
+                            ((equal face '(num3-face-odd )) ?_)
+                            (??)))))
+  (should (equal want got))))
 
 (ert-deftest num3-mode-decimal-integers ()
   ;; Won’t fontify unless at least five digits.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]