private File createTempFile() throws IOException { // TODO: Removing .getCanonicalFile() causes archive.rm_r() to // fail in testCopyContainingOrSameFiles() - explain why! return File.createTempFile(TEMP_FILE_PREFIX, getSuffix()).getCanonicalFile(); }
@Test public final void testCopyDelete() throws IOException { final String[] names = { "0" + getSuffix(), "1" + getSuffix(), //"2" + getSuffix(), }; assertTrue(archive.mkdir()); // create valid archive file assertCopyDelete(archive, names, 0); archive.rm(); assertTrue(archive.toNonArchiveFile().mkdir()); // create false positive archive file assertCopyDelete(archive, names, 0); archive.rm(); }
private void assertCopyDelete(final TFile parent, final TFile dir) throws IOException { final TFile parentFile = new TFile(parent, "file"); final TFile parentArchive = new TFile(parent, "archive" + getSuffix()); final TFile dirFile = new TFile(dir, "file"); final TFile dirArchive = new TFile(dir, "archive" + getSuffix()); assertCopyDelete0(dirFile, dirArchive); assertCopyDelete0(dirFile, parentFile); assertCopyDelete0(dirFile, parentArchive); assertCopyDelete0(parentFile, dirFile); assertCopyDelete0(parentFile, dirArchive); assertCopyDelete0(parentArchive, dirFile); assertCopyDelete0(parentArchive, dirArchive); assertCopyDelete0(dirArchive, dirFile); assertCopyDelete0(dirArchive, parentFile); assertCopyDelete0(dirArchive, parentArchive); }
@Test public final void testInputOutput() throws IOException { assertInputOutput(archive); final TFile archiveTest = new TFile(archive, "test"); assertInputOutput(archiveTest); final TFile archiveInner = new TFile(archive, "inner" + getSuffix()); final TFile archiveInnerTest = new TFile(archiveInner, "test"); assertInputOutput(archiveInnerTest); archiveInner.rm(); archive.rm(); }
@Test public final void testFalsePositives() throws IOException { assertFalsePositive(archive); // Dito for entry. final TFile entry = new TFile(archive, "entry" + getSuffix()); assertTrue(archive.toNonArchiveFile().mkdir()); assertFalsePositive(entry); archive.rm(); assertTrue(archive.mkdir()); assertFalsePositive(entry); archive.rm(); }
@Test public final void testIllegalDirectoryOperations() throws IOException { try { final String[] names = { "inner" + getSuffix(), "dir", }; TFile file = archive; for (int i = 0; i <= names.length; i++) { final TFile file2 = file.toNonArchiveFile(); assertTrue(file2.mkdir()); assertIllegalDirectoryOperations(file2); file2.rm(); assertTrue(file.mkdir()); assertIllegalDirectoryOperations(file); if (i < names.length) file = new TFile(file, names[i]); } } finally { archive.rm_r(); } }
@Test public final void testLenientFileOutputStream() throws IOException { TFile file = new TFile(archive, "dir/inner" + getSuffix() + "/dir/test.txt"); assertFileOutputStream(file); try { archive.rm(); fail("directory not empty"); } catch (IOException expected) { } umount(); // allow external modifications! TFile.rm(archive.toNonArchiveFile()); // use plain file to delete instead! assertFalse(archive.exists()); assertFalse(archive.isDirectory()); assertFalse(archive.isFile()); assertEquals(0, archive.length()); }
@Test public final void testRenameRecursively() throws IOException { final TFile temp = new TFile(createTempFile()); final TFile archive2 = new TFile(archive, "inner" + getSuffix()); final TFile archive3 = new TFile(archive2, "nuts" + getSuffix()); final TFile archive1a = new TFile(archive, "a"); final TFile archive1b = new TFile(archive, "b");