github.com/vektra/tachyon@v0.0.0-20150921164542-0da4f3861aef/test.go (about) 1 package tachyon 2 3 import ( 4 "bytes" 5 "fmt" 6 "os" 7 ) 8 9 func RunCapture(path string) (*Runner, string, error) { 10 cfg := &Config{ShowCommandOutput: false} 11 12 ns := NewNestedScope(nil) 13 14 env := NewEnv(ns, cfg) 15 defer env.Cleanup() 16 17 playbook, err := NewPlaybook(env, path) 18 if err != nil { 19 fmt.Printf("Error loading plays: %s\n", err) 20 return nil, "", err 21 } 22 23 var buf bytes.Buffer 24 25 reporter := CLIReporter{out: &buf} 26 27 runner := NewRunner(env, playbook.Plays) 28 runner.SetReport(&reporter) 29 30 cur, err := os.Getwd() 31 if err != nil { 32 return nil, "", err 33 } 34 35 defer os.Chdir(cur) 36 os.Chdir(playbook.baseDir) 37 38 err = runner.Run(env) 39 40 if err != nil { 41 return nil, "", err 42 } 43 44 return runner, buf.String(), nil 45 }