Introduce Path#isSpecialFile, FileSystem#isSpecialFile, and FileStatus#isSpecialFile to help disambiguate between a regular file and a special file, since the file size of a special file cannot be trusted.
--
MOS_MIGRATED_REVID=105903622
diff --git a/src/test/java/com/google/devtools/build/lib/vfs/UnixFileSystemTest.java b/src/test/java/com/google/devtools/build/lib/vfs/UnixFileSystemTest.java
index cb5685e..40ace2b 100644
--- a/src/test/java/com/google/devtools/build/lib/vfs/UnixFileSystemTest.java
+++ b/src/test/java/com/google/devtools/build/lib/vfs/UnixFileSystemTest.java
@@ -15,8 +15,10 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import com.google.devtools.build.lib.unix.FilesystemUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -60,4 +62,20 @@
// Expected.
}
}
+
+ @Test
+ public void testIsSpecialFile() throws Exception {
+ Path regular = absolutize("regular");
+ Path fifo = absolutize("fifo");
+ FileSystemUtils.createEmptyFile(regular);
+ FilesystemUtils.mkfifo(fifo.toString(), 0777);
+ assertTrue(regular.isFile());
+ assertFalse(regular.isSpecialFile());
+ assertTrue(regular.stat().isFile());
+ assertFalse(regular.stat().isSpecialFile());
+ assertTrue(fifo.isFile());
+ assertTrue(fifo.isSpecialFile());
+ assertTrue(fifo.stat().isFile());
+ assertTrue(fifo.stat().isSpecialFile());
+ }
}