aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/clojure/contrib/java_utils.clj12
-rw-r--r--src/clojure/contrib/test_contrib/test_java_utils.clj8
2 files changed, 14 insertions, 6 deletions
diff --git a/src/clojure/contrib/java_utils.clj b/src/clojure/contrib/java_utils.clj
index c5e120bb..0ac39ece 100644
--- a/src/clojure/contrib/java_utils.clj
+++ b/src/clojure/contrib/java_utils.clj
@@ -72,15 +72,19 @@
(name x)
(str x)))
-(defn get-system-property [stringable]
- (System/getProperty (as-str stringable)))
+(defn get-system-property
+ "Get a system property."
+ ([stringable]
+ (System/getProperty (as-str stringable)))
+ ([stringable default]
+ (System/getProperty (as-str stringable) default)))
(defn set-system-properties
- [settings]
"Set some system properties. Nil clears a property."
+ [settings]
(doseq [[name val] settings]
(if val
- (System/setProperty (as-str name) val)
+ (System/setProperty (as-str name) (as-str val))
(System/clearProperty (as-str name)))))
(defmacro with-system-properties
diff --git a/src/clojure/contrib/test_contrib/test_java_utils.clj b/src/clojure/contrib/test_contrib/test_java_utils.clj
index 1a3e6ba5..409f07b2 100644
--- a/src/clojure/contrib/test_contrib/test_java_utils.clj
+++ b/src/clojure/contrib/test_contrib/test_java_utils.clj
@@ -49,13 +49,17 @@
(testing "works the same with keywords, symbols, and strings"
(is (= (get-system-property "java.home") (get-system-property 'java.home)))
(is (= (get-system-property "java.home") (get-system-property :java.home))))
+ (testing "treats second arg as default"
+ (is (= "default" (get-system-property "testing.test-system-property" "default"))))
+ (testing "returns nil for missing properties"
+ (is (nil? (get-system-property "testing.test-system-property"))))
)
(deftest test-set-system-properties
- (testing "set and then unset a property"
+ (testing "set and then unset a property using keywords"
(let [propname :clojure.contrib.java-utils.test-set-system-properties]
(is (nil? (get-system-property propname)))
- (set-system-properties {propname "foo"})
+ (set-system-properties {propname :foo})
(is (= "foo") (get-system-property propname))
(set-system-properties {propname nil})
(is (nil? (get-system-property propname)))))