@@ -13,10 +13,8 @@ import (
1313 "os/exec"
1414 "path/filepath"
1515 "reflect"
16- "regexp"
1716 "sort"
1817 "strings"
19- "sync/atomic"
2018 "testing"
2119
2220 "go.starlark.net/internal/chunkedfile"
@@ -982,11 +980,9 @@ func TestCancel(t *testing.T) {
982980 // expected backtrace.
983981 {
984982 thread := new (starlark.Thread )
985- var ready atomic.Bool
986983 predeclared := starlark.StringDict {
987- "fibonacci" : fib {},
988- "ready" : starlark .NewBuiltin ("ready" , func (_ * starlark.Thread , _ * starlark.Builtin , _ starlark.Tuple , _ []starlark.Tuple ) (starlark.Value , error ) {
989- ready .Store (true )
984+ "cancel" : starlark .NewBuiltin ("cancel" , func (thread * starlark.Thread , _ * starlark.Builtin , _ starlark.Tuple , _ []starlark.Tuple ) (starlark.Value , error ) {
985+ thread .Cancel ("nope" )
990986 return starlark .True , nil
991987 }),
992988 }
@@ -998,16 +994,10 @@ def g():
998994 h()
999995
1000996def h():
1001- for x in fibonacci:
1002- ready()
997+ cancel()
1003998
1004999f()
10051000`
1006- go func () {
1007- for ! ready .Load () {
1008- }
1009- thread .Cancel ("nope" )
1010- }()
10111001 _ , err := starlark .ExecFile (thread , "cancel.star" , src , predeclared )
10121002 if fmt .Sprint (err ) != "Starlark computation canceled: nope" {
10131003 t .Errorf ("ExecFile returned error %q, want cancellation" , err )
@@ -1020,11 +1010,12 @@ f()
10201010 t .Errorf ("ExecFile: expected *starlark.EvalError; got %T, %v" , err , err )
10211011 }
10221012 expectedBacktace := `
1023- cancel.star:12 :2: in <toplevel>
1013+ cancel.star:11 :2: in <toplevel>
10241014 cancel.star:3:3: in f
10251015 cancel.star:6:3: in g
1016+ cancel.star:9:8: in h
10261017`
1027- if ! strings .Contains (evalErr .Backtrace (), expectedBacktace ) || ! regexp . MustCompile ( `cancel\.star:(10:\d+|9:\d+): in h` ). MatchString ( evalErr . Backtrace ()) {
1018+ if ! strings .Contains (evalErr .Backtrace (), expectedBacktace ) {
10281019 t .Errorf ("ExecFile: expected backtrace to include calls to f(), g(), and h(); got %s" , evalErr .Backtrace ())
10291020 }
10301021 }
@@ -1085,11 +1076,10 @@ func TestCancelWithError(t *testing.T) {
10851076 // expected backtrace.
10861077 {
10871078 thread := new (starlark.Thread )
1088- var ready atomic. Bool
1079+ cancelErr := errors . New ( "nope" )
10891080 predeclared := starlark.StringDict {
1090- "fibonacci" : fib {},
1091- "ready" : starlark .NewBuiltin ("ready" , func (_ * starlark.Thread , _ * starlark.Builtin , _ starlark.Tuple , _ []starlark.Tuple ) (starlark.Value , error ) {
1092- ready .Store (true )
1081+ "cancel" : starlark .NewBuiltin ("cancel" , func (thread * starlark.Thread , _ * starlark.Builtin , _ starlark.Tuple , _ []starlark.Tuple ) (starlark.Value , error ) {
1082+ thread .CancelWithError (cancelErr )
10931083 return starlark .True , nil
10941084 }),
10951085 }
@@ -1101,17 +1091,10 @@ def g():
11011091 h()
11021092
11031093def h():
1104- for x in fibonacci:
1105- ready()
1094+ cancel()
11061095
11071096f()
11081097`
1109- cancelErr := errors .New ("nope" )
1110- go func () {
1111- for ! ready .Load () {
1112- }
1113- thread .CancelWithError (cancelErr )
1114- }()
11151098 _ , err := starlark .ExecFile (thread , "cancel.star" , src , predeclared )
11161099 if fmt .Sprint (err ) != "Starlark computation canceled: nope" {
11171100 t .Errorf ("ExecFile returned error %q, want cancellation" , err )
@@ -1127,11 +1110,12 @@ f()
11271110 t .Errorf ("ExecFile: expected *starlark.EvalError; got %T, %v" , err , err )
11281111 }
11291112 expectedBacktace := `
1130- cancel.star:12 :2: in <toplevel>
1113+ cancel.star:11 :2: in <toplevel>
11311114 cancel.star:3:3: in f
11321115 cancel.star:6:3: in g
1116+ cancel.star:9:8: in h
11331117`
1134- if ! strings .Contains (evalErr .Backtrace (), expectedBacktace ) || ! regexp . MustCompile ( `cancel\.star:(10:\d+|9:\d+): in h` ). MatchString ( evalErr . Backtrace ()) {
1118+ if ! strings .Contains (evalErr .Backtrace (), expectedBacktace ) {
11351119 t .Errorf ("ExecFile: expected backtrace to include calls to f(), g(), and h(); got %s" , evalErr .Backtrace ())
11361120 }
11371121 }
0 commit comments