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

     1  // +build integration
     2  
     3  package step_test
     4  
     5  import (
     6  	"io/ioutil"
     7  	"os"
     8  	"path"
     9  	"testing"
    10  
    11  	step2 "github.com/olli-ai/jx/v2/pkg/cmd/opts/step"
    12  	"github.com/olli-ai/jx/v2/pkg/cmd/step"
    13  	"github.com/olli-ai/jx/v2/pkg/cmd/testhelpers"
    14  
    15  	"github.com/olli-ai/jx/v2/pkg/cmd/opts"
    16  	"github.com/olli-ai/jx/v2/pkg/gits"
    17  	"github.com/olli-ai/jx/v2/pkg/tests"
    18  	"github.com/olli-ai/jx/v2/pkg/util"
    19  	"github.com/stretchr/testify/assert"
    20  )
    21  
    22  func TestSetVersionJavascript(t *testing.T) {
    23  	originalJxHome, tempJxHome, err := testhelpers.CreateTestJxHomeDir()
    24  	assert.NoError(t, err)
    25  	defer func() {
    26  		err := testhelpers.CleanupTestJxHomeDir(originalJxHome, tempJxHome)
    27  		assert.NoError(t, err)
    28  	}()
    29  	originalKubeCfg, tempKubeCfg, err := testhelpers.CreateTestKubeConfigDir()
    30  	assert.NoError(t, err)
    31  	defer func() {
    32  		err := testhelpers.CleanupTestKubeConfigDir(originalKubeCfg, tempKubeCfg)
    33  		assert.NoError(t, err)
    34  	}()
    35  
    36  	f, err := ioutil.TempDir("", "test-set-version")
    37  	assert.NoError(t, err)
    38  
    39  	testData := path.Join("test_data", "next_version", "javascript")
    40  	_, err = os.Stat(testData)
    41  	assert.NoError(t, err)
    42  
    43  	err = util.CopyDir(testData, f, true)
    44  	assert.NoError(t, err)
    45  
    46  	git := gits.NewGitCLI()
    47  	err = git.Init(f)
    48  	assert.NoError(t, err)
    49  
    50  	o := step.StepNextVersionOptions{
    51  		StepOptions: step2.StepOptions{
    52  			CommonOptions: &opts.CommonOptions{},
    53  		},
    54  	}
    55  	o.Out = tests.Output()
    56  	o.Dir = f
    57  	o.Filename = "package.json"
    58  	o.NewVersion = "1.2.3"
    59  	err = o.SetVersion()
    60  	assert.NoError(t, err)
    61  
    62  	// root file
    63  	updatedFile, err := util.LoadBytes(o.Dir, o.Filename)
    64  	testFile, err := util.LoadBytes(testData, "expected_package.json")
    65  
    66  	assert.Equal(t, string(testFile), string(updatedFile), "replaced version")
    67  }
    68  
    69  func TestSetVersionChart(t *testing.T) {
    70  	originalJxHome, tempJxHome, err := testhelpers.CreateTestJxHomeDir()
    71  	assert.NoError(t, err)
    72  	defer func() {
    73  		err := testhelpers.CleanupTestJxHomeDir(originalJxHome, tempJxHome)
    74  		assert.NoError(t, err)
    75  	}()
    76  	originalKubeCfg, tempKubeCfg, err := testhelpers.CreateTestKubeConfigDir()
    77  	assert.NoError(t, err)
    78  	defer func() {
    79  		err := testhelpers.CleanupTestKubeConfigDir(originalKubeCfg, tempKubeCfg)
    80  		assert.NoError(t, err)
    81  	}()
    82  
    83  	f, err := ioutil.TempDir("", "test-set-version")
    84  	assert.NoError(t, err)
    85  
    86  	testData := path.Join("test_data", "next_version", "helm")
    87  	_, err = os.Stat(testData)
    88  	assert.NoError(t, err)
    89  
    90  	err = util.CopyDir(testData, f, true)
    91  	assert.NoError(t, err)
    92  
    93  	git := gits.NewGitCLI()
    94  	err = git.Init(f)
    95  	assert.NoError(t, err)
    96  
    97  	o := step.StepNextVersionOptions{
    98  		StepOptions: step2.StepOptions{
    99  			CommonOptions: &opts.CommonOptions{},
   100  		},
   101  	}
   102  	o.Out = tests.Output()
   103  	o.Dir = f
   104  	o.Filename = "Chart.yaml"
   105  	o.NewVersion = "1.2.3"
   106  	err = o.SetVersion()
   107  	assert.NoError(t, err)
   108  
   109  	// root file
   110  	updatedFile, err := util.LoadBytes(o.Dir, o.Filename)
   111  	testFile, err := util.LoadBytes(testData, "expected_Chart.yaml")
   112  
   113  	assert.Equal(t, string(testFile), string(updatedFile), "replaced version")
   114  }
   115  
   116  func TestSetVersionChartHelm3(t *testing.T) {
   117  	originalJxHome, tempJxHome, err := testhelpers.CreateTestJxHomeDir()
   118  	assert.NoError(t, err)
   119  	defer func() {
   120  		err := testhelpers.CleanupTestJxHomeDir(originalJxHome, tempJxHome)
   121  		assert.NoError(t, err)
   122  	}()
   123  	originalKubeCfg, tempKubeCfg, err := testhelpers.CreateTestKubeConfigDir()
   124  	assert.NoError(t, err)
   125  	defer func() {
   126  		err := testhelpers.CleanupTestKubeConfigDir(originalKubeCfg, tempKubeCfg)
   127  		assert.NoError(t, err)
   128  	}()
   129  
   130  	f, err := ioutil.TempDir("", "test-set-version")
   131  	assert.NoError(t, err)
   132  
   133  	testData := path.Join("test_data", "next_version", "helm3")
   134  	_, err = os.Stat(testData)
   135  	assert.NoError(t, err)
   136  
   137  	err = util.CopyDir(testData, f, true)
   138  	assert.NoError(t, err)
   139  
   140  	git := gits.NewGitCLI()
   141  	err = git.Init(f)
   142  	assert.NoError(t, err)
   143  
   144  	o := step.StepNextVersionOptions{
   145  		StepOptions: step2.StepOptions{
   146  			CommonOptions: &opts.CommonOptions{},
   147  		},
   148  	}
   149  	o.Out = tests.Output()
   150  	o.Dir = f
   151  	o.Filename = "Chart.yaml"
   152  	o.NewVersion = "1.2.3"
   153  	err = o.SetVersion()
   154  	assert.NoError(t, err)
   155  
   156  	// root file
   157  	updatedFile, err := util.LoadBytes(o.Dir, o.Filename)
   158  	testFile, err := util.LoadBytes(testData, "expected_Chart.yaml")
   159  
   160  	assert.Equal(t, string(testFile), string(updatedFile), "replaced version")
   161  }
   162  
   163  func TestRunChartsDir(t *testing.T) {
   164  	originalJxHome, tempJxHome, err := testhelpers.CreateTestJxHomeDir()
   165  	assert.NoError(t, err)
   166  	defer func() {
   167  		err := testhelpers.CleanupTestJxHomeDir(originalJxHome, tempJxHome)
   168  		assert.NoError(t, err)
   169  	}()
   170  	originalKubeCfg, tempKubeCfg, err := testhelpers.CreateTestKubeConfigDir()
   171  	assert.NoError(t, err)
   172  	defer func() {
   173  		err := testhelpers.CleanupTestKubeConfigDir(originalKubeCfg, tempKubeCfg)
   174  		assert.NoError(t, err)
   175  	}()
   176  
   177  	f, err := ioutil.TempDir("", "test-run-chartsdir")
   178  	assert.NoError(t, err)
   179  
   180  	testData := path.Join("test_data", "next_version", "charts")
   181  	_, err = os.Stat(testData)
   182  	assert.NoError(t, err)
   183  
   184  	err = util.CopyDir(testData, f, true)
   185  	assert.NoError(t, err)
   186  
   187  	git := gits.NewGitCLI()
   188  	err = git.Init(f)
   189  	assert.NoError(t, err)
   190  
   191  	o := step.StepNextVersionOptions{
   192  		StepOptions: step2.StepOptions{
   193  			CommonOptions: &opts.CommonOptions{},
   194  		},
   195  	}
   196  	o.Out = tests.Output()
   197  	o.Dir = f
   198  	o.NewVersion = "1.2.3"
   199  	o.Tag = true
   200  	o.ChartsDir = path.Join(f, "charts", "foo")
   201  	o.SetGit(&gits.GitFake{})
   202  
   203  	defer os.Remove("VERSION")
   204  
   205  	err = o.Run()
   206  	assert.NoError(t, err)
   207  
   208  	// Check explicit chart has been updated
   209  	updatedChart, err := util.LoadBytes(o.Dir, "charts/foo/Chart.yaml")
   210  	expectedUpdatedChart, err := util.LoadBytes(testData, "charts/foo/expected_Chart.yaml")
   211  	assert.Equal(t, string(updatedChart), string(expectedUpdatedChart), "replaced version")
   212  
   213  	// And check no other chart was updated
   214  	bystanderChart, err := util.LoadBytes(o.Dir, "charts/bar/Chart.yaml")
   215  	expectedBystanderChart, err := util.LoadBytes(testData, "charts/bar/expected_Chart.yaml")
   216  	assert.Equal(t, string(bystanderChart), string(expectedBystanderChart), "no version replaced")
   217  }