github.com/mulmuri/grassflow@v0.0.0-20231104195507-6847badb0f07/cmd/run_test.go (about)

     1  package main
     2  
     3  import (
     4  	"bytes"
     5  	"os"
     6  	"os/exec"
     7  	"strings"
     8  	"testing"
     9  )
    10  
    11  func TestMain(m *testing.M) {
    12  
    13  	if err := os.Chdir("../"); err != nil {
    14  		panic(err)
    15  	}
    16  
    17  	cmd := exec.Command("go", "build", "-o", "grassflow", "cmd/run.go")
    18  	if err := cmd.Run(); err != nil {
    19  		panic(err)
    20  	}
    21  
    22  	code := m.Run()
    23  
    24  	cmd = exec.Command("rm", "grassflow")
    25  	if err := cmd.Run(); err != nil {
    26  		panic(err)
    27  	}
    28  
    29  	os.Exit(code)
    30  }
    31  
    32  
    33  func Test_main(t *testing.T) {
    34  
    35  	tests := []struct {
    36  		name  string
    37  		args[]string
    38  		wantErr bool
    39  	}{
    40  		{
    41  			name: "grassflow execute",
    42  			args: []string{"./grassflow", "execute", "-f" ,"test/config.yml"},
    43  			wantErr: false,
    44  		},
    45  		{
    46  			name: "grassflow execute",
    47  			args: []string{"./grassflow", "execute", "-f" ,"."},
    48  			wantErr: true,
    49  		},
    50  		{
    51  			name: "grassflow rollback",
    52  			args: []string{"./grassflow", "rollback"},
    53  			wantErr: false,
    54  		},
    55  		{
    56  			name: "grassflow statistic",
    57  			args: []string{"./grassflow", "statistic"},
    58  			wantErr: false,
    59  		},
    60  		{
    61  			name: "grassflow help",
    62  			args: []string{"./grassflow", "help"},
    63  			wantErr: false,
    64  		},
    65  		{
    66  			name: "grassflow --version",
    67  			args: []string{"./grassflow", "version"},
    68  			wantErr: false,
    69  		},
    70  		{
    71  			name: "grassflow -v",
    72  			args: []string{"./grassflow", "version"},
    73  			wantErr: false,
    74  		},
    75  	}
    76  
    77  	for _, tt := range tests {
    78  		t.Run(tt.name, func(t *testing.T) {
    79  			cmd := exec.Command(tt.args[0], tt.args[1:]...)
    80  
    81  			var stderr bytes.Buffer
    82  			cmd.Stderr = &stderr
    83  		
    84  			if err := cmd.Run(); (err != nil) != tt.wantErr {
    85  				t.Errorf("failed to run %s : %v", strings.Join(tt.args, " "), stderr.String())
    86  			}
    87  		})
    88  	}
    89  }