github.com/singlemusic/buffalo@v0.16.30/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 }