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 }