blob: c3e6f48a606ae6f5e074a03fa2e3f4ee15bb670e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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.main
(:use clojure.contrib.test-is
clojure.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"]
(with-bindings
(is (= "compile path test" *compile-path*)))))
|