Catch and report exceptions from DependenciesResolver

This commit is contained in:
Pavel V. Talanov
2017-07-18 17:07:50 +03:00
parent eb5be038fa
commit 5faad493b4
6 changed files with 107 additions and 25 deletions
@@ -290,6 +290,14 @@ class ScriptTemplateTest {
Assert.assertNotNull(aClass)
}
@Test
fun testThrowing() {
val messageCollector = TestMessageCollector()
compileScript("fib.kts", ScriptWithThrowingResolver::class, null, messageCollector = messageCollector)
messageCollector.assertHasMessage("Exception from resolver", desiredSeverity = CompilerMessageSeverity.ERROR)
}
@Test
fun testSmokeScriptException() {
val aClass = compileScript("smoke_exception.kts", ScriptWithArrayParam::class)
@@ -511,6 +519,12 @@ class SeveralConstructorsResolver(val c: Int): TestKotlinScriptDependenciesResol
}
class DefaultArgsConstructorResolver(val c: Int = 0): TestKotlinScriptDependenciesResolver()
class ThrowingResolver: DependenciesResolver {
override fun resolve(scriptContents: ScriptContents, environment: Environment): ResolveResult {
throw IllegalStateException("Exception from resolver")
}
}
@ScriptTemplateDefinition(
scriptFilePattern =".*\\.kts",
resolver = TestKotlinScriptDummyDependenciesResolver::class)
@@ -583,6 +597,9 @@ abstract class ScriptWithSeveralConstructorsResolver(val num: Int)
@ScriptTemplateDefinition(resolver = DefaultArgsConstructorResolver::class)
abstract class ScriptWithDefaultArgsResolver(val num: Int)
@ScriptTemplateDefinition(resolver = ThrowingResolver::class)
abstract class ScriptWithThrowingResolver(val num: Int)
@Target(AnnotationTarget.FILE)
@Retention(AnnotationRetention.RUNTIME)
annotation class DependsOn(val path: String)