github.com/JarrahG/buffalocli@v0.0.0-20230801092127-b85bfd5d395a/internal/testhelpers/testhelpers_test.go (about)

     1  package testhelpers_test
     2  
     3  import (
     4  	"errors"
     5  	"os"
     6  	"os/exec"
     7  	"path/filepath"
     8  	"runtime"
     9  	"testing"
    10  
    11  	"github.com/JarrahG/buffalocli/internal/testhelpers"
    12  	"github.com/stretchr/testify/require"
    13  )
    14  
    15  func Test_EnsureBuffaloCMD(t *testing.T) {
    16  	r := require.New(t)
    17  
    18  	binary := "buffalointegrationtests"
    19  	if runtime.GOOS == "windows" {
    20  		binary += ".exe"
    21  	}
    22  
    23  	path := filepath.Join(os.TempDir(), binary)
    24  	os.Remove(path)
    25  
    26  	r.NoError(testhelpers.EnsureBuffaloCMD(t))
    27  	r.FileExists(path)
    28  }
    29  
    30  func Test_InstallOldBuffaloCMD(t *testing.T) {
    31  	if runtime.GOOS != "linux" {
    32  		// this test calls api.github.com too much.
    33  		// no reason for linux, but just reduce the calls as 1/3
    34  		t.Skip("skipping Test_InstallOldBuffaloCMD (non-linux env)")
    35  	}
    36  
    37  	tt := []struct {
    38  		name    string
    39  		version string
    40  		err     error
    41  	}{
    42  		{
    43  			name:    "non-existing version",
    44  			version: "v0.16.40",
    45  			err:     errors.New("unknown gobuffalo cli version v0.16.40"),
    46  		},
    47  		{
    48  			name:    "existing version",
    49  			version: "v0.18.1",
    50  			err:     nil,
    51  		},
    52  		{
    53  			name:    "existing old version",
    54  			version: "v0.16.27",
    55  			err:     nil,
    56  		},
    57  	}
    58  
    59  	for _, tc := range tt {
    60  		t.Run(tc.name, func(t *testing.T) {
    61  			r := require.New(t)
    62  
    63  			err := testhelpers.InstallOldBuffaloCMD(t, tc.version)
    64  			if tc.err != nil {
    65  				r.EqualError(err, tc.err.Error())
    66  				return
    67  			}
    68  
    69  			r.NoError(err)
    70  			cmd := exec.Command("buffalo", "version")
    71  			out, err := cmd.CombinedOutput()
    72  			r.NoError(err)
    73  			r.Contains(string(out), tc.version)
    74  		})
    75  	}
    76  }