github.com/ianfoo/lab@v0.9.5-0.20180123060006-5ed79f2ccfc7/cmd/mr_test.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 "os/exec" 6 "strings" 7 "testing" 8 9 "github.com/stretchr/testify/require" 10 ) 11 12 func Test_mrCmd(t *testing.T) { 13 t.Parallel() 14 repo := copyTestRepo(t) 15 var mrID string 16 t.Run("create", func(t *testing.T) { 17 git := exec.Command("git", "checkout", "mrtest") 18 git.Dir = repo 19 b, err := git.CombinedOutput() 20 if err != nil { 21 t.Log(string(b)) 22 t.Fatal(err) 23 } 24 25 cmd := exec.Command("../lab_bin", "mr", "create", "lab-testing", 26 "-m", "mr title", 27 "-m", "mr description", 28 ) 29 cmd.Dir = repo 30 31 b, _ = cmd.CombinedOutput() 32 out := string(b) 33 t.Log(out) 34 require.Contains(t, out, "https://gitlab.com/lab-testing/test/merge_requests") 35 36 i := strings.Index(out, "/diffs\n") 37 mrID = strings.TrimPrefix(out[:i], "https://gitlab.com/lab-testing/test/merge_requests/") 38 t.Log(mrID) 39 }) 40 t.Run("show", func(t *testing.T) { 41 if mrID == "" { 42 t.Skip("mrID is empty, create likely failed") 43 } 44 cmd := exec.Command("../lab_bin", "mr", "show", "lab-testing", mrID) 45 cmd.Dir = repo 46 47 b, err := cmd.CombinedOutput() 48 if err != nil { 49 t.Log(string(b)) 50 t.Fatal(err) 51 } 52 out := string(b) 53 require.Contains(t, out, "Project: lab-testing/test\n") 54 require.Contains(t, out, "Branches: mrtest->master\n") 55 require.Contains(t, out, "Status: Open\n") 56 require.Contains(t, out, fmt.Sprintf("#%s mr title", mrID)) 57 require.Contains(t, out, "===================================\nmr description") 58 require.Contains(t, out, fmt.Sprintf("WebURL: https://gitlab.com/lab-testing/test/merge_requests/%s", mrID)) 59 }) 60 t.Run("delete", func(t *testing.T) { 61 if mrID == "" { 62 t.Skip("mrID is empty, create likely failed") 63 } 64 cmd := exec.Command("../lab_bin", "mr", "lab-testing", "-d", mrID) 65 cmd.Dir = repo 66 67 b, err := cmd.CombinedOutput() 68 if err != nil { 69 t.Log(string(b)) 70 t.Fatal(err) 71 } 72 require.Contains(t, string(b), fmt.Sprintf("Merge Request #%s closed", mrID)) 73 }) 74 } 75 76 func Test_mrCmd_noArgs(t *testing.T) { 77 repo := copyTestRepo(t) 78 cmd := exec.Command("../lab_bin", "mr") 79 cmd.Dir = repo 80 81 b, err := cmd.CombinedOutput() 82 if err != nil { 83 t.Log(string(b)) 84 t.Fatal(err) 85 } 86 require.Contains(t, string(b), `Usage: 87 lab mr [flags] 88 lab mr [command]`) 89 }