[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/buttercup 1db9e0c840 2/3: Define buttercup-enclosed-expres
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/buttercup 1db9e0c840 2/3: Define buttercup-enclosed-expression-error and use it |
Date: |
Sun, 4 Dec 2022 17:58:22 -0500 (EST) |
branch: elpa/buttercup
commit 1db9e0c840ff5f3215632c5e1d2f896ece6e89cd
Author: Ola Nilsson <ola.nilsson@gmail.com>
Commit: Ola Nilsson <ola.nilsson@gmail.com>
Define buttercup-enclosed-expression-error and use it
GNU Emacs 29 and later changed the outward appearance of closures,
which meant the error checking for the buttercup--enclosed-expr tests
no longer matched.
Instead of matching the error strings, define a new error type
signalled only from that function and check for that in the tests.
---
buttercup.el | 11 ++++++++++-
tests/test-buttercup.el | 28 ++++++++--------------------
2 files changed, 18 insertions(+), 21 deletions(-)
diff --git a/buttercup.el b/buttercup.el
index 3aad9bbe31..33930c490a 100644
--- a/buttercup.el
+++ b/buttercup.el
@@ -50,10 +50,19 @@
;; A base error for all errors raised by buttercup.
(define-error 'buttercup-error-base "error")
+;; Buttercup internals error, raised on internal implementation
+;; inconsistencies.
+(define-error 'buttercup-internals-error "Internal buttercup error"
+ 'buttercup-error-base)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; wrapper function manipulation
+;; Error for buttercup--enclosed-expr
+(define-error 'buttercup-enclosed-expression-error
+ "Bad test expression"
+ 'buttercup-internals-error)
+
(defun buttercup--enclosed-expr (fun)
"Given a zero-arg function FUN, return its unevaluated expression.
@@ -93,7 +102,7 @@ ensures access to the un-expanded form."
((and (pred byte-code-function-p) (guard (member (aref fun 0) '(nil 0))))
(aref fun 1))
;; Error
- (_ (error "Not a zero-arg one-expression closure: %S" fun))))
+ (_ (signal 'buttercup-enclosed-expression-error (format "Not a zero-arg
one-expression closure: %S" fun)))))
(defun buttercup--expr-and-value (fun)
"Given a function, return its quoted expression and value.
diff --git a/tests/test-buttercup.el b/tests/test-buttercup.el
index 4d3a177a37..09fe71b788 100644
--- a/tests/test-buttercup.el
+++ b/tests/test-buttercup.el
@@ -168,29 +168,19 @@ text properties using `ansi-color-apply'."
(it "on a simple closure"
(expect
(buttercup--enclosed-expr (let ((_foo 1)) (lambda () (ignore))))
- :to-throw
- 'error '("Not a zero-arg one-expression closure: (closure ((_foo . 1)
t) nil (ignore))")))
+ :to-throw 'buttercup-enclosed-expression-error))
(it "on a closure with stackframe marker but no quoted expression"
(expect
(buttercup--enclosed-expr (let ((_foo 1)) (lambda ()
(buttercup--mark-stackframe) (ignore))))
- :to-throw
- 'error '("Not a zero-arg one-expression closure: (closure ((_foo . 1)
t) nil (buttercup--mark-stackframe) (ignore))")))
+ :to-throw 'buttercup-enclosed-expression-error))
(it "for multi-statement closures"
(expect (buttercup--enclosed-expr
(lambda () '(+ 1 2) (buttercup--mark-stackframe) (+ 1 2)
(ignore)))
- :to-throw
- 'error
- ;; The formatting differs in different versions of Emacs
- (list (format "Not a zero-arg one-expression closure: %S"
- '(closure (t) nil '(+ 1 2)
(buttercup--mark-stackframe) (+ 1 2) (ignore))))))
+ :to-throw 'buttercup-enclosed-expression-error))
(it "for closures with non-empty argument lists"
(expect (buttercup--enclosed-expr
(lambda (foo) '(ignore foo) (buttercup--mark-stackframe)
(ignore foo)))
- :to-throw
- 'error
- ;; The formatting differs in different versions of Emacs
- (list (format "Not a zero-arg one-expression closure: %S"
- '(closure (t) (foo) '(ignore foo)
(buttercup--mark-stackframe) (ignore foo))))))
+ :to-throw 'buttercup-enclosed-expression-error))
(it "on simple lambda objects"
(expect (buttercup--enclosed-expr
'(lambda () (ignore)))
@@ -198,21 +188,19 @@ text properties using `ansi-color-apply'."
(it "on a lambda with stackframe marker but no quoted expression"
(expect (buttercup--enclosed-expr
'(lambda () (buttercup--mark-stackframe) (ignore)))
- :to-throw))
+ :to-throw 'buttercup-enclosed-expression-error))
(it "for multi-statement lambdas"
(expect (buttercup--enclosed-expr
'(lambda () (+ 1 2) (ignore)))
- :to-throw
- 'error '("Not a zero-arg one-expression closure: (lambda nil (+
1 2) (ignore))")))
+ :to-throw 'buttercup-enclosed-expression-error))
(it "for lambdas with non-empty argument lists"
(expect (buttercup--enclosed-expr
'(lambda (foo) (ignore foo)))
- :to-throw
- 'error '("Not a zero-arg one-expression closure: (lambda (foo)
(ignore foo))")))
+ :to-throw 'buttercup-enclosed-expression-error))
(it "on byte-compiled functions with arguments"
(expect (buttercup--enclosed-expr
(byte-compile-sexp '(lambda (_a) '(ignore)
(buttercup--mark-stackframe) (ignore))))
- :to-throw 'error))))
+ :to-throw 'buttercup-enclosed-expression-error))))
;;;;;;;;;;
;;; expect