github.com/misfo/deis@v1.0.1-0.20141111224634-e0eee0392b8a/tests/builds_test.go (about) 1 // +build integration 2 3 package tests 4 5 import ( 6 "bytes" 7 "os" 8 "os/exec" 9 "strings" 10 "testing" 11 "text/template" 12 "time" 13 14 "github.com/deis/deis/tests/utils" 15 ) 16 17 var ( 18 buildsListCmd = "builds:list --app={{.AppName}}" 19 buildsCreateCmd = "builds:create {{.ImageID}} --app={{.AppName}}" 20 ) 21 22 func TestBuilds(t *testing.T) { 23 params := buildSetup(t) 24 buildsListTest(t, params) 25 appsOpenTest(t, params) 26 utils.AppsDestroyTest(t, params) 27 buildsCreateTest(t, params) 28 // TODO: router needs a few seconds to wake up here--fixme! 29 time.Sleep(5000 * time.Millisecond) 30 appsOpenTest(t, params) 31 utils.AppsDestroyTest(t, params) 32 } 33 34 func buildSetup(t *testing.T) *utils.DeisTestConfig { 35 cfg := utils.GetGlobalConfig() 36 cfg.AppName = "buildsample" 37 utils.Execute(t, authLoginCmd, cfg, false, "") 38 utils.Execute(t, gitCloneCmd, cfg, false, "") 39 if err := utils.Chdir(cfg.ExampleApp); err != nil { 40 t.Fatal(err) 41 } 42 utils.Execute(t, appsCreateCmd, cfg, false, "") 43 utils.Execute(t, gitPushCmd, cfg, false, "") 44 utils.Execute(t, "git commit --allow-empty -m bump", cfg, false, "") 45 utils.Execute(t, gitPushCmd, cfg, false, "") 46 if err := utils.Chdir(".."); err != nil { 47 t.Fatal(err) 48 } 49 return cfg 50 } 51 52 func buildsListTest(t *testing.T, params *utils.DeisTestConfig) { 53 cmd := buildsListCmd 54 var cmdBuf bytes.Buffer 55 tmpl := template.Must(template.New("cmd").Parse(cmd)) 56 if err := tmpl.Execute(&cmdBuf, params); err != nil { 57 t.Fatal(err) 58 } 59 cmdString := cmdBuf.String() 60 cmdl := exec.Command("sh", "-c", utils.Deis+cmdString) 61 stdout, _, err := utils.RunCommandWithStdoutStderr(cmdl) 62 if err != nil { 63 t.Fatal(err) 64 } 65 ImageID := strings.Split(stdout.String(), "\n")[2] 66 params.ImageID = strings.Fields(ImageID)[0] 67 } 68 69 // buildsCreateTest uses the `deis builds:create` (or `deis pull`) command 70 // to promote a build from an existing docker image. 71 func buildsCreateTest(t *testing.T, params *utils.DeisTestConfig) { 72 params.AppName = "deispullsample" 73 params.ImageID = "deis/example-go:latest" 74 params.ExampleApp = "example-deis-pull" 75 if err := os.Mkdir(params.ExampleApp, 0755); err != nil { 76 t.Fatal(err) 77 } 78 if err := utils.Chdir(params.ExampleApp); err != nil { 79 t.Fatal(err) 80 } 81 utils.Execute(t, appsCreateCmdNoRemote, params, false, "") 82 utils.Execute(t, buildsCreateCmd, params, false, "") 83 if err := utils.Chdir(".."); err != nil { 84 t.Fatal(err) 85 } 86 }