github.com/segakazzz/buffalo@v0.16.22-0.20210119082501-1f52048d3feb/buffalo/cmd/internal/integration/integration_test.go (about)

     1  // +build integration_test
     2  
     3  package integration
     4  
     5  import (
     6  	"os"
     7  	"path/filepath"
     8  
     9  	"github.com/gobuffalo/buffalo/buffalo/cmd"
    10  	"github.com/gobuffalo/envy"
    11  	"github.com/gobuffalo/packr/v2/jam"
    12  	"github.com/markbates/safe"
    13  )
    14  
    15  func call(args []string, fn func(dir string)) error {
    16  	jam.Clean()
    17  	defer jam.Clean()
    18  	ogp, err := envy.MustGet("GOPATH")
    19  	defer envy.MustSet("GOPATH", ogp)
    20  	gp := os.TempDir()
    21  	err = envy.MustSet("GOPATH", gp)
    22  	if err != nil {
    23  		return err
    24  	}
    25  
    26  	if err != nil {
    27  		return err
    28  	}
    29  	if fn == nil {
    30  		if err := exec(args); err != nil {
    31  			return err
    32  		}
    33  	}
    34  	tdir := filepath.Join(gp, "src", "github.com", "gobuffalo", "testapp")
    35  	defer os.RemoveAll(tdir)
    36  	if err != nil {
    37  		return err
    38  	}
    39  	if err := os.RemoveAll(tdir); err != nil {
    40  		return err
    41  	}
    42  	if err := os.MkdirAll(tdir, 0755); err != nil {
    43  		return err
    44  	}
    45  
    46  	pwd, err := os.Getwd()
    47  	if err != nil {
    48  		return err
    49  	}
    50  	os.Chdir(tdir)
    51  	os.Setenv("PWD", tdir)
    52  	defer os.Chdir(pwd)
    53  	defer os.Setenv("PWD", pwd)
    54  
    55  	if err := exec(args); err != nil {
    56  		return err
    57  	}
    58  	return safe.Run(func() {
    59  		fn(tdir)
    60  	})
    61  }
    62  
    63  func exec(args []string) error {
    64  	c := cmd.RootCmd
    65  	c.SetArgs(args)
    66  	return c.Execute()
    67  }