diff --git a/ansi-tests/cerror.lsp b/ansi-tests/cerror.lsp index b153bf024ed7f8f30df8d66e0b618ab9dc5e1559..16ac6c92a2087bfd1b3aac5e76bc0cc7698cd8f1 100644 --- a/ansi-tests/cerror.lsp +++ b/ansi-tests/cerror.lsp @@ -19,6 +19,13 @@ (simple-error (c) (frob-simple-error c fmt)))) t) +(deftest cerror.2a + (let* ((fmt (formatter "Cerror")) + (cnd (make-condition 'simple-error :format-control fmt))) + (handler-case (cerror "Continue on." cnd) + (simple-error (c) (frob-simple-error c fmt)))) + t) + (deftest cerror.3 (let ((fmt "Cerror")) (handler-case (cerror "Continue" 'simple-error :format-control fmt) @@ -31,6 +38,12 @@ (simple-error (c) (frob-simple-error c fmt 10)))) t) +(deftest cerror.4a + (let ((fmt (formatter "Cerror: ~A"))) + (handler-case (cerror "On on" fmt 10) + (simple-error (c) (frob-simple-error c fmt 10)))) + t) + (deftest cerror.5 (let ((fmt (formatter "Cerror"))) (handler-case (cerror "Keep going." fmt) @@ -46,6 +59,7 @@ 10)) 10) +;;; Program error cases (deftest cerror.error.1 (signals-error (cerror) program-error) diff --git a/ansi-tests/error.lsp b/ansi-tests/error.lsp index 1bd9c7ddc475bbc5698fd03ab4bbcff7b542dd22..dd3e357e8fd6dd89128200c6ae56e26a0783a5d7 100644 --- a/ansi-tests/error.lsp +++ b/ansi-tests/error.lsp @@ -44,16 +44,16 @@ (deftest error.6 (handler-case (error 'simple-condition) - (error (c) :wrong) - (simple-condition (c) :right)) + (error (c) (declare (ignore c)) :wrong) + (simple-condition (c) (declare (ignore c)) :right)) :right) (deftest error.7 (handler-case (error 'simple-warning) - (error (c) :wrong) - (simple-warning (c) :right) - (condition (c) :wrong2)) + (error (c) (declare (ignore c)) :wrong) + (simple-warning (c) (declare (ignore c)) :right) + (condition (c) (declare (ignore c)) :wrong2)) :right) (deftest error.8 @@ -63,4 +63,33 @@ (simple-warning (c) (frob-simple-warning c fmt)))) t) +(deftest error.9 + (let ((fmt (formatter "Boo!"))) + (handler-case + (error 'simple-warning :format-control fmt) + (simple-warning (c) (frob-simple-warning c fmt)))) + t) + +(deftest error.10 + (let ((fmt (formatter "Error"))) + (handler-case + (error 'simple-error :format-control fmt) + (simple-error (c) (frob-simple-error c fmt)))) + t) + +(deftest error.11 + (let ((fmt (formatter "Error"))) + (handler-case + (error fmt) + (simple-error (c) (frob-simple-error c fmt)))) + t) + +(deftest error.12 + (let* ((fmt (formatter "Error")) + (cnd (make-condition 'simple-error :format-control fmt))) + (handler-case + (error cnd) + (simple-error (c) (frob-simple-error c fmt)))) + t) + ;;; Tests for other conditions will in their own files. diff --git a/ansi-tests/warn.lsp b/ansi-tests/warn.lsp index 127fd9a95c59fbcb81728e9159d073ad6f246a95..a1fd68427cc78a488ceaf75be200cca140f78493 100644 --- a/ansi-tests/warn.lsp +++ b/ansi-tests/warn.lsp @@ -159,3 +159,17 @@ (deftest warn.18 (signals-error (warn (make-condition 'simple-error)) type-error) t) + +(deftest warn.19 + (let ((warned nil)) + (handler-bind + ((warning #'(lambda (c) + (assert (typep c 'simple-warning)) + (setf warned t) + (muffle-warning c)))) + (values + (multiple-value-list + (warn (make-condition 'simple-warning + :format-control (formatter "Foo!")))) + warned))) + (nil) t) \ No newline at end of file