MCPcopy Create free account
hub / github.com/dop251/goja / TestStacktraceLocationThrowNativeInTheMiddle

Function TestStacktraceLocationThrowNativeInTheMiddle

runtime_test.go:2547–2598  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

2545}
2546
2547func TestStacktraceLocationThrowNativeInTheMiddle(t *testing.T) {
2548 vm := New()
2549 v, err := vm.RunString(`(function f1() {
2550 throw new Error("test")
2551 })`)
2552 if err != nil {
2553 t.Fatal(err)
2554 }
2555
2556 var f1 func()
2557 err = vm.ExportTo(v, &f1)
2558 if err != nil {
2559 t.Fatal(err)
2560 }
2561
2562 f := func() {
2563 f1()
2564 }
2565 vm.Set("f", f)
2566 _, err = vm.RunString(`
2567 function main() {
2568 (function noop() {})();
2569 return callee();
2570 }
2571 function callee() {
2572 return f();
2573 }
2574 main();
2575 `)
2576 if err == nil {
2577 t.Fatal("Expected error")
2578 }
2579 stack := err.(*Exception).stack
2580 if len(stack) != 5 {
2581 t.Fatalf("Unexpected stack len: %v", stack)
2582 }
2583 if frame := stack[0]; frame.funcName != "f1" || frame.pc != 7 {
2584 t.Fatalf("Unexpected stack frame 0: %#v", frame)
2585 }
2586 if frame := stack[1]; !strings.HasSuffix(frame.funcName.String(), "TestStacktraceLocationThrowNativeInTheMiddle.func1") {
2587 t.Fatalf("Unexpected stack frame 1: %#v", frame)
2588 }
2589 if frame := stack[2]; frame.funcName != "callee" || frame.pc != 2 {
2590 t.Fatalf("Unexpected stack frame 2: %#v", frame)
2591 }
2592 if frame := stack[3]; frame.funcName != "main" || frame.pc != 6 {
2593 t.Fatalf("Unexpected stack frame 3: %#v", frame)
2594 }
2595 if frame := stack[4]; frame.funcName != "" || frame.pc != 4 {
2596 t.Fatalf("Unexpected stack frame 4: %#v", frame)
2597 }
2598}
2599
2600func TestStrToInt64(t *testing.T) {
2601 if _, ok := strToInt64(""); ok {

Callers

nothing calls this directly

Calls 5

NewFunction · 0.85
RunStringMethod · 0.80
ExportToMethod · 0.80
SetMethod · 0.65
StringMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…