Merge branch '2.0.x'

This commit is contained in:
Madhura Bhave 2018-10-23 13:43:40 -07:00
commit 80bb7ea9d6
2 changed files with 32 additions and 59 deletions

View File

@ -73,7 +73,7 @@ public class DefaultRestartInitializer implements RestartInitializer {
* @return {@code true} if the stack element means that the initializer should be
* skipped
*/
protected boolean isSkippedStackElement(StackTraceElement element) {
private boolean isSkippedStackElement(StackTraceElement element) {
for (String skipped : SKIPPED_STACK_ELEMENTS) {
if (element.getClassName().startsWith(skipped)) {
return true;

View File

@ -16,87 +16,83 @@
package org.springframework.boot.devtools.restart;
import java.net.URL;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.Matchers.nullValue;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;
/**
* Tests for {@link DefaultRestartInitializer}.
*
* @author Phillip Webb
* @author Andy Wilkinson
* @author Madhura Bhave
*/
public class DefaultRestartInitializerTests {
@Test
public void nullForTests() {
MockRestartInitializer initializer = new MockRestartInitializer(true);
assertThat(initializer.getInitialUrls(Thread.currentThread())).isNull();
public void jUnitStackShouldReturnNull() {
testSkippedStacks("org.junit.runners.Something");
}
@Test
public void validMainThread() {
MockRestartInitializer initializer = new MockRestartInitializer(false);
public void springTestStackShouldReturnNull() {
testSkippedStacks("org.springframework.boot.test.Something");
}
@Test
public void cucumberStackShouldReturnNull() {
testSkippedStacks("cucumber.runtime.Runtime.run");
}
@Test
public void validMainThreadShouldReturnUrls() {
DefaultRestartInitializer initializer = new DefaultRestartInitializer();
ClassLoader classLoader = new MockAppClassLoader(getClass().getClassLoader());
Thread thread = new Thread();
thread.setName("main");
thread.setContextClassLoader(classLoader);
assertThat(initializer.isMain(thread)).isTrue();
assertThat(initializer.getInitialUrls(thread)).isNotEqualTo(nullValue());
assertThat(initializer.getInitialUrls(thread)).isNotNull();
}
@Test
public void threadNotNamedMain() {
MockRestartInitializer initializer = new MockRestartInitializer(false);
public void threadNotNamedMainShouldReturnNull() {
DefaultRestartInitializer initializer = new DefaultRestartInitializer();
ClassLoader classLoader = new MockAppClassLoader(getClass().getClassLoader());
Thread thread = new Thread();
thread.setName("buscuit");
thread.setContextClassLoader(classLoader);
assertThat(initializer.isMain(thread)).isFalse();
assertThat(initializer.getInitialUrls(thread)).isNull();
}
@Test
public void threadNotUsingAppClassLoader() {
MockRestartInitializer initializer = new MockRestartInitializer(false);
DefaultRestartInitializer initializer = new DefaultRestartInitializer();
ClassLoader classLoader = new MockLauncherClassLoader(
getClass().getClassLoader());
Thread thread = new Thread();
thread.setName("main");
thread.setContextClassLoader(classLoader);
assertThat(initializer.isMain(thread)).isFalse();
assertThat(initializer.getInitialUrls(thread)).isNull();
}
@Test
public void skipsDueToJUnitStacks() {
testSkipStack("org.junit.runners.Something", true);
}
@Test
public void skipsDueToSpringTest() {
testSkipStack("org.springframework.boot.test.Something", true);
}
@Test
public void skipsDueToCucumber() {
testSkipStack("cucumber.runtime.Runtime.run", true);
}
@Test
public void urlsCanBeRetrieved() {
assertThat(new DefaultRestartInitializer().getUrls(Thread.currentThread()))
.isNotEmpty();
}
private void testSkipStack(String className, boolean expected) {
MockRestartInitializer initializer = new MockRestartInitializer(true);
StackTraceElement element = new StackTraceElement(className, "someMethod",
"someFile", 123);
assertThat(initializer.isSkippedStackElement(element)).isEqualTo(expected);
protected void testSkippedStacks(String s) {
DefaultRestartInitializer initializer = new DefaultRestartInitializer();
ClassLoader classLoader = new MockAppClassLoader(getClass().getClassLoader());
Thread thread = mock(Thread.class);
thread.setName("main");
StackTraceElement element = new StackTraceElement(s, "someMethod", "someFile",
123);
given(thread.getStackTrace()).willReturn(new StackTraceElement[] { element });
given(thread.getContextClassLoader()).willReturn(classLoader);
assertThat(initializer.getInitialUrls(thread)).isEqualTo(null);
}
private static class MockAppClassLoader extends ClassLoader {
@ -115,27 +111,4 @@ public class DefaultRestartInitializerTests {
}
private static class MockRestartInitializer extends DefaultRestartInitializer {
private final boolean considerStackElements;
MockRestartInitializer(boolean considerStackElements) {
this.considerStackElements = considerStackElements;
}
@Override
protected boolean isSkippedStackElement(StackTraceElement element) {
if (!this.considerStackElements) {
return false;
}
return true;
}
@Override
protected URL[] getUrls(Thread thread) {
return new URL[0];
}
}
}