gitlab.com/lab-cli/lab@v0.14.0/cmd/ci_trace_test.go (about)

     1  package cmd
     2  
     3  import (
     4  	"os/exec"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func Test_ciTrace(t *testing.T) {
    11  	t.Parallel()
    12  	repo := copyTestRepo(t)
    13  	cmd := exec.Command("../lab_bin", "fetch", "origin")
    14  	cmd.Dir = repo
    15  	if b, err := cmd.CombinedOutput(); err != nil {
    16  		t.Log(string(b))
    17  		t.Fatal(err)
    18  	}
    19  
    20  	cmd = exec.Command("../lab_bin", "checkout", "origin/ci_test_pipeline")
    21  	cmd.Dir = repo
    22  	if b, err := cmd.CombinedOutput(); err != nil {
    23  		t.Log(string(b))
    24  		t.Fatal(err)
    25  	}
    26  
    27  	cmd = exec.Command("../lab_bin", "checkout", "-b", "ci_test_pipeline")
    28  	cmd.Dir = repo
    29  	if b, err := cmd.CombinedOutput(); err != nil {
    30  		t.Log(string(b))
    31  		t.Fatal(err)
    32  	}
    33  
    34  	tests := []struct {
    35  		desc           string
    36  		args           []string
    37  		assertContains func(t *testing.T, out string)
    38  	}{
    39  		{
    40  			desc: "noargs",
    41  			args: []string{},
    42  			assertContains: func(t *testing.T, out string) {
    43  				assert.Contains(t, out, "Showing logs for deploy10")
    44  				assert.Contains(t, out, "Checking out 09b519cb as ci_test_pipeline...")
    45  				assert.Contains(t, out, "For example you might run an update here or install a build dependency")
    46  				assert.Contains(t, out, "$ echo \"Or perhaps you might print out some debugging details\"")
    47  				assert.Contains(t, out, "Job succeeded")
    48  			},
    49  		},
    50  		{
    51  			desc: "arg job name",
    52  			args: []string{"origin", "deploy1"},
    53  			assertContains: func(t *testing.T, out string) {
    54  				assert.Contains(t, out, "Showing logs for deploy1")
    55  				assert.Contains(t, out, "Checking out 09b519cb as ci_test_pipeline...")
    56  				assert.Contains(t, out, "For example you might run an update here or install a build dependency")
    57  				assert.Contains(t, out, "$ echo \"Or perhaps you might print out some debugging details\"")
    58  				assert.Contains(t, out, "Job succeeded")
    59  			},
    60  		},
    61  		{
    62  			desc: "explicit branch:job",
    63  			args: []string{"origin", "ci_test_pipeline:deploy1"},
    64  			assertContains: func(t *testing.T, out string) {
    65  				assert.Contains(t, out, "Showing logs for deploy1")
    66  				assert.Contains(t, out, "Checking out 09b519cb as ci_test_pipeline...")
    67  				assert.Contains(t, out, "For example you might do some cleanup here")
    68  				assert.Contains(t, out, "Job succeeded")
    69  			},
    70  		},
    71  	}
    72  
    73  	for _, test := range tests {
    74  		test := test
    75  		t.Run(test.desc, func(t *testing.T) {
    76  			t.Parallel()
    77  			cmd = exec.Command("../lab_bin", append([]string{"ci", "trace"}, test.args...)...)
    78  			cmd.Dir = repo
    79  
    80  			b, err := cmd.CombinedOutput()
    81  			if err != nil {
    82  				t.Log(string(b))
    83  				t.Fatal(err)
    84  			}
    85  			out := string(b)
    86  			test.assertContains(t, out)
    87  		})
    88  	}
    89  
    90  }