branch: elpa/buttercup commit 9b30c755e43df7045c36e596ce31e0af597b594e Author: Ola Nilsson <ola.nils...@gmail.com> Commit: Ola Nilsson <ola.nils...@gmail.com>
Make buttercup-x?it and buttercup-suite-add-child return spec Returning the buttercup-spec object from these function makes it possible to write simpler code elsewhere, especially tests. --- buttercup.el | 22 +++++++++++++--------- tests/test-buttercup.el | 19 +++++++++++-------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/buttercup.el b/buttercup.el index e28cb01..14c8b35 100644 --- a/buttercup.el +++ b/buttercup.el @@ -691,11 +691,13 @@ See also `buttercup-define-matcher'." function) (defun buttercup-suite-add-child (parent child) - "Add a CHILD suite to a PARENT suite." + "Add a CHILD suite to a PARENT suite. +Return CHILD." (setf (buttercup-suite-children parent) (append (buttercup-suite-children parent) (list child))) - (setf (buttercup-suite-or-spec-parent child) parent)) + (setf (buttercup-suite-or-spec-parent child) parent) + child) (defun buttercup-suite-or-spec-parents (suite-or-spec) "Return a list of parents of SUITE-OR-SPEC." @@ -868,7 +870,8 @@ most probably including one or more calls to `expect'." "Function to handle an `it' form. DESCRIPTION has the same meaning as in `it'. BODY-FUNCTION is a -function containing the body instructions passed to `it'." +function containing the body instructions passed to `it'. Return +the created spec object." (declare (indent 1)) (when (not buttercup--current-suite) (error "`it' has to be called from within a `describe' form")) @@ -1006,17 +1009,18 @@ DESCRIPTION is a string. BODY is ignored." "Like `buttercup-it', but mark the spec as disabled. A disabled spec is not run. -DESCRIPTION has the same meaning as in `xit'. FUNCTION is ignored." +DESCRIPTION has the same meaning as in `xit'. FUNCTION is +ignored. Return the created spec object." (declare (indent 1)) (ignore function) - (buttercup-it description (lambda () - (signal 'buttercup-pending "PENDING"))) - (let ((spec (car (last (buttercup-suite-children - buttercup--current-suite))))) + (let ((spec (buttercup-it description + (lambda () + (signal 'buttercup-pending "PENDING"))))) (setf (buttercup-spec-status spec) 'pending (buttercup-spec-failure-description spec) - ""))) + "") + spec)) ;;;;;;;;; ;;; Spies diff --git a/tests/test-buttercup.el b/tests/test-buttercup.el index a73f2ee..aa3cd95 100644 --- a/tests/test-buttercup.el +++ b/tests/test-buttercup.el @@ -179,24 +179,26 @@ ;;; Suite and spec data structures (describe "The `buttercup-suite-add-child' function" - (it "should add an element at the end of the list" + (it "should add an element at the end of the list and return it" (let* ((specs (list (make-buttercup-spec) (make-buttercup-spec) (make-buttercup-spec))) (suite (make-buttercup-suite :children specs)) (spec (make-buttercup-spec))) - (buttercup-suite-add-child suite spec) + (expect (buttercup-suite-add-child suite spec) + :to-be spec) (expect (buttercup-suite-children suite) :to-equal (append specs (list spec))))) - (it "should add an element even if the list is empty" + (it "should add an element even if the list is empty and return it" (let ((suite (make-buttercup-suite :children nil)) (spec (make-buttercup-spec))) - (buttercup-suite-add-child suite spec) + (expect (buttercup-suite-add-child suite spec) + :to-be spec) (expect (buttercup-suite-children suite) :to-equal @@ -444,11 +446,12 @@ (buttercup-it "" (lambda ()))) :to-throw)) - (it "should add a spec to the current suite" + (it "should add a spec to the current suite and return the spec" (let ((buttercup--current-suite (make-buttercup-suite))) - (buttercup-it "the test spec" - (lambda () 23)) - (let ((spec (car (buttercup-suite-children buttercup--current-suite)))) + (let* ((created (buttercup-it "the test spec" + (lambda () 23))) + (spec (car (buttercup-suite-children buttercup--current-suite)))) + (expect created :to-be spec) (expect (buttercup-spec-description spec) :to-equal "the test spec")