package org.netbeans.gradle.project.util;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import org.jtrim.cancel.Cancellation;
import org.junit.Test;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import static org.junit.Assert.*;
public class NbFileUtilsTest {
private static void addDummyFile(Path directory, String fileName, int size) throws IOException {
byte[] content = new byte[size];
for (int i = 0; i < content.length; i++) {
content[i] = (byte)i;
}
Files.createDirectories(directory);
Files.write(directory.resolve(fileName), content);
}
private static Path createDummyDirectory() throws IOException {
Path tmpDir = Files.createTempDirectory("nb-delete-test");
try {
addDummyFile(tmpDir, "file1.bin", 128);
addDummyFile(tmpDir, "file2.bin", 7);
Path subDir = tmpDir.resolve("subdir");
addDummyFile(subDir, "sub_file1.bin", 9);
Path subSubDir = subDir.resolve("subsubdir");
addDummyFile(subSubDir, "sub_sub_file1.bin", 51);
addDummyFile(subSubDir, "sub_sub_file2.bin", 17);
return tmpDir;
} catch (Throwable ex) {
NbFileUtils.deleteDirectory(Cancellation.UNCANCELABLE_TOKEN, tmpDir);
throw ex;
}
}
@Test
public void testDeleteDirectoryAsPath() throws IOException {
Path dummyDir = createDummyDirectory();
try {
assertTrue(Files.isDirectory(dummyDir));
} finally {
NbFileUtils.deleteDirectory(Cancellation.UNCANCELABLE_TOKEN, dummyDir);
}
assertFalse("Directory must have been removed.", Files.exists(dummyDir));
}
@Test
public void testDeleteDirectoryAsFileObject() throws IOException {
Path dummyDir = createDummyDirectory();
try {
assertTrue(Files.isDirectory(dummyDir));
} finally {
FileObject dummyDirAsObj = FileUtil.toFileObject(FileUtil.normalizeFile(dummyDir.toFile()));
NbFileUtils.deleteDirectory(Cancellation.UNCANCELABLE_TOKEN, dummyDirAsObj);
}
assertFalse("Directory must have been removed.", Files.exists(dummyDir));
}
}