github.com/blystad/deis@v0.11.0/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 if err := utils.CreateFile(cfg.ExampleApp); err != nil { 45 t.Fatal(err) 46 } 47 utils.Execute(t, gitAddCmd, cfg, false, "") 48 utils.Execute(t, gitCommitCmd, cfg, false, "") 49 utils.Execute(t, gitPushCmd, cfg, false, "") 50 if err := utils.Chdir(".."); err != nil { 51 t.Fatal(err) 52 } 53 return cfg 54 } 55 56 func buildsListTest(t *testing.T, params *utils.DeisTestConfig) { 57 cmd := buildsListCmd 58 var cmdBuf bytes.Buffer 59 tmpl := template.Must(template.New("cmd").Parse(cmd)) 60 if err := tmpl.Execute(&cmdBuf, params); err != nil { 61 t.Fatal(err) 62 } 63 cmdString := cmdBuf.String() 64 cmdl := exec.Command("sh", "-c", utils.Deis+cmdString) 65 stdout, _, err := utils.RunCommandWithStdoutStderr(cmdl) 66 if err != nil { 67 t.Fatal(err) 68 } 69 ImageID := strings.Split(stdout.String(), "\n")[2] 70 params.ImageID = strings.Fields(ImageID)[0] 71 } 72 73 // buildsCreateTest uses the `deis builds:create` (or `deis pull`) command 74 // to promote a build from an existing docker image. 75 func buildsCreateTest(t *testing.T, params *utils.DeisTestConfig) { 76 params.AppName = "deispullsample" 77 params.ImageID = "deis/example-dockerfile-python:latest" 78 params.ExampleApp = "example-deis-pull" 79 if err := os.Mkdir(params.ExampleApp, 0755); err != nil { 80 t.Fatal(err) 81 } 82 if err := utils.Chdir(params.ExampleApp); err != nil { 83 t.Fatal(err) 84 } 85 utils.Execute(t, appsCreateCmd, params, false, "") 86 utils.Execute(t, buildsCreateCmd, params, false, "") 87 if err := utils.Chdir(".."); err != nil { 88 t.Fatal(err) 89 } 90 }