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

[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



reply via email to

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