get.porter.sh/porter@v1.3.0/tests/integration/upgrade_test.go (about) 1 //go:build integration 2 3 package integration 4 5 import ( 6 "testing" 7 8 "get.porter.sh/porter/pkg/porter" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestUpgrade_failedInstallation(t *testing.T) { 13 p := porter.NewTestPorter(t) 14 defer p.Close() 15 ctx := p.SetupIntegrationTest() 16 17 p.AddTestBundleDir("testdata/bundles/bundle-with-failing-install", false) 18 19 installOpts := porter.NewInstallOptions() 20 err := installOpts.Validate(ctx, []string{}, p.Porter) 21 require.NoError(t, err) 22 23 err = p.InstallBundle(ctx, installOpts) 24 require.Error(t, err, "Installation should fail") 25 26 upgradeOpts := porter.NewUpgradeOptions() 27 err = upgradeOpts.Validate(ctx, []string{}, p.Porter) 28 require.NoError(t, err) 29 30 err = p.UpgradeBundle(ctx, upgradeOpts) 31 require.Error(t, err, "Upgrade should fail, because the installation failed") 32 } 33 34 func TestUpgrade_failedInstallation_withForceUpgrade(t *testing.T) { 35 p := porter.NewTestPorter(t) 36 defer p.Close() 37 ctx := p.SetupIntegrationTest() 38 39 p.AddTestBundleDir("testdata/bundles/bundle-with-failing-install", false) 40 41 installOpts := porter.NewInstallOptions() 42 err := installOpts.Validate(ctx, []string{}, p.Porter) 43 require.NoError(t, err) 44 45 err = p.InstallBundle(ctx, installOpts) 46 require.Error(t, err, "Installation should fail") 47 48 upgradeOpts := porter.NewUpgradeOptions() 49 upgradeOpts.ForceUpgrade = true 50 err = upgradeOpts.Validate(ctx, []string{}, p.Porter) 51 require.NoError(t, err) 52 53 err = p.UpgradeBundle(ctx, upgradeOpts) 54 require.NoError(t, err, "Upgrade should succeed, because force-upgrade is true") 55 } 56 57 func TestUpgrade_DebugModeAppliesToSingleInvocation(t *testing.T) { 58 p := porter.NewTestPorter(t) 59 defer p.Close() 60 ctx := p.SetupIntegrationTest() 61 62 p.AddTestBundleDir("testdata/bundles/bundle-with-custom-action", false) 63 64 installOpts := porter.NewInstallOptions() 65 err := installOpts.Validate(ctx, []string{}, p.Porter) 66 require.NoError(t, err) 67 68 err = p.InstallBundle(ctx, installOpts) 69 require.NoError(t, err) 70 71 upgradeOpts := porter.NewUpgradeOptions() 72 upgradeOpts.DebugMode = true 73 err = upgradeOpts.Validate(ctx, []string{}, p.Porter) 74 require.NoError(t, err) 75 76 err = p.UpgradeBundle(ctx, upgradeOpts) 77 require.NoError(t, err) 78 output := p.TestConfig.TestContext.GetOutput() 79 require.Contains(t, output, "== Step Template ===") 80 p.TestConfig.TestContext.ClearOutputs() 81 82 upgradeOpts = porter.NewUpgradeOptions() 83 upgradeOpts.DebugMode = false 84 err = upgradeOpts.Validate(ctx, []string{}, p.Porter) 85 require.NoError(t, err) 86 87 err = p.UpgradeBundle(ctx, upgradeOpts) 88 require.NoError(t, err) 89 output = p.TestConfig.TestContext.GetOutput() 90 require.NotContains(t, output, "== Step Template ===") 91 }