github.com/chenbh/concourse/v6@v6.4.2/fly/integration/format_pipeline_test.go (about) 1 package integration_test 2 3 import ( 4 "io/ioutil" 5 "os" 6 "os/exec" 7 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 11 "github.com/onsi/gomega/gexec" 12 ) 13 14 var _ = Describe("Fly CLI", func() { 15 Describe("format-pipeline", func() { 16 var ( 17 configFile *os.File 18 inputYaml []byte 19 expectedYaml []byte 20 ) 21 22 BeforeEach(func() { 23 var err error 24 configFile, err = ioutil.TempFile("", "format-pipeline-test-*.yml") 25 Expect(err).NotTo(HaveOccurred()) 26 27 inputYaml, err = ioutil.ReadFile("fixtures/format-input.yml") 28 Expect(err).NotTo(HaveOccurred()) 29 30 expectedYaml, err = ioutil.ReadFile("fixtures/format-expected.yml") 31 Expect(err).NotTo(HaveOccurred()) 32 33 _, err = configFile.Write(inputYaml) 34 Expect(err).NotTo(HaveOccurred()) 35 36 err = configFile.Close() 37 Expect(err).NotTo(HaveOccurred()) 38 }) 39 40 AfterEach(func() { 41 err := os.RemoveAll(configFile.Name()) 42 Expect(err).NotTo(HaveOccurred()) 43 }) 44 45 It("prints the formatted pipeline YAML to stdout", func() { 46 flyCmd := exec.Command( 47 flyPath, 48 "format-pipeline", 49 "-c", configFile.Name(), 50 ) 51 52 sess, err := gexec.Start(flyCmd, GinkgoWriter, GinkgoWriter) 53 Expect(err).NotTo(HaveOccurred()) 54 55 <-sess.Exited 56 Expect(sess.ExitCode()).To(Equal(0)) 57 58 Expect(sess.Out.Contents()).To(MatchYAML(expectedYaml)) 59 }) 60 61 It("preserves the original pipeline file", func() { 62 oldFileInfo, err := os.Stat(configFile.Name()) 63 Expect(err).NotTo(HaveOccurred()) 64 65 flyCmd := exec.Command( 66 flyPath, 67 "format-pipeline", 68 "-c", configFile.Name(), 69 ) 70 71 sess, err := gexec.Start(flyCmd, GinkgoWriter, GinkgoWriter) 72 Expect(err).NotTo(HaveOccurred()) 73 74 <-sess.Exited 75 Expect(sess.ExitCode()).To(Equal(0)) 76 77 newFileInfo, err := os.Stat(configFile.Name()) 78 Expect(err).NotTo(HaveOccurred()) 79 Expect(newFileInfo.ModTime()).To(Equal(oldFileInfo.ModTime())) 80 81 newYaml, err := ioutil.ReadFile(configFile.Name()) 82 Expect(err).NotTo(HaveOccurred()) 83 Expect(newYaml).To(Equal(inputYaml)) 84 }) 85 86 Context("when given the -w option", func() { 87 It("overwrites the file in-place", func() { 88 flyCmd := exec.Command( 89 flyPath, 90 "format-pipeline", 91 "-c", configFile.Name(), 92 "-w", 93 ) 94 95 sess, err := gexec.Start(flyCmd, GinkgoWriter, GinkgoWriter) 96 Expect(err).NotTo(HaveOccurred()) 97 98 <-sess.Exited 99 Expect(sess.ExitCode()).To(Equal(0)) 100 101 newYaml, err := ioutil.ReadFile(configFile.Name()) 102 Expect(err).NotTo(HaveOccurred()) 103 Expect(newYaml).To(MatchYAML(expectedYaml)) 104 }) 105 106 It("is idempotent", func() { 107 flyCmd := exec.Command( 108 flyPath, 109 "format-pipeline", 110 "-c", configFile.Name(), 111 "-w", 112 ) 113 114 sess, err := gexec.Start(flyCmd, GinkgoWriter, GinkgoWriter) 115 Expect(err).NotTo(HaveOccurred()) 116 117 <-sess.Exited 118 Expect(sess.ExitCode()).To(Equal(0)) 119 120 firstPassYaml, err := ioutil.ReadFile(configFile.Name()) 121 Expect(err).NotTo(HaveOccurred()) 122 123 flyCmd2 := exec.Command( 124 flyPath, 125 "format-pipeline", 126 "-c", configFile.Name(), 127 "-w", 128 ) 129 130 sess2, err := gexec.Start(flyCmd2, GinkgoWriter, GinkgoWriter) 131 Expect(err).NotTo(HaveOccurred()) 132 133 <-sess2.Exited 134 Expect(sess2.ExitCode()).To(Equal(0)) 135 136 secondPassYaml, err := ioutil.ReadFile(configFile.Name()) 137 Expect(err).NotTo(HaveOccurred()) 138 139 Expect(firstPassYaml).To(MatchYAML(secondPassYaml)) 140 }) 141 }) 142 }) 143 })