branch: elpa/buttercup
commit 0c5cc3251442d69b1d7edcb443120ad09451e698
Author: Jorgen Schaefer <[email protected]>
Commit: Jorgen Schaefer <[email protected]>
The buttercup-suites-total-specs-defined function.
---
buttercup-test.el | 21 +++++++++++++++++++--
buttercup.el | 22 ++++++++++++++++++++--
2 files changed, 39 insertions(+), 4 deletions(-)
diff --git a/buttercup-test.el b/buttercup-test.el
index 22b750c..d27bdf2 100644
--- a/buttercup-test.el
+++ b/buttercup-test.el
@@ -133,8 +133,8 @@
;; Are tested in README.md
-;;;;;;;;;;;;;;;;;;;;
-;;; Suites: describe
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Suite and spec data structures
(describe "The `buttercup-suite-add-child' function"
(it "should add an element at the end of the list"
@@ -194,6 +194,23 @@
:to-equal
(list parent grandparent)))))
+(describe "The `buttercup-suites-total-specs-defined' function"
+ (it "should return the number of specs in a list of suites"
+ (let ((su1 (make-buttercup-suite :description "su1"))
+ (su2 (make-buttercup-suite :description "su2"))
+ (sp1 (make-buttercup-spec :description "sp1"))
+ (sp2 (make-buttercup-spec :description "sp2")))
+ (buttercup-suite-add-child su1 su2)
+ (buttercup-suite-add-child su1 sp1)
+ (buttercup-suite-add-child su2 sp2)
+
+ (expect (buttercup-suites-total-specs-defined (list su1))
+ :to-equal
+ 2))))
+
+;;;;;;;;;;;;;;;;;;;;
+;;; Suites: describe
+
(describe "The `describe' macro"
(it "should expand to a simple call to the describe function"
(expect (macroexpand '(describe "description" (+ 1 1)))
diff --git a/buttercup.el b/buttercup.el
index 2791e6b..a81ea6d 100644
--- a/buttercup.el
+++ b/buttercup.el
@@ -211,8 +211,8 @@ MATCHER is either a matcher defined with
(t
(cons t (format "Expected %S not to throw an error" function)))))))
-;;;;;;;;;;;;;;;;;;;;
-;;; Suites: describe
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Suite and spec data structures
(cl-defstruct buttercup-suite
description
@@ -255,6 +255,24 @@ MATCHER is either a matcher defined with
(buttercup-suite-parents (buttercup-spec-parent spec)))
nil))
+(defun buttercup-suites-total-specs-defined (suite-list)
+ "Return the number of specs defined in all suites in SUITE-LIST."
+ (let ((nspecs 0))
+ (dolist (suite suite-list)
+ (setq nspecs (+ nspecs
+ (buttercup--total-specs-defined suite))))
+ nspecs))
+
+(defun buttercup--total-specs-defined (suite-or-spec)
+ "Return the number of specs defined in SUITE-OR-SPEC and its children."
+ (if (buttercup-spec-p suite-or-spec)
+ 1
+ (apply #'+ (mapcar #'buttercup--total-specs-defined
+ (buttercup-suite-children suite-or-spec)))))
+
+;;;;;;;;;;;;;;;;;;;;
+;;; Suites: describe
+
(defvar buttercup-suites nil
"The list of all currently defined Buttercup suites.")