On Wed, Dec 1, 2010 at 9:38 AM, Laurent PETIT <laurent.pe...@gmail.com> wrote:
> 2010/12/1 Ken Wesson <kwess...@gmail.com>
>>
>> On Wed, Dec 1, 2010 at 8:29 AM, Laurent PETIT <laurent.pe...@gmail.com>
>> wrote:
>> > If so, then it may be sufficient to leverage the possibility, in your
>> > testing "framework" (clojure.test ? anything else ...) to redefine the
>> > functions of the backend before the tests run. I'm pretty sure there are
>> > already such features allowing to temporarily "redef" (and "restore" at
>> > the
>> > end) the root value of global vars.
>>
>> (binding [*global-var* temp-value]
>>  (run-some-tests))
>>
>> :)
>>
>>
>
> I didn't forget it. But :
>   * in Clojure 1.2 : these binding do not automatically flow from thread to
> thread, so they do not work "in the general case" (though arguably this
> general case may not be the usual case)
>   * in Clojure 1.3 : the bindings will now flow from thread to thread when
> using clojure primitives (agents, futures, pmap, etc.), *but* the default
> for vars will change from dynamic rebindable to not dynamic rebindable
> (dynamic rebindability will have to be explicit)
>
> :)

If you need it in multiple threads, you're just gonna have to go with
the slightly evil

(let [x *foo*]
  (alter-var-root #'*foo* (constantly testing-value))
  (do-some-tests)
  (alter-var-root #'*foo* (constantly x)))

-- 
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