func RunSpec(dir string, pkg *tp.Package, eng tritium.Engine, logger *golog.Logger) (result *Result) { result = NewResult() defer func() { //log.Println("done") // Println executes normally even in there is a panic if x := recover(); x != nil { err, ok := x.(error) if ok { logger.Errorf(dir + " === " + err.Error() + "\n\n" + string(debug.Stack())) } else { logger.Errorf(dir + " === " + x.(string) + "\n\n" + string(debug.Stack())) } } print(result.CharStatus()) }() spec, err := LoadSpec(dir, pkg) if err != nil { result.Error(dir, err.Error()) } else { d, _ := time.ParseDuration("1m") result.Merge(spec.Compare(eng.Run(spec.Script, nil, spec.Input, spec.Vars, time.Now().Add(d), "test", "test", "test", false))) } return }