]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix Testcover bug in handling of vectors containing dotted lists
authorGemini Lasswell <gazally@runbox.com>
Mon, 2 Apr 2018 16:34:31 +0000 (09:34 -0700)
committerGemini Lasswell <gazally@runbox.com>
Mon, 2 Apr 2018 16:38:12 +0000 (09:38 -0700)
* lisp/emacs-lisp/testcover.el (testcover-analyze-coverage-compose):
Handle dotted lists. Fix bug#30909.
* test/lisp/emacs-lisp/testcover-resources/testcases.el:
(dotted-list-in-vector-bug-30909): New test case.
(quotes-within-backquotes-bug-25316, dotted-backquote)
(quoted-backquote, backquoted-vector-bug-25316)
(vector-in-macro-spec-bug, backquoted-dotted-alist): Change
docstrings to mention analyzing code instead of reinstrumenting
it.

lisp/emacs-lisp/testcover.el
test/lisp/emacs-lisp/testcover-resources/testcases.el

index e0d2797c0cdda1c71008e07101827fc90bbc8c2f..d48c79cd7703fe7a5b5c01ab9a24a53c7c847aca 100644 (file)
@@ -644,9 +644,11 @@ are 1value."
   "Analyze a list of FORMS for code coverage using FUNC.
 The list is 1valued if all of its constituent elements are also 1valued."
   (let ((result '1value))
-    (dolist (form forms)
-      (let ((val (funcall func form)))
-        (setq result (testcover-coverage-combine result val))))
+    (while (consp forms)
+      (setq result (testcover-coverage-combine result (funcall func (car forms))))
+      (setq forms (cdr forms)))
+    (when forms
+      (setq result (testcover-coverage-combine result (funcall func forms))))
     result))
 
 (defun testcover-analyze-coverage-backquote (bq-list)
index c9703b03de0092ef0f33e15f9e97e0f4325df02f..69ef5b596be1c4f6c34cc7ee9c21419ffdb99abe 100644 (file)
 (should-not (testcover-testcase-cc nil))
 
 ;; ==== quotes-within-backquotes-bug-25316 ====
-"Forms to instrument are found within quotes within backquotes."
+"Forms to analyze are found within quotes within backquotes."
 ;; ====
 (defun testcover-testcase-make-list ()
   (list 'defun 'defvar))
 (should-error (testcover-testcase-thing 3))
 
 ;; ==== dotted-backquote ====
-"Testcover correctly instruments dotted backquoted lists."
+"Testcover can analyze code inside dotted backquoted lists."
 ;; ====
 (defun testcover-testcase-dotted-bq (flag extras)
   (let* ((bq
 (should (equal '(a b c d e) (testcover-testcase-dotted-bq t '(d e))))
 
 ;; ==== quoted-backquote ====
-"Testcover correctly instruments the quoted backquote symbol."
+"Testcover correctly handles the quoted backquote symbol."
 ;; ====
 (defun testcover-testcase-special-symbols ()
   (list '\` '\, '\,@))
 (should (equal '(\` \, \,@) (testcover-testcase-special-symbols)))
 
 ;; ==== backquoted-vector-bug-25316 ====
-"Testcover reinstruments within backquoted vectors."
+"Testcover can analyze code within backquoted vectors."
 ;; ====
 (defun testcover-testcase-vec (a b c)
   `[,a%%% ,(list b%%% c%%%)%%%]%%%)
 (should (equal '([[4 5] 6]) (testcover-testcase-vec-in-list 4 5 6)))
 (should (equal '([100]) (testcover-testcase-vec-arg 100)))
 
+;; ==== dotted-list-in-vector-bug-30909 ====
+"Testcover can analyze dotted pairs within vectors."
+;; ====
+(defun testcover-testcase-vectors-with-dotted-pairs ()
+  (equal [(1 . "x")] [(1 2 . "y")])%%%)
+(should-not (testcover-testcase-vectors-with-dotted-pairs))
+
 ;; ==== vector-in-macro-spec-bug-25316 ====
-"Testcover reinstruments within vectors."
+"Testcover can analyze code inside vectors."
 ;; ====
 (defmacro testcover-testcase-nth-case (arg vec)
   (declare (indent 1)
@@ -466,7 +473,7 @@ regarding the odd-looking coverage result for the quoted form."
 (should (equal (testcover-testcase-use-thing) 15))
 
 ;; ==== backquoted-dotted-alist ====
-"Testcover can instrument a dotted alist constructed with backquote."
+"Testcover can analyze a dotted alist constructed with backquote."
 ;; ====
 (defun testcover-testcase-make-alist (expr entries)
   `((0 . ,expr%%%) . ,entries%%%)%%%)