diff --git a/lib/recent.go b/lib/recent.go index 6033503e..c3fd2596 100644 --- a/lib/recent.go +++ b/lib/recent.go @@ -41,11 +41,10 @@ func prependRecentVersionToList(version, installPath, distribution string, r *Re } sliceToCheck = append([]string{version}, sliceToCheck...) - //TODO delete files that are falling of the first three slice elements - //if len(sliceToCheck) > 3 { - // deleteDownloadedBinaries(installPath, distribution, sliceToCheck[3:]) - // sliceToCheck = sliceToCheck[0:2] - //} + if len(sliceToCheck) > 3 { + deleteDownloadedBinaries(installPath, distribution, sliceToCheck[3:]) + sliceToCheck = sliceToCheck[0:2] + } if distribution == distributionTerraform { r.Terraform = sliceToCheck diff --git a/lib/recent_test.go b/lib/recent_test.go index 42c99e58..0c7f80a8 100644 --- a/lib/recent_test.go +++ b/lib/recent_test.go @@ -1,9 +1,11 @@ package lib import ( + "errors" "github.com/stretchr/testify/assert" "os" "path/filepath" + "strconv" "testing" ) @@ -124,3 +126,25 @@ func Test_prependNewVersion(t *testing.T) { assert.Equal(t, "1.2.3", recentFileData.Terraform[1]) assert.Equal(t, "4.5.6", recentFileData.Terraform[2]) } + +func Test_deleteDownloadedBinaries(t *testing.T) { + logger = InitLogger("DEBUG") + temp, err := os.MkdirTemp("", "recent-test") + if err != nil { + t.Errorf("Could not create temporary directory") + } + defer func(path string) { + _ = os.RemoveAll(path) + }(temp) + // Create 4 file stubs + for i := 0; i < 4; i++ { + _, err = os.Create(filepath.Join(temp, ConvertExecutableExt(TerraformPrefix+strconv.Itoa(i)+".0.0"))) + if err != nil { + t.Error("Could not create dummy file") + t.Error(err) + } + } + deleteDownloadedBinaries(temp, distributionTerraform, []string{"4.0.0"}) + _, err = os.Stat(filepath.Join(temp, ConvertExecutableExt(TerraformPrefix+"4.0.0"))) + assert.True(t, errors.Is(err, os.ErrNotExist)) +}