aboutsummaryrefslogtreecommitdiff
path: root/android/guava-tests/test/com/google/common/io/FilesCreateTempDirTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'android/guava-tests/test/com/google/common/io/FilesCreateTempDirTest.java')
-rw-r--r--android/guava-tests/test/com/google/common/io/FilesCreateTempDirTest.java43
1 files changed, 43 insertions, 0 deletions
diff --git a/android/guava-tests/test/com/google/common/io/FilesCreateTempDirTest.java b/android/guava-tests/test/com/google/common/io/FilesCreateTempDirTest.java
index a31c43770..381eef258 100644
--- a/android/guava-tests/test/com/google/common/io/FilesCreateTempDirTest.java
+++ b/android/guava-tests/test/com/google/common/io/FilesCreateTempDirTest.java
@@ -17,6 +17,7 @@
package com.google.common.io;
import static com.google.common.base.StandardSystemProperty.JAVA_IO_TMPDIR;
+import static com.google.common.base.StandardSystemProperty.JAVA_SPECIFICATION_VERSION;
import static com.google.common.base.StandardSystemProperty.OS_NAME;
import static com.google.common.truth.Truth.assertThat;
import static java.nio.file.attribute.PosixFilePermission.OWNER_EXECUTE;
@@ -64,6 +65,44 @@ public class FilesCreateTempDirTest extends TestCase {
}
}
+ public void testBogusSystemPropertiesUsername() {
+ if (isAndroid()) {
+ /*
+ * The test calls directly into the "ACL-based filesystem" code, which isn't available under
+ * old versions of Android. Since Android doesn't use that code path, anyway, there's no need
+ * to test it.
+ */
+ return;
+ }
+
+ /*
+ * Only under Windows (or hypothetically when running with some other non-POSIX, ACL-based
+ * filesystem) does our prod code look up the username. Thus, this test doesn't necessarily test
+ * anything interesting under most environments. Still, we can run it (except for Android, at
+ * least old versions), so we mostly do. This is useful because we don't actually run our CI on
+ * Windows under Java 8, at least as of this writing.
+ *
+ * Under Windows in particular, we want to test that:
+ *
+ * - Under Java 9+, createTempDir() succeeds because it can look up the *real* username, rather
+ * than relying on the one from the system property.
+ *
+ * - Under Java 8, createTempDir() fails because it falls back to the bogus username from the
+ * system property.
+ */
+
+ String save = System.getProperty("user.name");
+ System.setProperty("user.name", "-this-is-definitely-not-the-username-we-are-running-as//?");
+ try {
+ TempFileCreator.testMakingUserPermissionsFromScratch();
+ assertThat(isJava8()).isFalse();
+ } catch (IOException expectedIfJava8) {
+ assertThat(isJava8()).isTrue();
+ } finally {
+ System.setProperty("user.name", save);
+ }
+ }
+
private static boolean isAndroid() {
return System.getProperty("java.runtime.name", "").contains("Android");
}
@@ -71,4 +110,8 @@ public class FilesCreateTempDirTest extends TestCase {
private static boolean isWindows() {
return OS_NAME.value().startsWith("Windows");
}
+
+ private static boolean isJava8() {
+ return JAVA_SPECIFICATION_VERSION.value().equals("1.8");
+ }
}