I think I misunderstand the issue, because this works for me:

(ns midje.util.git
  (:use [midje.sweet]))

;; Code except for undo-patch is the same as before.
;; ...

;; I pulled remove-patch out of undo-patch because I was
;; getting a screwy read error I didn't want to figure out 
;; at 5 in the morning, but I'd probably do that anyway:
;; http://codebetter.com/jeremymiller/2006/12/03/composed-method-pattern/

(defn remove-patch [patch]
  (alter patches- #(remove (fn [p] (= patch p)) %)))

(defn undo-patch [patch]
 (let [fn (undo-fn patch)]
   (dosync
     (fn)
     (remove-patch patch))))

(fact "The patch's undo-fn is called for its side effect and the patch is 
forgotten"
  (let [visible-evidence-of-a-side-effect (atom nil)]
    (undo-patch ...patch...) => anything
    (provided
      (undo-fn ...patch...) => (fn [] (reset! visible-evidence-of-a-side-effect 
:happened!))
      (remove-patch ...patch...) => :nothing-of-interest)
    @visible-evidence-of-a-side-effect => :happened!))
            
1855 $ lein midje midje.util.git
All claimed facts (2) have been confirmed. 
1856 $ 


-----
Brian Marick, Artisanal Labrador
Contract programming in Ruby and Clojure
Author of /Ring/ (forthcoming; sample: http://bit.ly/hfdf9T)
www.exampler.com, www.exampler.com/blog, www.twitter.com/marick

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to