[K/N] Support stacktrace using libbacktrace

This commit is contained in:
Pavel Kunyavskiy
2021-09-14 11:09:36 +03:00
committed by Space
parent 4fa5be3e58
commit c704fd6ae7
21 changed files with 350 additions and 123 deletions
@@ -0,0 +1,21 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
inline fun inner2() : Nothing {
throw Exception()
}
fun inner1() : Nothing {
inner2()
}
fun getStackTrace() : List<String> {
try {
inner1()
} catch (e: Exception) {
return e.getStackTrace().toList()
}
return emptyList()
}
@@ -0,0 +1,25 @@
import Foundation
import StacktraceByLibbacktrace
func testStackTrace() throws {
let trace = StacktraceByLibbacktraceKt.getStackTrace()
try assertTrue(trace[0].contains("Throwable.kt"))
try assertTrue(trace[1].contains("Exceptions.kt"))
try assertTrue(trace[2].contains("stacktraceByLibbacktrace.kt:7"))
try assertTrue(trace[2].contains("[inlined]"))
try assertTrue(trace[3].contains("stacktraceByLibbacktrace.kt:11"))
try assertTrue(trace[4].contains("stacktraceByLibbacktrace.kt:16"))
try assertTrue(trace[6].contains("stacktraceByLibbacktrace.swift:5"))
try assertTrue(trace[7].contains("main.swift:126"))
}
class StacktraceByLibbacktraceTests : TestProvider {
var tests: [TestCase] = []
init() {
providers.append(self)
tests = [
TestCase(name: "Stacktrace", method: withAutorelease(testStackTrace)),
]
}
}