提交 15be8b0c 编写于 作者: M Matt Sicker

Make test platform independent via Mockito

Signed-off-by: NMatt Sicker <boards@gmail.com>
上级 baba9532
......@@ -34,7 +34,11 @@ import org.junit.rules.Timeout;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.FileSystem;
import java.nio.file.FileSystemException;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.spi.FileSystemProvider;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
......@@ -47,6 +51,8 @@ import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.hasItem;
import static org.junit.Assert.*;
import static org.junit.Assume.assumeTrue;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;
public class PathRemoverTest {
......@@ -68,10 +74,22 @@ public class PathRemoverTest {
@Test
public void testForceRemoveFile_LockedFile() throws Exception {
assumeTrue(Functions.isWindows());
File file = tmp.newFile();
touchWithFileName(file);
locker.acquireLock(file);
String filename = "/var/lock/jenkins.lock";
File file = mock(File.class);
Path path = mock(Path.class);
FileSystem fs = mock(FileSystem.class);
FileSystemProvider fsProvider = mock(FileSystemProvider.class);
BasicFileAttributes attributes = mock(BasicFileAttributes.class);
given(file.getPath()).willReturn(filename);
given(file.toPath()).willReturn(path);
given(path.toString()).willReturn(filename);
given(path.toFile()).willReturn(file);
given(path.getFileSystem()).willReturn(fs);
given(fs.provider()).willReturn(fsProvider);
given(fsProvider.deleteIfExists(path)).willThrow(new FileSystemException(filename));
given(fsProvider.readAttributes(path, BasicFileAttributes.class)).willReturn(attributes);
given(attributes.isDirectory()).willReturn(false);
PathRemover remover = PathRemover.newSimpleRemover();
try {
......@@ -79,7 +97,7 @@ public class PathRemoverTest {
fail("Should not have been deleted: " + file);
} catch (IOException e) {
assertThat(calcExceptionHierarchy(e), hasItem(FileSystemException.class));
assertThat(e.getMessage(), containsString(file.getPath()));
assertThat(e.getMessage(), containsString(filename));
}
}
......@@ -88,6 +106,11 @@ public class PathRemoverTest {
List<Class<?>> hierarchy = new ArrayList<>();
for (; t != null; t = t.getCause()) {
hierarchy.add(t.getClass());
// with a composite exception, we might be hiding some other causes
if (t instanceof CompositeIOException) {
CompositeIOException e = (CompositeIOException) t;
e.getExceptions().forEach(ex -> hierarchy.addAll(calcExceptionHierarchy(ex)));
}
}
return hierarchy;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册