summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh MacDonald <josh.macdonald@gmail.com>2015-12-26 21:47:22 -0800
committerJosh MacDonald <josh.macdonald@gmail.com>2015-12-26 21:47:22 -0800
commit2446f55fef1d9a0dcb9283a34bb540689dda7e62 (patch)
treee116b19bd07b0997a27746418c45727f909a111d
parentd6e344ee71da1727e52d8b9f127ccd0946b04a18 (diff)
Support Panic in the main routine
-rw-r--r--xdelta3/go/src/xdelta/run.go19
1 files changed, 9 insertions, 10 deletions
diff --git a/xdelta3/go/src/xdelta/run.go b/xdelta3/go/src/xdelta/run.go
index 3b07178..6523a1c 100644
--- a/xdelta3/go/src/xdelta/run.go
+++ b/xdelta3/go/src/xdelta/run.go
@@ -52,17 +52,16 @@ func (r *Runner) Cleanup() {
52 52
53func (r *Runner) RunTest(name string, f func (t *TestGroup)) { 53func (r *Runner) RunTest(name string, f func (t *TestGroup)) {
54 t := r.newTestGroup(name) 54 t := r.newTestGroup(name)
55 var rec interface{} 55 c := make(chan interface{})
56 defer func() { 56 go func() {
57 if r := recover(); r != nil { 57 defer func() {
58 fmt.Println("PANIC in ", name, ": ", r) 58 c <- recover()
59 rec = r 59 }()
60 } else { 60 fmt.Println("Testing", name, "...")
61 // Goexit 61 f(t)
62 } 62 c <- nil
63 }() 63 }()
64 fmt.Println("Testing", name, "...") 64 rec := <- c
65 f(t)
66 if t.errors == nil && rec == nil { 65 if t.errors == nil && rec == nil {
67 fmt.Println("Success:", name) 66 fmt.Println("Success:", name)
68 } else { 67 } else {