Search in sources :

Example 1 with Script

use of org.gradle.groovy.scripts.Script in project gradle by gradle.

the class DefaultScriptRunnerFactoryTest method wrapsExecutionExceptionAndRestoresStateWhenScriptFails.

@Test
public void wrapsExecutionExceptionAndRestoresStateWhenScriptFails() {
    final RuntimeException failure = new RuntimeException();
    ScriptRunner<?, Void> scriptRunner = factory.create(compiledScriptMock, scriptSourceDummy, classLoaderDummy);
    expectScriptInstantiated();
    context.checking(new Expectations() {

        {
            Sequence sequence = context.sequence("seq");
            allowing(compiledScriptMock).getRunDoesSomething();
            will(returnValue(true));
            one(scriptExecutionListenerMock).scriptClassLoaded(scriptSourceDummy, Script.class);
            inSequence(sequence);
            one(scriptMock).init(target, scriptServices);
            inSequence(sequence);
            one(standardOutputCaptureMock).start();
            inSequence(sequence);
            one(scriptMock).run();
            inSequence(sequence);
            will(throwException(failure));
            one(standardOutputCaptureMock).stop();
            inSequence(sequence);
        }
    });
    ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
    assertThat(originalClassLoader, not(sameInstance(classLoaderDummy)));
    try {
        scriptRunner.run(target, scriptServices);
        fail();
    } catch (GradleScriptException e) {
        assertThat(e.getMessage(), equalTo("A problem occurred evaluating <script-to-string>."));
        assertThat(e.getCause(), sameInstance((Throwable) failure));
    }
    assertThat(Thread.currentThread().getContextClassLoader(), sameInstance(originalClassLoader));
}
Also used : Expectations(org.jmock.Expectations) Script(org.gradle.groovy.scripts.Script) GradleScriptException(org.gradle.api.GradleScriptException) Sequence(org.jmock.Sequence) Test(org.junit.Test)

Aggregations

GradleScriptException (org.gradle.api.GradleScriptException)1 Script (org.gradle.groovy.scripts.Script)1 Expectations (org.jmock.Expectations)1 Sequence (org.jmock.Sequence)1 Test (org.junit.Test)1