github.com/olli-ai/jx/v2@v2.0.400-0.20210921045218-14731b4dd448/pkg/cmd/opts/kustomize_integration_test.go (about)

     1  // +build integration
     2  
     3  package opts_test
     4  
     5  import (
     6  	"os"
     7  	"path/filepath"
     8  	"testing"
     9  
    10  	"github.com/olli-ai/jx/v2/pkg/cmd/testhelpers"
    11  	"github.com/olli-ai/jx/v2/pkg/versionstream"
    12  	"github.com/stretchr/testify/assert"
    13  
    14  	"github.com/jenkins-x/jx-logging/pkg/log"
    15  	"github.com/olli-ai/jx/v2/pkg/cmd/clients"
    16  	"github.com/olli-ai/jx/v2/pkg/cmd/opts"
    17  )
    18  
    19  // TestInstallKustomize tests that Kustomize gets properly installed into JX_HOME
    20  func TestInstallKustomize(t *testing.T) {
    21  	origJXHome, testJXHome, err := testhelpers.CreateTestJxHomeDir()
    22  	assert.NoError(t, err, "failed to create a test JX Home directory")
    23  
    24  	defer func() {
    25  		err := testhelpers.CleanupTestJxHomeDir(origJXHome, testJXHome)
    26  		if err != nil {
    27  			log.Logger().Warnf("unable to remove temporary directory %s: %s", testJXHome, err)
    28  		}
    29  	}()
    30  
    31  	o := opts.NewCommonOptionsWithFactory(clients.NewFactory())
    32  	o.NoBrew = true
    33  
    34  	err = o.InstallKustomize()
    35  	assert.NoError(t, err, "error installing kustomize")
    36  
    37  	// test that tmpJXHome/bin contains kustomize binary and retrieve its version
    38  	// unset PATH to ensure no unwanted binary will be used
    39  	origPath := os.Getenv("PATH")
    40  	err = os.Setenv("PATH", "")
    41  	assert.NoError(t, err, "unable to temporarily unset PATH: %s", err)
    42  
    43  	version, err := o.Kustomize().Version()
    44  	assert.FileExists(t, filepath.Join(testJXHome, "bin", "kustomize"))
    45  	assert.NoError(t, err, "kustomize was not installed in the temp JX_HOME %s", testJXHome)
    46  
    47  	err = os.Setenv("PATH", origPath)
    48  	assert.NoError(t, err, "unable to reset PATH: %s", err)
    49  
    50  	// get the stable jx supported version of kustomize to be install
    51  	versionResolver, err := o.GetVersionResolver()
    52  	assert.NoError(t, err, "unable to retrieve version resolver")
    53  
    54  	stableVersion, err := versionResolver.StableVersion(versionstream.KindPackage, "kustomize")
    55  	assert.NoError(t, err, "unable to retrieve stable version for kustomize from version resolver")
    56  	assert.Contains(t, version, stableVersion.Version)
    57  }