github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/integration/v6/push/start_command_test.go (about)

     1  package push
     2  
     3  import (
     4  	"fmt"
     5  	"path/filepath"
     6  
     7  	"code.cloudfoundry.org/cli/integration/helpers"
     8  
     9  	. "github.com/onsi/ginkgo"
    10  	. "github.com/onsi/gomega"
    11  	. "github.com/onsi/gomega/gbytes"
    12  	. "github.com/onsi/gomega/gexec"
    13  )
    14  
    15  var _ = Describe("push with different start command values", func() {
    16  	var (
    17  		appName string
    18  	)
    19  
    20  	BeforeEach(func() {
    21  		appName = helpers.NewAppName()
    22  	})
    23  
    24  	When("the start command flag is provided", func() {
    25  		It("sets the start command correctly for the pushed app", func() {
    26  			helpers.WithHelloWorldApp(func(dir string) {
    27  				By("pushing the app with no provided start command uses detected command")
    28  				session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName)
    29  				Eventually(session).Should(Say(`start command:\s+%s`, helpers.StaticfileBuildpackStartCommand))
    30  				Eventually(session).Should(Exit(0))
    31  
    32  				By("pushing the app with a start command uses provided start command")
    33  				session = helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir},
    34  					PushCommandName, appName,
    35  					"-c", fmt.Sprintf("%s && echo hello", helpers.StaticfileBuildpackStartCommand))
    36  				Eventually(session).Should(Say(`start command:\s+%s && echo hello`, helpers.StaticfileBuildpackStartCommand))
    37  				Eventually(session).Should(Exit(0))
    38  
    39  				By("pushing the app with no provided start command again uses previously set command")
    40  				session = helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName)
    41  				Eventually(session).Should(Say(`start command:\s+%s && echo hello`, helpers.StaticfileBuildpackStartCommand))
    42  				Eventually(session).Should(Exit(0))
    43  
    44  				By("pushing the app with default uses detected command")
    45  				session = helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir},
    46  					PushCommandName, appName,
    47  					"-c", "default")
    48  				Eventually(session).Should(Say(`(?m)start command:\s+%s`, helpers.StaticfileBuildpackStartCommand))
    49  				Eventually(session).Should(Exit(0))
    50  
    51  				By("pushing the app with null uses detected command")
    52  				session = helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir},
    53  					PushCommandName, appName,
    54  					"-c", "null")
    55  				Eventually(session).Should(Say(`(?m)start command:\s+%s`, helpers.StaticfileBuildpackStartCommand))
    56  				Eventually(session).Should(Exit(0))
    57  			})
    58  		})
    59  	})
    60  
    61  	When("the start command is provided in the manifest", func() {
    62  		It("sets the start command correctly for the pushed app", func() {
    63  			helpers.WithHelloWorldApp(func(dir string) {
    64  				By("pushing the app with no provided start command uses detected command")
    65  				helpers.WriteManifest(filepath.Join(dir, "manifest.yml"), map[string]interface{}{
    66  					"applications": []map[string]interface{}{
    67  						{
    68  							"name": appName,
    69  							"path": dir,
    70  						},
    71  					},
    72  				})
    73  				session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName)
    74  				Eventually(session).Should(Say(`start command:\s+%s`, helpers.StaticfileBuildpackStartCommand))
    75  				Eventually(session).Should(Exit(0))
    76  
    77  				By("pushing the app with a start command uses provided start command")
    78  				helpers.WriteManifest(filepath.Join(dir, "manifest.yml"), map[string]interface{}{
    79  					"applications": []map[string]interface{}{
    80  						{
    81  							"name":    appName,
    82  							"path":    dir,
    83  							"command": fmt.Sprintf("%s && echo hello", helpers.StaticfileBuildpackStartCommand),
    84  						},
    85  					},
    86  				})
    87  				session = helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName)
    88  				Eventually(session).Should(Say(`start command:\s+%s && echo hello`, helpers.StaticfileBuildpackStartCommand))
    89  				Eventually(session).Should(Exit(0))
    90  
    91  				By("pushing the app with no provided start command again uses previously set command")
    92  				helpers.WriteManifest(filepath.Join(dir, "manifest.yml"), map[string]interface{}{
    93  					"applications": []map[string]interface{}{
    94  						{
    95  							"name": appName,
    96  							"path": dir,
    97  						},
    98  					},
    99  				})
   100  				session = helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName)
   101  				Eventually(session).Should(Say(`start command:\s+%s && echo hello`, helpers.StaticfileBuildpackStartCommand))
   102  				Eventually(session).Should(Exit(0))
   103  
   104  				By("pushing the app with default uses detected command")
   105  				helpers.WriteManifest(filepath.Join(dir, "manifest.yml"), map[string]interface{}{
   106  					"applications": []map[string]interface{}{
   107  						{
   108  							"name":    appName,
   109  							"path":    dir,
   110  							"command": "default",
   111  						},
   112  					},
   113  				})
   114  				session = helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName)
   115  				Eventually(session).Should(Say(`(?m)start command:\s+%s`, helpers.StaticfileBuildpackStartCommand))
   116  				Eventually(session).Should(Exit(0))
   117  
   118  				By("pushing the app with null uses detected command")
   119  				helpers.WriteManifest(filepath.Join(dir, "manifest.yml"), map[string]interface{}{
   120  					"applications": []map[string]interface{}{
   121  						{
   122  							"name":    appName,
   123  							"path":    dir,
   124  							"command": nil,
   125  						},
   126  					},
   127  				})
   128  				session = helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir}, PushCommandName, appName)
   129  				Eventually(session).Should(Say(`(?m)start command:\s+%s`, helpers.StaticfileBuildpackStartCommand))
   130  				Eventually(session).Should(Exit(0))
   131  			})
   132  		})
   133  	})
   134  })