@@ -2,6 +2,7 @@ package lua
2
2
3
3
import (
4
4
"fmt"
5
+ "strings"
5
6
"testing"
6
7
)
7
8
@@ -155,7 +156,7 @@ func TestError(t *testing.T) {
155
156
t .Error ("error handler received no arguments" )
156
157
} else if errorMessage , ok := ToString (l , - 1 ); ! ok {
157
158
t .Errorf ("error handler received %s instead of string" , TypeNameOf (l , - 1 ))
158
- } else if errorMessage != program + ":1: error" {
159
+ } else if errorMessage != chunkID ( program ) + ":1: error" {
159
160
t .Errorf ("error handler received '%s' instead of 'error'" , errorMessage )
160
161
}
161
162
errorHandled = true
@@ -168,6 +169,35 @@ func TestError(t *testing.T) {
168
169
}
169
170
}
170
171
172
+ func TestErrorf (t * testing.T ) {
173
+ l := NewState ()
174
+ BaseOpen (l )
175
+ program := "-- script that is bigger than the max ID size\n helper()\n " + strings .Repeat ("--" , idSize )
176
+ expectedErrorMessage := chunkID (program ) + ":2: error"
177
+ PushGoFunction (l , func (l * State ) int {
178
+ Errorf (l , "error" )
179
+ return 0
180
+ })
181
+ SetGlobal (l , "helper" )
182
+ errorHandled := false
183
+ PushGoFunction (l , func (l * State ) int {
184
+ if Top (l ) == 0 {
185
+ t .Error ("error handler received no arguments" )
186
+ } else if errorMessage , ok := ToString (l , - 1 ); ! ok {
187
+ t .Errorf ("error handler received %s instead of string" , TypeNameOf (l , - 1 ))
188
+ } else if errorMessage != expectedErrorMessage {
189
+ t .Errorf ("error handler received '%s' instead of '%s'" , errorMessage , expectedErrorMessage )
190
+ }
191
+ errorHandled = true
192
+ return 1
193
+ })
194
+ LoadString (l , program )
195
+ ProtectedCall (l , 0 , 0 , - 2 )
196
+ if ! errorHandled {
197
+ t .Error ("error not handled" )
198
+ }
199
+ }
200
+
171
201
func Example () {
172
202
type step struct {
173
203
name string
0 commit comments