LuaJIT-to-Go/tests/stack_test.go
2025-02-26 07:00:01 -06:00

54 lines
1.2 KiB
Go

package luajit_test
import (
"strings"
"testing"
luajit "git.sharkk.net/Sky/LuaJIT-to-Go"
)
func TestLuaError(t *testing.T) {
err := &luajit.LuaError{
Code: 123,
Message: "test error",
}
expected := "lua error (code=123): test error"
if err.Error() != expected {
t.Errorf("Expected error message %q, got %q", expected, err.Error())
}
}
func TestGetStackTrace(t *testing.T) {
s := luajit.New()
defer s.Close()
// Test with debug library available
trace := s.GetStackTrace()
if !strings.Contains(trace, "stack traceback:") {
t.Errorf("Expected trace to contain 'stack traceback:', got %q", trace)
}
// Test when debug table is not available
err := s.DoString("debug = nil")
if err != nil {
t.Fatalf("Failed to set debug to nil: %v", err)
}
trace = s.GetStackTrace()
if trace != "debug table not available" {
t.Errorf("Expected 'debug table not available', got %q", trace)
}
// Test when debug.traceback is not available
err = s.DoString("debug = {}")
if err != nil {
t.Fatalf("Failed to set debug to empty table: %v", err)
}
trace = s.GetStackTrace()
if trace != "debug.traceback not available" {
t.Errorf("Expected 'debug.traceback not available', got %q", trace)
}
}