[K/N] Add regression test for objc2kotlin and kotlin2objc names
This commit is contained in:
@@ -5726,6 +5726,16 @@ if (isAppleTarget(project)) {
|
|||||||
swiftSources = ['framework/stacktrace/']
|
swiftSources = ['framework/stacktrace/']
|
||||||
}
|
}
|
||||||
|
|
||||||
|
frameworkTest("testStackTraceBridgesFramework") {
|
||||||
|
enabled = !project.globalTestArgs.contains('-opt')
|
||||||
|
framework('StacktraceBridges') {
|
||||||
|
sources = ['framework/stacktraceBridges']
|
||||||
|
opts = ['-g']
|
||||||
|
}
|
||||||
|
swiftSources = ['framework/stacktraceBridges/']
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
frameworkTest("testStackTraceByLibbacktraceFramework") {
|
frameworkTest("testStackTraceByLibbacktraceFramework") {
|
||||||
enabled = !project.globalTestArgs.contains('-opt')
|
enabled = !project.globalTestArgs.contains('-opt')
|
||||||
framework('StacktraceByLibbacktrace') {
|
framework('StacktraceByLibbacktrace') {
|
||||||
|
|||||||
@@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
fun thrower() : Nothing {
|
||||||
|
throw Exception()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getStackTrace() : List<String> {
|
||||||
|
try {
|
||||||
|
thrower()
|
||||||
|
} catch (e: Exception) {
|
||||||
|
return e.getStackTrace().toList()
|
||||||
|
}
|
||||||
|
return emptyList()
|
||||||
|
}
|
||||||
|
|
||||||
|
open class Foo {
|
||||||
|
open fun foo(): List<String> { return emptyList() }
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
var trace: List<String> = emptyList()
|
||||||
|
|
||||||
|
init {
|
||||||
|
trace = getStackTrace()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class Bar : Foo() {
|
||||||
|
override fun foo(): List<String> = getStackTrace()
|
||||||
|
}
|
||||||
|
|
||||||
|
object Object {
|
||||||
|
var trace: List<String> = emptyList()
|
||||||
|
|
||||||
|
init {
|
||||||
|
trace = getStackTrace()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class E {
|
||||||
|
A {
|
||||||
|
init {
|
||||||
|
trace = getStackTrace()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var trace: List<String> = emptyList()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun createBar(): Foo = Bar()
|
||||||
|
|
||||||
|
fun use(foo: Foo): List<String> {
|
||||||
|
return foo.foo()
|
||||||
|
}
|
||||||
+54
@@ -0,0 +1,54 @@
|
|||||||
|
import Foundation
|
||||||
|
import StacktraceBridges
|
||||||
|
|
||||||
|
class Bar : Foo {
|
||||||
|
override func foo() -> Array<String> {
|
||||||
|
return StacktraceBridgesKt.getStackTrace()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func testDirectObjc2Kotlin() throws {
|
||||||
|
let trace = StacktraceBridgesKt.getStackTrace()
|
||||||
|
try assertTrue(trace[4].contains("objc2kotlin_kfun:#getStackTrace(){}kotlin.collections.List<kotlin.String>"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func testVirtualObjc2Kotlin() throws {
|
||||||
|
let trace = StacktraceBridgesKt.createBar().foo()
|
||||||
|
try assertTrue(trace[5].contains("objc2kotlin_virtual_kfun:Foo#foo(){}kotlin.collections.List<kotlin.String>"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func testKotlin2Objc() throws {
|
||||||
|
let trace = StacktraceBridgesKt.use(foo: Bar())
|
||||||
|
try assertTrue(trace[8].contains("kotlin2objc_kfun:Foo#foo(){}kotlin.collections.List<kotlin.String>"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func testCompanionObject() throws {
|
||||||
|
let trace = Foo.companion.trace
|
||||||
|
try assertTrue(trace[6].contains("objc2kotlin_kclass:Foo#companion"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func testStandaloneObject() throws {
|
||||||
|
let trace = Object.shared.trace
|
||||||
|
try assertTrue(trace[6].contains("objc2kotlin_kclass:Object#shared"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func testEnumEntry() throws {
|
||||||
|
let trace = E.a.trace
|
||||||
|
try assertTrue(trace[8].contains("objc2kotlin_kclass:E.A"))
|
||||||
|
}
|
||||||
|
|
||||||
|
class StacktraceBridgesTests : TestProvider {
|
||||||
|
var tests: [TestCase] = []
|
||||||
|
|
||||||
|
init() {
|
||||||
|
providers.append(self)
|
||||||
|
tests = [
|
||||||
|
TestCase(name: "Direct objc2kotlin", method: withAutorelease(testDirectObjc2Kotlin)),
|
||||||
|
TestCase(name: "Virtual objc2kotlin", method: withAutorelease(testVirtualObjc2Kotlin)),
|
||||||
|
TestCase(name: "kotlin2objc", method: withAutorelease(testKotlin2Objc)),
|
||||||
|
TestCase(name: "Companion object", method: withAutorelease(testCompanionObject)),
|
||||||
|
TestCase(name: "Standalone object", method: withAutorelease(testStandaloneObject)),
|
||||||
|
TestCase(name: "Enum entry", method: withAutorelease(testEnumEntry)),
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user