[K/N] Migrate LLDB test to blackboxtest
This change only introduces a single sample test together with the necessary plumbing for basic LLDB testing. Migrating the rest of the tests over and introducing more complex interop setups will be tackled as a follow-up.
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
// KIND: STANDALONE_LLDB
|
||||
// LLDB_TRACE: canInspectArrayChildren.txt
|
||||
fun main(args: Array<String>) {
|
||||
val xs = intArrayOf(3, 5, 8)
|
||||
return
|
||||
}
|
||||
|
||||
data class Point(val x: Int, val y: Int)
|
||||
@@ -0,0 +1,5 @@
|
||||
> b main.kt:5
|
||||
> r
|
||||
> fr var xs
|
||||
(ObjHeader *) xs = [..., ..., ...]
|
||||
> q
|
||||
@@ -0,0 +1,13 @@
|
||||
// KIND: STANDALONE_LLDB
|
||||
// LLDB_TRACE: canInspectArrays.txt
|
||||
fun main(args: Array<String>) {
|
||||
val xs = IntArray(3)
|
||||
xs[0] = 1
|
||||
xs[1] = 2
|
||||
xs[2] = 3
|
||||
val ys: Array<Any?> = arrayOfNulls(2)
|
||||
ys[0] = Point(1, 2)
|
||||
return
|
||||
}
|
||||
|
||||
data class Point(val x: Int, val y: Int)
|
||||
@@ -0,0 +1,7 @@
|
||||
> b main.kt:10
|
||||
> r
|
||||
> fr var
|
||||
(ObjHeader *) args = []
|
||||
(ObjHeader *) xs = [..., ..., ...]
|
||||
(ObjHeader *) ys = [..., ...]
|
||||
> q
|
||||
@@ -0,0 +1,19 @@
|
||||
// KIND: STANDALONE_LLDB
|
||||
// LLDB_TRACE: canInspectCatchParameter.txt
|
||||
fun main() {
|
||||
try {
|
||||
throw Exception("message 1")
|
||||
} catch (e1: Throwable) {
|
||||
println(e1.message)
|
||||
}
|
||||
|
||||
try {
|
||||
throwError()
|
||||
} catch (e2: Throwable) {
|
||||
println(e2.message)
|
||||
}
|
||||
}
|
||||
|
||||
fun throwError() {
|
||||
throw Error("message 2")
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
> b main.kt:7
|
||||
> r
|
||||
> fr var
|
||||
(ObjHeader *) e1 = [..]
|
||||
> b main.kt:11
|
||||
> c
|
||||
> fr var
|
||||
(ObjHeader *) e2 = [..]
|
||||
> q
|
||||
@@ -0,0 +1,12 @@
|
||||
// KIND: STANDALONE_LLDB
|
||||
// LLDB_TRACE: canInspectClasses.txt
|
||||
fun main(args: Array<String>) {
|
||||
val point = Point(1, 2)
|
||||
val person = Person()
|
||||
return
|
||||
}
|
||||
|
||||
data class Point(val x: Int, val y: Int)
|
||||
class Person {
|
||||
override fun toString() = "John Doe"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
> b main.kt:6
|
||||
> r
|
||||
> fr var
|
||||
(ObjHeader *) args = []
|
||||
(ObjHeader *) point = [x: ..., y: ...]
|
||||
(ObjHeader *) person = []
|
||||
> q
|
||||
@@ -0,0 +1,10 @@
|
||||
// KIND: STANDALONE_LLDB
|
||||
// LLDB_TRACE: canInspectValuesOfPrimitiveTypes.txt
|
||||
fun main(args: Array<String>) {
|
||||
var a: Byte = 1
|
||||
var b: Int = 2
|
||||
var c: Long = -3
|
||||
var d: Char = 'c'
|
||||
var e: Boolean = true
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
> b main.kt:9
|
||||
> r
|
||||
> fr var
|
||||
(char) a = '\x01'
|
||||
(int) b = 2
|
||||
(long) c = -3
|
||||
(short) d = 99
|
||||
(bool) e = true
|
||||
> q
|
||||
@@ -0,0 +1,8 @@
|
||||
// KIND: STANDALONE_LLDB
|
||||
// LLDB_TRACE: canStepThroughCode.txt
|
||||
fun main(args: Array<String>) {
|
||||
var x = 1
|
||||
var y = 2
|
||||
var z = x + y
|
||||
println(z)
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
> b main.kt:4
|
||||
Breakpoint 1: [..]
|
||||
|
||||
> r
|
||||
Process [..] stopped
|
||||
[..] stop reason = breakpoint 1.1
|
||||
[..] at main.kt:4[..]
|
||||
|
||||
> n
|
||||
Process [..] stopped
|
||||
[..] stop reason = step over
|
||||
[..] at main.kt:5[..]
|
||||
|
||||
> n
|
||||
Process [..] stopped
|
||||
[..] stop reason = step over
|
||||
[..] at main.kt:6[..]
|
||||
|
||||
> n
|
||||
Process [..] stopped
|
||||
[..] stop reason = step over
|
||||
[..] at main.kt:7[..]
|
||||
> q
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// KIND: STANDALONE_LLDB
|
||||
// FREE_COMPILER_ARGS: -Xg-generate-debug-trampoline=enable
|
||||
// LLDB_TRACE: kt33055.txt
|
||||
// FILE: kt33055.kt
|
||||
fun question(subject: String, names: Array<String> = emptyArray()): String {
|
||||
return buildString { // breakpoint here
|
||||
append("$subject?") // actual stop
|
||||
for (name in names)
|
||||
append(" $name?")
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
println(question("Subject", args))
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
> b 6
|
||||
Breakpoint 1: where = [..]`kfun:#question(kotlin.String;kotlin.Array<kotlin.String>){}kotlin.String [..] at kt33055.kt:6:12, [..]
|
||||
> q
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
// KIND: STANDALONE_LLDB
|
||||
// FREE_COMPILER_ARGS: -Xg-generate-debug-trampoline=enable
|
||||
// LLDB_TRACE: kt33364.txt
|
||||
// FILE: kt33364.kt
|
||||
fun main() {
|
||||
val param = 3
|
||||
|
||||
//breakpoint here (line: 8, breakpoint is set to 9th line)
|
||||
when(param) {
|
||||
1 -> print("A")
|
||||
2 -> print("B")
|
||||
else -> print("C")
|
||||
}
|
||||
|
||||
// breakpoint here (line: 15, breakpoint is set to 16th line)
|
||||
when {
|
||||
param == 1 -> print("A")
|
||||
param == 2 -> print("B")
|
||||
else -> print("C")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
> b 8
|
||||
Breakpoint 1: where = [..]kfun:#main(){} [..] at kt33364.kt:9:[..]
|
||||
> b 15
|
||||
Breakpoint 2: where = [..]kfun:#main(){} [..] at kt33364.kt:16:[..]
|
||||
> q
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
// KIND: STANDALONE_LLDB
|
||||
// LLDB_TRACE: kt42208.txt
|
||||
// FILE: kt42208-1.kt
|
||||
fun main() {
|
||||
foo()()
|
||||
}
|
||||
// FILE: kt42208-2.kt
|
||||
// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
inline fun foo() = {
|
||||
throw Error()
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
> b ThrowException
|
||||
> r
|
||||
> bt
|
||||
* thread #1, [..] stop reason = breakpoint 1.1
|
||||
* frame #0: [..]`ThrowException
|
||||
frame #1: [..]`kfun:main$lambda$0#internal at kt42208-2.kt:10:18
|
||||
frame #2: [..]`kfun:$main$lambda$0$FUNCTION_REFERENCE$0.invoke#internal(_this=[..]) at kt42208-1.kt:5:5
|
||||
frame #3: [..]`kfun:$main$lambda$0$FUNCTION_REFERENCE$0.$<bridge-UNN>invoke(_this=[..]){}kotlin.Nothing#internal at kt42208-1.kt:5:5
|
||||
frame #4: [..]`kfun:#main(){} at kt42208-1.kt:5:5
|
||||
frame #5: [..]`Konan_start(args=[..]) at kt42208-1.kt:4:1
|
||||
frame #6: [..]
|
||||
frame #7: [..]
|
||||
> q
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// KIND: STANDALONE_LLDB
|
||||
// FREE_COMPILER_ARGS: -XXLanguage:+UnitConversionsOnArbitraryExpressions
|
||||
// LLDB_TRACE: kt42208WithPassingLambdaToAnotherFunction.txt
|
||||
// FILE: kt42208-1.kt
|
||||
fun main() {
|
||||
val a = foo()
|
||||
bar(a)
|
||||
}
|
||||
// FILE: kt42208-2.kt
|
||||
// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
class A
|
||||
val list = mutableListOf<A>()
|
||||
inline fun foo() = { ->
|
||||
list.add(A())
|
||||
}
|
||||
// FILE: kt42208-3.kt
|
||||
fun bar(v:(()->Unit)) {
|
||||
v()
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
> b kt42208-2.kt:14
|
||||
> r
|
||||
> bt
|
||||
* thread #1, [..] stop reason = breakpoint 1.1
|
||||
* frame #0: [..]`kfun:main$lambda$0#internal at kt42208-2.kt:14:5
|
||||
frame #1: [..]`kfun:$main$lambda$0$FUNCTION_REFERENCE$0.invoke#internal(_this=[..]) at kt42208-1.kt:6:5
|
||||
frame #2: [..]`kfun:$main$lambda$0$FUNCTION_REFERENCE$0.$<bridge-BNN>invoke(_this=[..]){}kotlin.Boolean#internal at kt42208-1.kt:6:5
|
||||
frame #3: [..]`kfun:#bar(v=[..]){} at kt42208-3.kt:18:5
|
||||
frame #4: [..]`kfun:#main(){} at kt42208-1.kt:7:5
|
||||
frame #5: [..]`Konan_start(args=[..]) at kt42208-1.kt:5:1
|
||||
> c
|
||||
> q
|
||||
@@ -0,0 +1,16 @@
|
||||
// KIND: STANDALONE_LLDB
|
||||
// LLDB_TRACE: kt42208WithVariable.txt
|
||||
// FILE: kt42208-1.kt
|
||||
fun main() {
|
||||
val a = foo()
|
||||
a()
|
||||
a()
|
||||
a()
|
||||
}
|
||||
// FILE: kt42208-2.kt
|
||||
// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
class A
|
||||
val list = mutableListOf<A>()
|
||||
inline fun foo() = { ->
|
||||
list.add(A())
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
> b kt42208-2.kt:15
|
||||
> r
|
||||
> bt
|
||||
* thread #1, [..] stop reason = breakpoint 1.1
|
||||
* frame #0: [..]`kfun:main$lambda$0#internal at kt42208-2.kt:15:5
|
||||
frame #1: [..]`kfun:$main$lambda$0$FUNCTION_REFERENCE$0.invoke#internal(_this=[..]) at kt42208-1.kt:5:5
|
||||
frame #2: [..]`kfun:$main$lambda$0$FUNCTION_REFERENCE$0.$<bridge-BNN>invoke(_this=[..]){}kotlin.Boolean#internal at kt42208-1.kt:5:5
|
||||
frame #3: [..]`kfun:#main(){} at kt42208-1.kt:6:5
|
||||
frame #4: [..]`Konan_start(args=[..]) at kt42208-1.kt:4:1
|
||||
frame #5: [..]
|
||||
> c
|
||||
> bt
|
||||
* thread #1, [..] stop reason = breakpoint 1.1
|
||||
* frame #0: [..]`kfun:main$lambda$0#internal at kt42208-2.kt:15:5
|
||||
frame #1: [..]`kfun:$main$lambda$0$FUNCTION_REFERENCE$0.invoke#internal(_this=[..]) at kt42208-1.kt:5:5
|
||||
frame #2: [..]`kfun:$main$lambda$0$FUNCTION_REFERENCE$0.$<bridge-BNN>invoke(_this=[..]){}kotlin.Boolean#internal at kt42208-1.kt:5:5
|
||||
frame #3: [..]`kfun:#main(){} at kt42208-1.kt:7:5
|
||||
frame #4: [..]`Konan_start(args=[..]) at kt42208-1.kt:4:1
|
||||
> c
|
||||
> bt
|
||||
* thread #1, [..] stop reason = breakpoint 1.1
|
||||
* frame #0: [..]`kfun:main$lambda$0#internal at kt42208-2.kt:15:5
|
||||
frame #1: [..]`kfun:$main$lambda$0$FUNCTION_REFERENCE$0.invoke#internal(_this=[..]) at kt42208-1.kt:5:5
|
||||
frame #2: [..]`kfun:$main$lambda$0$FUNCTION_REFERENCE$0.$<bridge-BNN>invoke(_this=[..]){}kotlin.Boolean#internal at kt42208-1.kt:5:5
|
||||
frame #3: [..]`kfun:#main(){} at kt42208-1.kt:8:5
|
||||
frame #4: [..]`Konan_start(args=[..]) at kt42208-1.kt:4:1
|
||||
> q
|
||||
@@ -0,0 +1,8 @@
|
||||
// KIND: STANDALONE_LLDB
|
||||
// LLDB_TRACE: kt47198.txt
|
||||
// FILE: kt47198.kt
|
||||
fun foo(a:Int) = print("a: $a")
|
||||
|
||||
fun main() {
|
||||
foo(33)
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
> b 4
|
||||
Breakpoint 1: where = [..]`kfun:#foo(kotlin.Int){} [..] at kt47198.kt:4:1, [..]
|
||||
> r
|
||||
> fr v
|
||||
(int) a = 33
|
||||
> q
|
||||
@@ -0,0 +1,10 @@
|
||||
// KIND: STANDALONE_LLDB
|
||||
// LLDB_TRACE: kt47198WithBody.txt
|
||||
// FILE: kt47198.kt
|
||||
fun foo(a:Int){
|
||||
print("a: ${'$'}a")
|
||||
}
|
||||
|
||||
fun main() {
|
||||
foo(33)
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
> b 4
|
||||
Breakpoint 1: where = [..]`kfun:#foo(kotlin.Int){} [..] at kt47198.kt:4:[..]
|
||||
> r
|
||||
> fr v
|
||||
(int) a = 33
|
||||
> q
|
||||
@@ -0,0 +1,10 @@
|
||||
// KIND: STANDALONE_LLDB
|
||||
// LLDB_TRACE: standalone_lldb_stepping.txt
|
||||
import kotlin.test.*
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
var x = 1
|
||||
var y = 2
|
||||
var z = x + y
|
||||
println(z)
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
> b main.kt:6
|
||||
Breakpoint 1: [..]
|
||||
> r
|
||||
Process [..] stopped
|
||||
[..] stop reason = breakpoint 1.1
|
||||
[..] at main.kt:6[..]
|
||||
3 import kotlin.test.*
|
||||
4
|
||||
5 fun main(args: Array<String>) {
|
||||
-> 6 var x = 1
|
||||
7 var y = 2
|
||||
8 var z = x + y
|
||||
9 println(z)
|
||||
> n
|
||||
Process [..] stopped
|
||||
[..] stop reason = step over
|
||||
[..] at main.kt:7[..]
|
||||
> n
|
||||
Process [..] stopped
|
||||
[..] stop reason = step over
|
||||
[..] at main.kt:8[..]
|
||||
> n
|
||||
Process [..] stopped
|
||||
[..] stop reason = step over
|
||||
[..] at main.kt:9[..]
|
||||
> q
|
||||
|
||||
|
||||
Reference in New Issue
Block a user