@ -16,87 +16,83 @@
@@ -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 springTestStackShouldReturnNull ( ) {
testSkippedStacks ( "org.springframework.boot.test.Something" ) ;
}
@Test
public void cucumberStackShouldReturnNull ( ) {
testSkippedStacks ( "cucumber.runtime.Runtime.run" ) ;
}
@Test
public void validMainThread ( ) {
MockRestartInitializer initializer = new MockRestartInitializer ( false ) ;
public void validMainThreadShouldReturnUrls ( ) {
Default RestartInitializer 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 ( ) {
Mock RestartInitializer initializer = new MockRestartInitializer ( false ) ;
public void threadNotNamedMainShouldReturnNull ( ) {
Default RestartInitializer 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 ( ) {
Mock RestartInitializer initializer = new MockRestartInitializer ( false ) ;
Default RestartInitializer 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 {
@@ -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 ] ;
}
}
}