package org.netbeans.gradle.project.util; import java.io.File; import java.io.IOException; import org.junit.rules.TemporaryFolder; import org.junit.rules.TestRule; import org.junit.runner.Description; import org.junit.runners.model.Statement; public final class SafeTmpFolder implements TestRule { private final TemporaryFolder wrapped; public SafeTmpFolder() { this.wrapped = new TemporaryFolder(); } public void create() throws IOException { wrapped.create(); } private static File normalize(File file) throws IOException { return file.getCanonicalFile(); } public File newFile(String fileName) throws IOException { return normalize(wrapped.newFile(fileName)); } public File newFile() throws IOException { return normalize(wrapped.newFile()); } public File newFolder(String folder) throws IOException { return normalize(wrapped.newFolder(folder)); } public File newFolder(String... folderNames) throws IOException { return normalize(wrapped.newFolder(folderNames)); } public File newFolder() throws IOException { return normalize(wrapped.newFolder()); } public File getRoot() { try { return normalize(wrapped.getRoot()); } catch (IOException ex) { throw new RuntimeException(ex); } } public void delete() { wrapped.delete(); } @Override public Statement apply(Statement base, Description description) { return wrapped.apply(base, description); } }