github.com/chenbh/concourse/v6@v6.4.2/fly/integration/validate_pipeline_test.go (about)

     1  package integration_test
     2  
     3  import (
     4  	"os/exec"
     5  
     6  	. "github.com/onsi/ginkgo"
     7  	. "github.com/onsi/gomega"
     8  
     9  	"github.com/onsi/gomega/gbytes"
    10  	"github.com/onsi/gomega/gexec"
    11  )
    12  
    13  var _ = Describe("Fly CLI", func() {
    14  	Describe("validate-pipeline", func() {
    15  		It("returns valid on valid configuration", func() {
    16  			flyCmd := exec.Command(
    17  				flyPath,
    18  				"validate-pipeline",
    19  				"-c", "fixtures/testConfigValid.yml",
    20  			)
    21  
    22  			sess, err := gexec.Start(flyCmd, GinkgoWriter, GinkgoWriter)
    23  			Expect(err).NotTo(HaveOccurred())
    24  
    25  			Eventually(sess).Should(gbytes.Say("looks good"))
    26  
    27  			<-sess.Exited
    28  			Expect(sess.ExitCode()).To(Equal(0))
    29  		})
    30  
    31  		It("returns valid on valid configuration to stdout", func() {
    32  			flyCmd := exec.Command(
    33  				flyPath,
    34  				"validate-pipeline",
    35  				"-c", "fixtures/testConfigValid.yml",
    36  				"-o",
    37  			)
    38  
    39  			sess, err := gexec.Start(flyCmd, GinkgoWriter, GinkgoWriter)
    40  			Expect(err).NotTo(HaveOccurred())
    41  
    42  			Eventually(sess).Should(gbytes.Say("groups:"))
    43  			Eventually(sess).Should(gbytes.Say("jobs:"))
    44  			Eventually(sess).Should(gbytes.Say("resources:"))
    45  
    46  			<-sess.Exited
    47  			Expect(sess.ExitCode()).To(Equal(0))
    48  		})
    49  
    50  		It("returns valid on templated configuration with variables", func() {
    51  			flyCmd := exec.Command(
    52  				flyPath,
    53  				"validate-pipeline",
    54  				"-c", "fixtures/vars-pipeline.yml",
    55  				"-l", "fixtures/vars-pipeline-params-types.yml",
    56  			)
    57  
    58  			sess, err := gexec.Start(flyCmd, GinkgoWriter, GinkgoWriter)
    59  			Expect(err).NotTo(HaveOccurred())
    60  
    61  			Eventually(sess).Should(gbytes.Say("looks good"))
    62  
    63  			<-sess.Exited
    64  			Expect(sess.ExitCode()).To(Equal(0))
    65  		})
    66  
    67  		It("returns invalid on validation error", func() {
    68  			flyCmd := exec.Command(
    69  				flyPath,
    70  				"validate-pipeline",
    71  				"-c", "fixtures/testConfigError.yml",
    72  			)
    73  
    74  			sess, err := gexec.Start(flyCmd, GinkgoWriter, GinkgoWriter)
    75  			Expect(err).NotTo(HaveOccurred())
    76  
    77  			Eventually(sess.Err).Should(gbytes.Say("WARNING:"))
    78  			Eventually(sess.Err).Should(gbytes.Say("  - invalid resources:"))
    79  
    80  			<-sess.Exited
    81  			Expect(sess.ExitCode()).To(Equal(1))
    82  
    83  			Expect(sess.Err).To(gbytes.Say("configuration invalid"))
    84  		})
    85  
    86  		It("returns invalid on validation warning with strict", func() {
    87  			flyCmd := exec.Command(
    88  				flyPath,
    89  				"validate-pipeline",
    90  				"-c", "fixtures/testConfigWarning.yml",
    91  				"--strict",
    92  			)
    93  
    94  			sess, err := gexec.Start(flyCmd, GinkgoWriter, GinkgoWriter)
    95  			Expect(err).NotTo(HaveOccurred())
    96  
    97  			Eventually(sess.Err).Should(gbytes.Say("DEPRECATION WARNING:"))
    98  			Eventually(sess.Err).Should(gbytes.Say("  - jobs.some-job.plan"))
    99  
   100  			<-sess.Exited
   101  			Expect(sess.ExitCode()).To(Equal(1))
   102  
   103  			Expect(sess.Err).To(gbytes.Say("configuration invalid"))
   104  		})
   105  
   106  		It("returns valid on a pipeline that contains var_sources", func() {
   107  			flyCmd := exec.Command(
   108  				flyPath,
   109  				"validate-pipeline",
   110  				"-c", "fixtures/var_sources_pipeline.yml",
   111  			)
   112  
   113  			sess, err := gexec.Start(flyCmd, GinkgoWriter, GinkgoWriter)
   114  			Expect(err).NotTo(HaveOccurred())
   115  
   116  			<-sess.Exited
   117  			Expect(sess.ExitCode()).To(Equal(0))
   118  		})
   119  	})
   120  })