diff options
author | Frantisek Sodomka <fsodomka@gmail.com> | 2009-03-22 16:20:25 +0000 |
---|---|---|
committer | Frantisek Sodomka <fsodomka@gmail.com> | 2009-03-22 16:20:25 +0000 |
commit | 32a2ecfc35b4e2f12df0e8a5a102234e9d61ff17 (patch) | |
tree | 74b8f6bd2809bea98e7a242a561190644a83846a /src/clojure/contrib/test_clojure/clojure_main.clj | |
parent | 2169c8ee00ff84e3f7fb613e73c7f424e616244a (diff) |
test-clojure: renamed main to clojure-main
Diffstat (limited to 'src/clojure/contrib/test_clojure/clojure_main.clj')
-rw-r--r-- | src/clojure/contrib/test_clojure/clojure_main.clj | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/clojure/contrib/test_clojure/clojure_main.clj b/src/clojure/contrib/test_clojure/clojure_main.clj new file mode 100644 index 00000000..80629a3d --- /dev/null +++ b/src/clojure/contrib/test_clojure/clojure_main.clj @@ -0,0 +1,40 @@ +;; Copyright (c) Shawn Hoover. All rights reserved. The use and +;; distribution terms for this software are covered by the Eclipse Public +;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can +;; be found in the file epl-v10.html at the root of this distribution. By +;; using this software in any fashion, you are agreeing to be bound by the +;; terms of this license. You must not remove this notice, or any other, +;; from this software. + +(ns clojure.contrib.test-clojure.clojure-main + (:use clojure.contrib.test-is) + (:require [clojure.main :as main])) + +(defn- set-properties + [settings] + (doseq [[name val] settings] + (if val + (System/setProperty name val) + (System/clearProperty name)))) + +(defmacro with-properties + "setting => property-name value + + Sets the system properties to the supplied values, executes the body, and + sets the properties back to their original values. Values of nil are + translated to a clearing of the property." + [settings & body] + `(let [settings# ~(apply hash-map settings) + current# (map (fn [p#] [p# (System/getProperty p#)]) + (keys settings#))] + (set-properties settings#) + (try + ~@body + (finally + (set-properties current#))))) + +(deftest compile-path-respects-java-property + ;; Bug fixed in r1177; previously was hardwired to the compile-time path. + (with-properties ["clojure.compile.path" "compile path test"] + (main/with-bindings + (is (= "compile path test" *compile-path*))))) |