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  }