[test][stacktrace][mac] added two test for stack trace validation

This commit is contained in:
Vasily Levchenko
2020-04-16 15:58:05 +02:00
parent cd9c5322e8
commit 627904d469
3 changed files with 85 additions and 0 deletions
+12
View File
@@ -2325,6 +2325,18 @@ standaloneTest("check_stacktrace_format") {
source = "runtime/exceptions/check_stacktrace_format.kt"
}
standaloneTest("stack_trace_inline") {
disabled = !isAppleTarget(project) || project.globalTestArgs.contains('-opt') || (project.testTarget == 'ios_arm64')
flags = ['-g']
source = "runtime/exceptions/stack_trace_inline.kt"
}
standaloneTest("kt-37572") {
disabled = !isAppleTarget(project) || project.globalTestArgs.contains('-opt') || (project.testTarget == 'ios_arm64')
flags = ['-g']
source = "runtime/exceptions/kt-37572.kt"
}
standaloneTest("custom_hook") {
enabled = (project.testTarget != 'wasm32') // Uses exceptions.
goldValue = "value 42: Error\n"
@@ -0,0 +1,42 @@
import kotlin.text.Regex
import kotlin.test.*
fun main() {
try {
foo()
} catch (tw:Throwable) {
val stackTrace = tw.getStackTrace()
stackTrace.take(6).forEach(::checkFrame)
}
}
fun foo() {
myRun {
//platform.darwin.NSObject()
throwException()
}
}
inline fun myRun(block: () -> Unit) {
block()
}
fun throwException() {
throw Error()
}
internal val regex = Regex("^(\\d+)\\ +.*/(.*):(\\d+):.*$")
internal val goldValues = arrayOf<Pair<String, Int>?>(
null,
null,
"kt-37572.kt" to 25,
"kt-37572.kt" to 16,
"kt-37572.kt" to 6,
"kt-37572.kt" to 4)
internal fun checkFrame(value:String) {
val (pos, file, line) = regex.find(value)!!.destructured
goldValues[pos.toInt()]?.let{
assertEquals(it.first, file)
assertEquals(it.second, line.toInt())
}
}
@@ -0,0 +1,31 @@
import kotlin.text.Regex
import kotlin.test.*
fun exception() {
error("FAIL!")
}
fun main() {
try {
exception()
}
catch (e:Exception) {
val stackTrace = e.getStackTrace()
stackTrace.take(6).forEach(::checkFrame)
}
}
internal val regex = Regex("^(\\d+)\\ +.*/(.*):(\\d+):.*$")
internal val goldValues = arrayOf<Pair<String, Int>?>(
null,
null,
null,
null,
"stack_trace_inline.kt" to 5,
"stack_trace_inline.kt" to 10)
internal fun checkFrame(value:String) {
val (pos, file, line) = regex.find(value)!!.destructured
goldValues[pos.toInt()]?.let{
assertEquals(it.first, file)
assertEquals(it.second, line.toInt())
}
}