File: bug-hunter-test.el

package info (click to toggle)
elisp-bug-hunter 1.3.1%2Brepack-10
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 116 kB
  • sloc: lisp: 537; makefile: 4
file content (97 lines) | stat: -rw-r--r-- 3,268 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
(unless (bound-and-true-p package--initialized)
  (setq
   package-user-dir (expand-file-name
                     (format ".cask/%s/elpa" emacs-version)
                     (file-name-directory load-file-name)))

  (package-initialize))

(require 'ert)
(require 'cl)
(require 'bug-hunter)
;; (fset 'bug-hunter--report #'ignore)
;; (fset 'bug-hunter--report-end #'ignore)

(ert-deftest bug-hunter-test ()
  (should
   (equal [(void-variable not-defined) 5 2 not-defined]
          (bug-hunter-hunt
           '(((setq test 1) 3 0)
             ((setq test 2) 4 1)
             (not-defined 5 2))
           nil)))
  (should
   (equal [(assertion-triggered t) 2 11 (setq test2 2)]
          (bug-hunter-hunt
           '(((setq test0 0) 0 9)
             ((setq test1 1) 1 10)
             ((setq test2 2) 2 11))
           '(ignore-errors (> test2 test1))))))

(ert-deftest bug-hunter-test-nobug ()
  (should-error (bug-hunter-hunt
                 '(((setq test 1) 0 1)
                   ((setq test 2) 0 1))
                 nil)))

(ert-deftest bug-hunter-test-volcano ()
  (should-error
   (bug-hunter-hunt nil 'not-defined)))

(ert-deftest bug-hunter-test-interactive ()
  (cl-letf (((symbol-function #'y-or-n-p) #'ignore)
            ((symbol-function #'read-char-choice) #'ignore))
    (should-error (bug-hunter-hunt
                   '(((kill-emacs) 0 1))
                   'interactive))))

(ert-deftest bug-hunter-looong-hunt ()
  (let* ((size 30)
         (forms (make-list size '((setq dummy 1) 12 90))))
    (dotimes (n size)
      (setcar (elt forms (- size n 1)) 'not-defined)
      (should
       (equal [(void-variable not-defined) 12 90 not-defined]
              (bug-hunter-hunt forms nil)))))
  (let* ((size 8)
         (forms (make-list size '(setq dummy 1))))
    (dotimes (n size)
      (let ((pos (- size n 1)))
        (setf (elt forms pos) 'not-defined)
        (should
         (equal (vector pos '(bug-caught void-variable not-defined))
                (bug-hunter--bisect-start forms nil)))))))

(ert-deftest bug-hunter-reader-error-test ()
  (let ((file (expand-file-name "bug-hunter-test-dummy-file"
                                default-directory)))
    (with-temp-file file
      (insert "(setq useless 1)\n#\n(setq useless 1)\n"))
    (if (< emacs-major-version 30)
        (progn
          (should
           (equal (bug-hunter-file file nil)
                  [(invalid-read-syntax "#" 3 0) 2 0]))
          (should
           (equal '(bug-caught (invalid-read-syntax "#" 3 0) 2 0)
                  (bug-hunter--read-contents file))))
      (should
       (equal (bug-hunter-file file nil)
              [(invalid-read-syntax "#\n" 3 0) 2 0]))
      (should
       (equal '(bug-caught (invalid-read-syntax "#\n" 3 0) 2 0)
              (bug-hunter--read-contents file))))
    (with-temp-file file
      (insert "(setq useless 1)\n)\n(setq useless 1)\n"))
    (should
     (equal '(bug-caught (invalid-read-syntax ")" 2 1) 2 0)
            (bug-hunter--read-contents file)))
    (with-temp-file file
      (insert "(setq useless 1)\n(\n(setq useless 1)\n"))
    (should
     (equal '(bug-caught (end-of-file) 2 0)
            (bug-hunter--read-contents file)))))


(provide 'bug-hunter-test)
;;; bug-hunter-test.el ends here