package org.junit.rules;
import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertThat;
import static org.junit.experimental.results.PrintableResult.testResult;
import static org.junit.experimental.results.ResultMatchers.failureCountIs;
import static org.junit.experimental.results.ResultMatchers.isSuccessful;
import java.io.IOException;
import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.results.PrintableResult;
public class TemporaryFolderRuleAssuredDeletionTest {
private static class StubTemporaryFolder extends TemporaryFolder {
private StubTemporaryFolder(Builder builder) {
super(builder);
}
/**
* Don't need to create as we are overriding deletion.
*/
@Override
public void create() throws IOException {
}
/**
* Simulates failure to clean-up temporary folder.
*/
@Override
protected boolean tryDelete() {
return false;
}
public static Builder builder() {
return new TemporaryFolder.Builder() {
@Override
public TemporaryFolder build() {
return new StubTemporaryFolder(this);
}
};
}
}
public static class HasTempFolderWithAssuredDeletion {
@Rule public TemporaryFolder folder = StubTemporaryFolder.builder()
.assureDeletion()
.build();
@Test
public void alwaysPasses() {
}
}
@Test
public void testStrictVerificationFailure() {
PrintableResult result = testResult(HasTempFolderWithAssuredDeletion.class);
assertThat(result, failureCountIs(1));
assertThat(result.toString(), containsString("Unable to clean up temporary folder"));
}
public static class HasTempFolderWithoutAssuredDeletion {
@Rule public TemporaryFolder folder = StubTemporaryFolder.builder().build();
@Test
public void alwaysPasses() {
}
}
@Test
public void testStrictVerificationSuccess() {
PrintableResult result = testResult(HasTempFolderWithoutAssuredDeletion.class);
assertThat(result, isSuccessful());
}
}