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 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
;;; cider-stacktrace-tests.el
;; Copyright © 2012-2019 Tim King, Bozhidar Batsov
;; Author: Tim King <kingtim@gmail.com>
;; Bozhidar Batsov <bozhidar@batsov.com>
;; Artur Malabarba <bruce.connor.am@gmail.com>
;; This file is NOT part of GNU Emacs.
;; This program is free software: you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation, either version 3 of the
;; License, or (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see `http://www.gnu.org/licenses/'.
;;; Commentary:
;; This file is part of CIDER
;;; Code:
(require 'buttercup)
(require 'cider-stacktrace)
;;; cider-stacktrace tests
;;; Internal/Middleware error suppression
(describe "cider-stacktrace-some-suppressed-errors-p"
:var (cider-stacktrace-suppressed-errors)
(describe "when no errors are suppressed"
(it "returns nil"
(setq cider-stacktrace-suppressed-errors '())
(expect (cider-stacktrace-some-suppressed-errors-p '("a"))
:to-equal nil)
(expect (cider-stacktrace-some-suppressed-errors-p '())
:to-equal nil)))
(describe "when some errors are suppressed"
(it "returns a list of suppressed errors and all errors associated with them"
(setq cider-stacktrace-suppressed-errors '("a" "b" "c" "d"))
(expect (cider-stacktrace-some-suppressed-errors-p '("a"))
:to-equal '("a"))
(expect (cider-stacktrace-some-suppressed-errors-p '("a" "c" "e"))
:to-equal '("a" "c")))))
(describe "cider-stacktrace-suppressed-error-p"
:var (cider-stacktrace-suppressed-errors)
(it "returns true when a error is suppressed"
(setq cider-stacktrace-suppressed-errors '("a" "b" "g" "j"))
(expect (cider-stacktrace-suppressed-error-p "a") :to-be-truthy)
(expect (cider-stacktrace-suppressed-error-p "b") :to-be-truthy)
(expect (cider-stacktrace-suppressed-error-p "g") :to-be-truthy)
(expect (cider-stacktrace-suppressed-error-p "j") :to-be-truthy)
(expect (cider-stacktrace-suppressed-error-p "c") :not :to-be-truthy)))
(describe "cider-stacktrace-suppress-error"
:var (cider-stacktrace-suppressed-errors)
(it "adds the error to the suppressed errors list"
(setq cider-stacktrace-suppressed-errors '("a" "b" "c"))
(expect (cl-set-exclusive-or '("a" "b" "z" "c")
(cider-stacktrace-suppress-error "z")
:test 'equal)
:not :to-be-truthy)))
(describe "cider-stacktrace-promote-error"
:var (cider-stacktrace-suppressed-errors)
(it "removes the error from the suppressed errors list"
(setq cider-stacktrace-suppressed-errors '("a" "b" "x" "c"))
(expect (cl-set-exclusive-or '("a" "b" "c")
(cider-stacktrace-promote-error "x")
:test 'equal)
:not :to-be-truthy)))
(defun cider--testing-dict (names &optional stipulated)
(let ((numeric? (lambda (sym) (member sym '(line column)))))
(apply #'nrepl-dict
(append (apply #'append
(mapcar (lambda (name) (list (symbol-name name)
(if (funcall numeric? name)
4
(symbol-name name))))
names))
stipulated))))
(defun cider--frame-of-type (flags)
(cider--testing-dict '(file class method name var ns fn line column path)
(list "flags" (mapcar #'symbol-name flags))))
(describe "cider-stacktrace-frame-p-tests"
(it "returns true on frames"
(with-temp-buffer
;; a stackframe
(cider-stacktrace-render-frame (current-buffer)
(cider--frame-of-type '(clj)))
(goto-char (point-min))
(expect (cider-stacktrace-frame-p) :to-be-truthy)))
(it "returns false otherwise"
(with-temp-buffer
;; not a stackframe but a compile error
(cider-stacktrace-render-compile-error (current-buffer)
(cider--testing-dict '(file path column line)))
(goto-char (point-min))
(expect (cider-stacktrace-frame-p) :to-be nil))))
(describe "cider-stacktrace--should-hide-p-tests"
(it "should hide when members of the neg filters"
(let ((hidden1 (cider-stacktrace--should-hide-p '(a b c) '() '(a)))
(hidden2 (cider-stacktrace--should-hide-p '(a) '(b) '(a)))
(both (cider-stacktrace--should-hide-p '(a) '(a) '(a)))
(shown1 (cider-stacktrace--should-hide-p '(a) '(b) '(b)))
(shown2 (cider-stacktrace--should-hide-p '() '(a) '(a))))
(expect (and hidden1 hidden2)
:to-be-truthy)
(expect (or both shown1 shown2)
:to-be nil))))
|