Don't call setProperty on read-only properties.

This is to avoid verbose logging. Runtimes that rely on
those properties being set need to use an older version
of vogar.

bug:19114742

Change-Id: Ic252010a2d9b78332e865ea6524cc1ad43e488a5
diff --git a/src/vogar/target/TestEnvironment.java b/src/vogar/target/TestEnvironment.java
index c5ad9d3..ebfd7d3 100644
--- a/src/vogar/target/TestEnvironment.java
+++ b/src/vogar/target/TestEnvironment.java
@@ -76,7 +76,7 @@
 
         // From "L" release onwards, calling System.setProperties(null) clears the java.io.tmpdir,
         // so we set it again. No-op on earlier releases.
-        System.setProperty("java.io.tmpdir", tmpDir);
+        setPropertyIfNull("java.io.tmpdir", tmpDir);
 
         String userHome = System.getProperty("user.home");
         String userDir = System.getProperty("user.dir");
@@ -97,29 +97,30 @@
 
         // From "L" release onwards, calling System.setProperties(null) clears the java.io.tmpdir,
         // so we set it again. No-op on earlier releases.
-        System.setProperty("java.io.tmpdir", tmpDir);
-
-        if (JAVA_RUNTIME_VERSION != null) {
-            System.setProperty("java.runtime.version", JAVA_RUNTIME_VERSION);
-        }
-        if (JAVA_VM_INFO != null) {
-            System.setProperty("java.vm.info", JAVA_VM_INFO);
-        }
-        if (JAVA_VM_VERSION != null) {
-            System.setProperty("java.vm.version", JAVA_VM_VERSION);
-        }
-        if (JAVA_VM_VENDOR != null) {
-            System.setProperty("java.vm.vendor", JAVA_VM_VENDOR);
-        }
-        if (JAVA_VM_NAME != null) {
-            System.setProperty("java.vm.name", JAVA_VM_NAME);
-        }
+        setPropertyIfNull("java.io.tmpdir", tmpDir);
 
         // Require writable java.home and user.dir directories for preferences
         if ("Dalvik".equals(System.getProperty("java.vm.name"))) {
             String javaHome = tmpDir + "/java.home";
             IoUtils.safeMkdirs(new File(javaHome));
-            System.setProperty("java.home", javaHome);
+            setPropertyIfNull("java.home", javaHome);
+        } else {
+            // The mode --jvm has these properties writable.
+            if (JAVA_RUNTIME_VERSION != null) {
+                System.setProperty("java.runtime.version", JAVA_RUNTIME_VERSION);
+            }
+            if (JAVA_VM_INFO != null) {
+                System.setProperty("java.vm.info", JAVA_VM_INFO);
+            }
+            if (JAVA_VM_VERSION != null) {
+                System.setProperty("java.vm.version", JAVA_VM_VERSION);
+            }
+            if (JAVA_VM_VENDOR != null) {
+                System.setProperty("java.vm.vendor", JAVA_VM_VENDOR);
+            }
+            if (JAVA_VM_NAME != null) {
+                System.setProperty("java.vm.name", JAVA_VM_NAME);
+            }
         }
         String userHome = System.getProperty("user.home");
         if (userHome.length() == 0) {
@@ -239,4 +240,10 @@
             throw e2;
         }
     }
+
+    private static void setPropertyIfNull(String property, String value) {
+        if (System.getProperty(property) == null) {
+           System.setProperty(property, value);
+        }
+    }
 }