github.com/symfony-cli/symfony-cli@v0.0.0-20240514161054-ece2df437dfa/git/exec_test.go (about) 1 /* 2 * Copyright (c) 2021-present Fabien Potencier <fabien@symfony.com> 3 * 4 * This file is part of Symfony CLI project 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU Affero General Public License as 8 * published by the Free Software Foundation, either version 3 of the 9 * License, or (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU Affero General Public License for more details. 15 * 16 * You should have received a copy of the GNU Affero General Public License 17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 package git 21 22 import ( 23 "bytes" 24 "testing" 25 26 . "gopkg.in/check.v1" 27 ) 28 29 type GitSuite struct{} 30 31 var _ = Suite(&GitSuite{}) 32 33 func TestGit(t *testing.T) { TestingT(t) } 34 35 var expectedOutput = ` 36 Enumerating objects: 7, done. 37 Counting objects: 0% (0/7), done.` + "\r" + ` Counting objects: 57% (4/7), done.` + "\r" + ` Counting objects: 100% (7/7), done. 38 Delta compression using up to 4 threads 39 Compressing objects: 100% (4/4), done. 40 Writing objects: 100% (4/4), 1.05 KiB | 1.05 MiB/s, done. 41 Total 4 (delta 2), reused 1 (delta 0) 42 43 Validating submodules 44 45 Validating configuration files 46 47 Processing activity: Tugdual Saunier pushed to test-deployment-failing 48 Found 1 new commit 49 50 Building application 'app' (runtime type: golang:1.11, tree: 5e8278e) 51 Generating runtime configuration. 52 53 Executing build hook... 54 W: + curl -s https://get.symfony.com/cloud/configurator 55 W: + bash 56 W: + mkdir -p /app/.global/bin/ 57 W: + tar -C /app/.global/bin/ -jxpf - 58 W: + curl -s https://get.symfony.com/cloud/tools.tar.bz2 59 W: + echo -e '' 60 W: + echo 'export PATH=/app/bin:/app/vendor/bin:$PATH $(scenv)' 61 W: + echo eyJzaXplIjogIkFVVE8iLCAiZGlzayI6IDEwMjQsICJhY2Nlc3MiOiB7InNzaCI6ICJjb250cmlidXRvciJ9LCAicmVsYXRpb25zaGlwcyI6IHt9LCAibW91bnRzIjogeyIvdmFyIjogeyJzb3VyY2UiOiAibG9jYWwiLCAic291cmNlX3BhdGgiOiAidmFyIn19LCAidGltZXpvbmUiOiBudWxsLCAidmFyaWFibGVzIjoge30sICJuYW1lIjogImFwcCIsICJ0eXBlIjogImdvbGFuZzoxLjExIiwgInJ1bnRpbWUiOiB7fSwgInByZWZsaWdodCI6IHsiZW5hYmxlZCI6IHRydWUsICJpZ25vcmVkX3J1bGVzIjogW119LCAiZGVwZW5kZW5jaWVzIjoge30sICJidWlsZCI6IHsiZmxhdm9yIjogIm5vbmUifSwgIndlYiI6IHsibG9jYXRpb25zIjogeyIvIjogeyJyb290IjogbnVsbCwgImV4cGlyZXMiOiAiLTFzIiwgInBhc3N0aHJ1IjogdHJ1ZSwgInNjcmlwdHMiOiB0cnVlLCAiYWxsb3ciOiBmYWxzZSwgImhlYWRlcnMiOiB7fSwgInJ1bGVzIjoge319fSwgImNvbW1hbmRzIjogeyJzdGFydCI6ICJzY2VudiAvYXBwL3N0cmlwZS1ub3RpZmljYXRpb25zIiwgInN0b3AiOiBudWxsfSwgInVwc3RyZWFtIjogeyJzb2NrZXRfZmFtaWx5IjogInRjcCIsICJwcm90b2NvbCI6ICJodHRwIn0sICJtb3ZlX3RvX3Jvb3QiOiBmYWxzZX0sICJob29rcyI6IHsiYnVpbGQiOiAic2V0IC1lIC14XG5cblxuXG5cblxuXG5cblxuXG5jdXJsIC1zIGh0dHBzOi8vZ2V0LnN5bWZvbnkuY29tL2Nsb3VkL2NvbmZpZ3VyYXRvciB8ICg+JjIgYmFzaClcbmdvIGJ1aWxkXG4iLCAiZGVwbG95IjogbnVsbCwgInBvc3RfZGVwbG95IjogbnVsbH0sICJjcm9ucyI6IHt9LCAid29ya2VycyI6IHt9fQ== 62 W: + base64 --decode 63 W: + json_pp 64 W: + grep '"type" : "php' 65 W: + base64 --decode 66 W: + exit 0 67 W: + go build 68 W: go: finding github.com/nlopes/slack v0.4.0 69 W: [...] 70 W: go: downloading github.com/gorilla/websocket v1.4.0 71 W: go: downloading github.com/pkg/errors v0.8.0 72 73 Executing pre-flight checks... 74 75 Compressing application. 76 Beaming package to its final destination. 77 78 Provisioning certificates 79 Environment certificates 80 - certificate d22187d: expiring on 2019-01-28 07:13:00+00:00, covering test-deployment-failing-gbppxsi-4xfrp6lcgobc4.eu.s5y.io 81 82 83 Re-deploying environment 4xfrp6lcgobc4-test-deployment-failing-gbppxsi 84 Environment configuration 85 app (type: golang:1.11, size: S, disk: 1024) 86 87 Environment routes 88 http://test-deployment-failing-gbppxsi-4xfrp6lcgobc4.eu.s5y.io/ redirects to https://test-deployment-failing-gbppxsi-4xfrp6lcgobc4.eu.s5y.io/ 89 https://test-deployment-failing-gbppxsi-4xfrp6lcgobc4.eu.s5y.io/ is served by application 'app' 90 91 92 To git.eu.s5y.io:4xfrp6lcgobc4.git 93 72daff6..2c02b16 HEAD -> test-deployment-failing 94 ` 95 96 func (ts *GitSuite) TestGitOutputWriter(t *C) { 97 var buf bytes.Buffer 98 writer := gitOutputWriter{output: &buf} 99 100 if _, err := writer.Write([]byte("\n")); err != nil { 101 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 102 } 103 104 if _, err := writer.Write([]byte("Enumerating objects: 7, done.\n")); err != nil { 105 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 106 } 107 108 if _, err := writer.Write([]byte("Counting objects: 0% (0/7), done.\r")); err != nil { 109 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 110 } 111 112 if _, err := writer.Write([]byte("Counting objects: 57% (4/7), done.\r")); err != nil { 113 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 114 } 115 116 if _, err := writer.Write([]byte("Counting objects: 100% (7/7), done.\nDelta compression using up to 4 threads\n")); err != nil { 117 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 118 } 119 120 if _, err := writer.Write([]byte("Compressing objects: 100% (4/4), done.\n")); err != nil { 121 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 122 } 123 124 if _, err := writer.Write([]byte("Writing objects: 100% (4/4), 1.05 KiB | 1.05 MiB/s, done.\nTotal 4 (delta 2), reused 1 (delta 0)\n")); err != nil { 125 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 126 } 127 128 if _, err := writer.Write([]byte("\n")); err != nil { 129 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 130 } 131 132 if _, err := writer.Write([]byte("Validating sub")); err != nil { 133 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 134 } 135 136 if _, err := writer.Write([]byte("modules\n")); err != nil { 137 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 138 } 139 140 if _, err := writer.Write([]byte("\n")); err != nil { 141 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 142 } 143 144 if _, err := writer.Write([]byte("Validating configuration files\n")); err != nil { 145 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 146 } 147 148 if _, err := writer.Write([]byte("\n")); err != nil { 149 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 150 } 151 152 if _, err := writer.Write([]byte("Processing activity: Tugdual Saunier pushed to test-deployment-failing\n")); err != nil { 153 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 154 } 155 156 if _, err := writer.Write([]byte(" Found 1 new commit\n")); err != nil { 157 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 158 } 159 160 if _, err := writer.Write([]byte("\n")); err != nil { 161 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 162 } 163 164 if _, err := writer.Write([]byte(" Building application 'app' (runtime type: golang:1.11, tree: 5e8278e)\n")); err != nil { 165 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 166 } 167 168 if _, err := writer.Write([]byte(" Generating runtime configuration.\n")); err != nil { 169 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 170 } 171 172 if _, err := writer.Write([]byte("\n")); err != nil { 173 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 174 } 175 176 if _, err := writer.Write([]byte(" Executing build hook...\n")); err != nil { 177 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 178 } 179 180 if _, err := writer.Write([]byte(" W: + curl -s https://get.symfony.com/cloud/configurator\n W: + bash\n")); err != nil { 181 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 182 } 183 184 if _, err := writer.Write([]byte(" W: + mkdir -p /app/.global/bin/\n")); err != nil { 185 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 186 } 187 188 if _, err := writer.Write([]byte(" W: + tar -C /app/.global/bin/ -jxpf -\n")); err != nil { 189 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 190 } 191 192 if _, err := writer.Write([]byte(" W: + curl -s https://get.symfony.com/cloud/tools.tar.bz2\n")); err != nil { 193 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 194 } 195 196 if _, err := writer.Write([]byte(" W: + echo -e ''\n")); err != nil { 197 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 198 } 199 200 if _, err := writer.Write([]byte(" W: + echo 'export PATH=/app/bin:/app/vendor/bin:$PATH $(scenv)'\n")); err != nil { 201 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 202 } 203 204 if n, err := writer.Write([]byte(" W: + echo eyJzaXplIjogIkFVVE8iLCAiZGlzayI6IDEwMjQsICJhY2Nlc3MiOiB7InNzaCI6ICJjb250cmlidXRvciJ9LCAicmVsYXRpb25zaGlwcyI6IHt9LCAibW91bnRzIjogeyIvdmFyIjogeyJzb3VyY2UiOiAibG9jYWwiLCAic291cmNlX3BhdGgiOiAidmFyIn19LCAidGltZXpvbmUiOiBudWxsLCAidmFyaWFibGVzIjoge30sICJuYW1lIjogImFwcCIsICJ0eXBlIjogImdvbGFuZzoxLjExIiwgInJ1bnRpbWUiOiB7fSwgInByZWZsaWdodCI6IHsiZW5hYmxlZCI6IHRydWUsICJpZ25vcmVkX3J1bGVzIjogW119LCAiZGVwZW5kZW5jaWVzIjoge30sICJidWlsZC")); err != nil { 205 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 206 } else if n != 440 { 207 t.Fatalf("wrong char count returned by gitOutputWriter.Write: got %v, 440 expected", n) 208 } 209 210 if n, err := writer.Write([]byte("I6IHsiZmxhdm9yIjogIm5vbmUifSwgIndlYiI6IHsibG9jYXRpb25zIjogeyIvIjogeyJyb290IjogbnVsbCwgImV4cGlyZXMiOiAiLTFzIiwgInBhc3N0aHJ1IjogdHJ1ZSwgInNjcmlwdHMiOiB0cnVlLCAiYWxsb3ciOiBmYWxzZSwgImhlYWRlcnMiOiB7fSwgInJ1bGVzIjoge319fSwgImNvbW1hbmRzIjogeyJzdGFydCI6ICJzY2VudiAvYXBwL3N0cmlwZS1ub3RpZmljYXRpb25zIiwgInN0b3AiOiBudWxsfSwgInVwc3RyZWFtIjogeyJzb2NrZXRfZmFtaWx5IjogInRjcCIsICJwcm90b2NvbCI6ICJodHRwIn0sICJtb3ZlX3RvX3Jvb3QiOiBmYWxzZX0sICJob29rcyI6IHsiYnVpbGQiOiAic2V0IC1lIC14XG5cblxuXG5cblxuXG5cblxuXG5jdXJsIC1zIGh0dHBzOi8vZ2V0LnN5bWZvbnkuY29tL2Nsb3VkL2NvbmZpZ3VyYXRvciB8ICg+JjIgYmFzaClcbmdvIGJ1aWxkXG4iLCAiZGVwbG95IjogbnVsbCwgInBvc3RfZGVwbG95IjogbnVsbH0sICJjcm9ucyI6IHt9LCAid29ya2VycyI6IHt9fQ==\n W: + base64 --decode\n")); err != nil { 211 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 212 } else if n != 712 { 213 t.Fatalf("wrong char count returned by gitOutputWriter.Write: got %v, 712 expected", n) 214 } 215 216 if _, err := writer.Write([]byte(" W: + json_pp\n")); err != nil { 217 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 218 } 219 220 if _, err := writer.Write([]byte(" W: + grep '\"type\" : \"php'\n")); err != nil { 221 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 222 } 223 224 if _, err := writer.Write([]byte(" W: + base64 --decode\n")); err != nil { 225 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 226 } 227 228 if _, err := writer.Write([]byte(" W: + exit 0\n")); err != nil { 229 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 230 } 231 232 if _, err := writer.Write([]byte(" W: + go build\n")); err != nil { 233 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 234 } 235 236 if _, err := writer.Write([]byte(" W: go: finding github.com/nlopes/slack v0.4.0\n")); err != nil { 237 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 238 } 239 240 if _, err := writer.Write([]byte(" W: [...]\n")); err != nil { 241 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 242 } 243 244 if _, err := writer.Write([]byte(" W: go: downloading github.com/gorilla/websocket v1.4.0\n W: go: downloading github.com/pkg/errors v0.8.0\n")); err != nil { 245 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 246 } 247 248 if _, err := writer.Write([]byte("\n Executing pre-flight checks...\n")); err != nil { 249 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 250 } 251 252 if _, err := writer.Write([]byte("\n Compressing application.\n")); err != nil { 253 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 254 } 255 256 if _, err := writer.Write([]byte(" Beaming package to its final destination.\n")); err != nil { 257 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 258 } 259 260 if _, err := writer.Write([]byte("\n Provisioning certificates\n Environment certificates\n - certificate d22187d: expiring on 2019-01-28 07:13:00+00:00, covering test-deployment-failing-gbppxsi-4xfrp6lcgobc4.eu.s5y.io\n\n\n Re-deploying environment 4xfrp6lcgobc4-test-deployment-failing-gbppxsi\n")); err != nil { 261 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 262 } 263 264 if _, err := writer.Write([]byte(" Environment configuration\n")); err != nil { 265 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 266 } 267 268 if _, err := writer.Write([]byte(" app (type: golang:1.11, size: S, disk: 1024)\n")); err != nil { 269 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 270 } 271 272 if _, err := writer.Write([]byte("\n")); err != nil { 273 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 274 } 275 276 if _, err := writer.Write([]byte(" Environment routes\n")); err != nil { 277 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 278 } 279 280 if _, err := writer.Write([]byte(" http://test-deployment-failing-gbppxsi-4xfrp6lcgobc4.eu.s5y.io/ redirects to https://test-deployment-failing-gbppxsi-4xfrp6lcgobc4.eu.s5y.io/\n")); err != nil { 281 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 282 } 283 284 if _, err := writer.Write([]byte(" https://test-deployment-failing-gbppxsi-4xfrp6lcgobc4.eu.s5y.io/ is served by application 'app'\n")); err != nil { 285 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 286 } 287 288 if _, err := writer.Write([]byte("\n")); err != nil { 289 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 290 } 291 292 if _, err := writer.Write([]byte("\n")); err != nil { 293 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 294 } 295 296 if _, err := writer.Write([]byte("To git.eu.s5y.io:4xfrp6lcgobc4.git\n 72daff6..2c02b16 HEAD -> test-deployment-failing\n")); err != nil { 297 t.Fatalf("gitOutputWriter.Write returned an unexcepted error: %v", err) 298 } 299 300 output := buf.String() 301 t.Assert(output, Equals, expectedOutput) 302 }