Files API test
Bug: 222647019
Change-Id: Idf08716da666d3258456cf91ce8fe2ca77002d53
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/jdk11/FilesTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/jdk11/FilesTest.java
index 18646ba..7b78157 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/jdk11/FilesTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/jdk11/FilesTest.java
@@ -11,13 +11,19 @@
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.ToolHelper.DexVm.Version;
import com.android.tools.r8.desugar.desugaredlibrary.DesugaredLibraryTestBase;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.BooleanUtils;
import com.android.tools.r8.utils.StringUtils;
+import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.SeekableByteChannel;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.nio.file.attribute.PosixFileAttributeView;
+import java.nio.file.attribute.PosixFileAttributes;
+import java.nio.file.attribute.PosixFilePermission;
import java.util.List;
import org.junit.Assume;
import org.junit.Test;
@@ -33,7 +39,20 @@
"bytes written: 11",
"String written: Hello World",
"bytes read: 11",
- "String read: Hello World");
+ "String read: Hello World",
+ "null",
+ "true",
+ "unsupported");
+ private static final String EXPECTED_RESULT_26 =
+ StringUtils.lines(
+ "bytes written: 11",
+ "String written: Hello World",
+ "bytes read: 11",
+ "String read: Hello World",
+ "true",
+ "true",
+ "true");
+
private final TestParameters parameters;
private final boolean shrinkDesugaredLibrary;
@@ -49,6 +68,12 @@
.build());
}
+ private String getExpectedResult() {
+ return parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.O)
+ ? EXPECTED_RESULT_26
+ : EXPECTED_RESULT;
+ }
+
public FilesTest(boolean shrinkDesugaredLibrary, TestParameters parameters) {
this.shrinkDesugaredLibrary = shrinkDesugaredLibrary;
this.parameters = parameters;
@@ -76,7 +101,7 @@
.withArt6Plus64BitsLib()
.withArtFrameworks()
.run(parameters.getRuntime(), TestClass.class)
- .assertSuccessWithOutput(EXPECTED_RESULT);
+ .assertSuccessWithOutput(getExpectedResult());
}
@Test
@@ -92,13 +117,44 @@
.withArt6Plus64BitsLib()
.withArtFrameworks()
.run(parameters.getRuntime(), TestClass.class)
- .assertSuccessWithOutput(EXPECTED_RESULT);
+ .assertSuccessWithOutput(getExpectedResult());
}
public static class TestClass {
public static void main(String[] args) throws Throwable {
Path path = Files.createTempFile("example", ".txt");
+ readWrite(path);
+
+ PosixFileAttributeView view = Files.getFileAttributeView(path, PosixFileAttributeView.class);
+ if (view != null) {
+ System.out.println(
+ view.readAttributes().permissions().contains(PosixFilePermission.OWNER_READ));
+ } else {
+ System.out.println("null");
+ }
+
+ BasicFileAttributes attributes = Files.readAttributes(path, BasicFileAttributes.class);
+ if (attributes != null) {
+ System.out.println(attributes.isRegularFile());
+ } else {
+ System.out.println("null");
+ }
+
+ try {
+ PosixFileAttributes posixAttributes = Files.readAttributes(path, PosixFileAttributes.class);
+ if (attributes != null) {
+ System.out.println(
+ posixAttributes.permissions().contains(PosixFilePermission.OWNER_READ));
+ } else {
+ System.out.println("null");
+ }
+ } catch (UnsupportedOperationException e) {
+ System.out.println("unsupported");
+ }
+ }
+
+ private static void readWrite(Path path) throws IOException {
try (SeekableByteChannel channel =
Files.newByteChannel(path, StandardOpenOption.READ, StandardOpenOption.WRITE)) {
String toWrite = "Hello World";