github.com/BarDweller/libpak@v0.0.0-20230630201634-8dd5cfc15ec9/carton/package_test.go (about) 1 /* 2 * Copyright 2018-2020 the original author or authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package carton_test 18 19 import ( 20 "os" 21 "path/filepath" 22 "testing" 23 24 "github.com/buildpacks/libcnb/mocks" 25 . "github.com/onsi/gomega" 26 "github.com/sclevine/spec" 27 "github.com/stretchr/testify/mock" 28 29 "github.com/BarDweller/libpak/carton" 30 cMocks "github.com/BarDweller/libpak/carton/mocks" 31 "github.com/BarDweller/libpak/effect" 32 eMocks "github.com/BarDweller/libpak/effect/mocks" 33 ) 34 35 func testPackage(t *testing.T, context spec.G, it spec.S) { 36 var ( 37 Expect = NewWithT(t).Expect 38 39 entryWriter *cMocks.EntryWriter 40 executor *eMocks.Executor 41 exitHandler *mocks.ExitHandler 42 path string 43 ) 44 45 context("with buildpack.toml", func() { 46 it.Before(func() { 47 entryWriter = &cMocks.EntryWriter{} 48 entryWriter.On("Write", mock.Anything, mock.Anything).Return(nil) 49 50 executor = &eMocks.Executor{} 51 executor.On("Execute", mock.Anything).Return(nil) 52 53 exitHandler = &mocks.ExitHandler{} 54 exitHandler.On("Error", mock.Anything) 55 56 path = t.TempDir() 57 58 Expect(os.WriteFile(filepath.Join(path, "buildpack.toml"), []byte(` 59 api = "0.0.0" 60 61 [buildpack] 62 name = "test-name" 63 version = "{{.version}}" 64 65 [[metadata.dependencies]] 66 id = "test-id" 67 name = "test-name" 68 version = "1.1.1" 69 uri = "test-uri" 70 sha256 = "test-sha256" 71 stacks = [ "test-stack" ] 72 73 [[metadata.dependencies.licenses]] 74 type = "test-type" 75 uri = "test-uri" 76 77 [metadata] 78 pre-package = "test-pre-package" 79 include-files = [ 80 "test-include-files", 81 "buildpack.toml", 82 ] 83 `), 0644)).To(Succeed()) 84 85 }) 86 87 it.After(func() { 88 Expect(os.RemoveAll(path)).To(Succeed()) 89 }) 90 91 it("executes pre_package script", func() { 92 carton.Package{ 93 Source: path, 94 }.Create( 95 carton.WithEntryWriter(entryWriter), 96 carton.WithExecutor(executor), 97 carton.WithExitHandler(exitHandler)) 98 99 e, ok := executor.Calls[0].Arguments[0].(effect.Execution) 100 Expect(ok).To(BeTrue()) 101 Expect(e.Command).To(Equal("test-pre-package")) 102 Expect(e.Dir).To(Equal(path)) 103 }) 104 105 it("includes include_files", func() { 106 carton.Package{ 107 Source: path, 108 Destination: "test-destination", 109 }.Create( 110 carton.WithEntryWriter(entryWriter), 111 carton.WithExecutor(executor), 112 carton.WithExitHandler(exitHandler)) 113 114 Expect(entryWriter.Calls[0].Arguments[0]).To(Equal(filepath.Join(path, "buildpack.toml"))) 115 Expect(entryWriter.Calls[0].Arguments[1]).To(Equal(filepath.Join("test-destination", "buildpack.toml"))) 116 Expect(entryWriter.Calls[1].Arguments[0]).To(Equal(filepath.Join(path, "test-include-files"))) 117 Expect(entryWriter.Calls[1].Arguments[1]).To(Equal(filepath.Join("test-destination", "test-include-files"))) 118 }) 119 120 it("replaces .version in buildpack.toml", func() { 121 carton.Package{ 122 Source: path, 123 Destination: "test-destination", 124 Version: "2.2.2", 125 }.Create( 126 carton.WithEntryWriter(entryWriter), 127 carton.WithExecutor(executor), 128 carton.WithExitHandler(exitHandler)) 129 130 Expect(entryWriter.Calls[0].Arguments[0]).NotTo(Equal(filepath.Join(path, "buildpack.toml"))) 131 Expect(entryWriter.Calls[0].Arguments[1]).To(Equal(filepath.Join("test-destination", "buildpack.toml"))) 132 Expect(entryWriter.Calls[1].Arguments[0]).To(Equal(filepath.Join(path, "test-include-files"))) 133 Expect(entryWriter.Calls[1].Arguments[1]).To(Equal(filepath.Join("test-destination", "test-include-files"))) 134 135 Expect(os.ReadFile(entryWriter.Calls[0].Arguments[0].(string))).To(Equal([]byte(` 136 api = "0.0.0" 137 138 [buildpack] 139 name = "test-name" 140 version = "2.2.2" 141 142 [[metadata.dependencies]] 143 id = "test-id" 144 name = "test-name" 145 version = "1.1.1" 146 uri = "test-uri" 147 sha256 = "test-sha256" 148 stacks = [ "test-stack" ] 149 150 [[metadata.dependencies.licenses]] 151 type = "test-type" 152 uri = "test-uri" 153 154 [metadata] 155 pre-package = "test-pre-package" 156 include-files = [ 157 "test-include-files", 158 "buildpack.toml", 159 ] 160 `))) 161 }) 162 163 context("includes dependencies", func() { 164 it.Before(func() { 165 Expect(os.WriteFile(filepath.Join(path, "buildpack.toml"), []byte(` 166 api = "0.0.0" 167 168 [buildpack] 169 name = "test-name" 170 version = "{{.version}}" 171 172 [[metadata.dependencies]] 173 id = "test-id" 174 name = "test-name" 175 version = "1.1.1" 176 uri = "test-uri-1" 177 sha256 = "test-sha256-1" 178 179 [[metadata.dependencies]] 180 id = "test-id" 181 name = "test-name" 182 version = "2.0.5" 183 uri = "test-uri-2" 184 sha256 = "test-sha256-2" 185 186 [[metadata.dependencies]] 187 id = "another-test-id" 188 name = "test-name" 189 version = "1.1.1" 190 uri = "test-uri-3" 191 sha256 = "test-sha256-3" 192 193 [metadata] 194 pre-package = "test-pre-package" 195 include-files = [ 196 "test-include-files", 197 "buildpack.toml", 198 ] 199 `), 0644)).To(Succeed()) 200 }) 201 202 it("includes all dependencies", func() { 203 carton.Package{ 204 Source: path, 205 Destination: "test-destination", 206 IncludeDependencies: true, 207 CacheLocation: "testdata", 208 }.Create( 209 carton.WithEntryWriter(entryWriter), 210 carton.WithExecutor(executor), 211 carton.WithExitHandler(exitHandler)) 212 213 Expect(entryWriter.Calls).To(HaveLen(8)) 214 Expect(entryWriter.Calls[0].Arguments[0]).To(Equal(filepath.Join(path, "buildpack.toml"))) 215 Expect(entryWriter.Calls[0].Arguments[1]).To(Equal(filepath.Join("test-destination", "buildpack.toml"))) 216 217 Expect(entryWriter.Calls[1].Arguments[0]).To(Equal("testdata/test-sha256-1.toml")) 218 Expect(entryWriter.Calls[1].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-1.toml"))) 219 Expect(entryWriter.Calls[2].Arguments[0]).To(Equal("testdata/test-sha256-1/test-uri-1")) 220 Expect(entryWriter.Calls[2].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-1/test-uri-1"))) 221 222 Expect(entryWriter.Calls[3].Arguments[0]).To(Equal("testdata/test-sha256-2.toml")) 223 Expect(entryWriter.Calls[3].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-2.toml"))) 224 Expect(entryWriter.Calls[4].Arguments[0]).To(Equal("testdata/test-sha256-2/test-uri-2")) 225 Expect(entryWriter.Calls[4].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-2/test-uri-2"))) 226 227 Expect(entryWriter.Calls[5].Arguments[0]).To(Equal("testdata/test-sha256-3.toml")) 228 Expect(entryWriter.Calls[5].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-3.toml"))) 229 Expect(entryWriter.Calls[6].Arguments[0]).To(Equal("testdata/test-sha256-3/test-uri-3")) 230 Expect(entryWriter.Calls[6].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-3/test-uri-3"))) 231 232 Expect(entryWriter.Calls[7].Arguments[0]).To(Equal(filepath.Join(path, "test-include-files"))) 233 Expect(entryWriter.Calls[7].Arguments[1]).To(Equal(filepath.Join("test-destination", "test-include-files"))) 234 }) 235 236 it("includes filter by id", func() { 237 carton.Package{ 238 Source: path, 239 Destination: "test-destination", 240 IncludeDependencies: true, 241 CacheLocation: "testdata", 242 DependencyFilters: []string{`^another-test-id$`}, 243 }.Create( 244 carton.WithEntryWriter(entryWriter), 245 carton.WithExecutor(executor), 246 carton.WithExitHandler(exitHandler)) 247 248 Expect(entryWriter.Calls).To(HaveLen(4)) 249 Expect(entryWriter.Calls[0].Arguments[0]).To(Equal(filepath.Join(path, "buildpack.toml"))) 250 Expect(entryWriter.Calls[0].Arguments[1]).To(Equal(filepath.Join("test-destination", "buildpack.toml"))) 251 252 Expect(entryWriter.Calls[1].Arguments[0]).To(Equal("testdata/test-sha256-3.toml")) 253 Expect(entryWriter.Calls[1].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-3.toml"))) 254 Expect(entryWriter.Calls[2].Arguments[0]).To(Equal("testdata/test-sha256-3/test-uri-3")) 255 Expect(entryWriter.Calls[2].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-3/test-uri-3"))) 256 257 Expect(entryWriter.Calls[3].Arguments[0]).To(Equal(filepath.Join(path, "test-include-files"))) 258 Expect(entryWriter.Calls[3].Arguments[1]).To(Equal(filepath.Join("test-destination", "test-include-files"))) 259 }) 260 261 it("includes filter by version", func() { 262 carton.Package{ 263 Source: path, 264 Destination: "test-destination", 265 IncludeDependencies: true, 266 CacheLocation: "testdata", 267 DependencyFilters: []string{`^1.1.1$`}, 268 }.Create( 269 carton.WithEntryWriter(entryWriter), 270 carton.WithExecutor(executor), 271 carton.WithExitHandler(exitHandler)) 272 273 Expect(entryWriter.Calls).To(HaveLen(6)) 274 Expect(entryWriter.Calls[0].Arguments[0]).To(Equal(filepath.Join(path, "buildpack.toml"))) 275 Expect(entryWriter.Calls[0].Arguments[1]).To(Equal(filepath.Join("test-destination", "buildpack.toml"))) 276 277 Expect(entryWriter.Calls[1].Arguments[0]).To(Equal("testdata/test-sha256-1.toml")) 278 Expect(entryWriter.Calls[1].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-1.toml"))) 279 Expect(entryWriter.Calls[2].Arguments[0]).To(Equal("testdata/test-sha256-1/test-uri-1")) 280 Expect(entryWriter.Calls[2].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-1/test-uri-1"))) 281 282 Expect(entryWriter.Calls[3].Arguments[0]).To(Equal("testdata/test-sha256-3.toml")) 283 Expect(entryWriter.Calls[3].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-3.toml"))) 284 Expect(entryWriter.Calls[4].Arguments[0]).To(Equal("testdata/test-sha256-3/test-uri-3")) 285 Expect(entryWriter.Calls[4].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-3/test-uri-3"))) 286 287 Expect(entryWriter.Calls[5].Arguments[0]).To(Equal(filepath.Join(path, "test-include-files"))) 288 Expect(entryWriter.Calls[5].Arguments[1]).To(Equal(filepath.Join("test-destination", "test-include-files"))) 289 }) 290 291 it("includes filter by version and id", func() { 292 carton.Package{ 293 Source: path, 294 Destination: "test-destination", 295 IncludeDependencies: true, 296 CacheLocation: "testdata", 297 DependencyFilters: []string{`^test-id$|^2\.0\.5$`}, 298 StrictDependencyFilters: true, 299 }.Create( 300 carton.WithEntryWriter(entryWriter), 301 carton.WithExecutor(executor), 302 carton.WithExitHandler(exitHandler)) 303 304 Expect(entryWriter.Calls).To(HaveLen(4)) 305 Expect(entryWriter.Calls[0].Arguments[0]).To(Equal(filepath.Join(path, "buildpack.toml"))) 306 Expect(entryWriter.Calls[0].Arguments[1]).To(Equal(filepath.Join("test-destination", "buildpack.toml"))) 307 308 Expect(entryWriter.Calls[1].Arguments[0]).To(Equal("testdata/test-sha256-2.toml")) 309 Expect(entryWriter.Calls[1].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-2.toml"))) 310 Expect(entryWriter.Calls[2].Arguments[0]).To(Equal("testdata/test-sha256-2/test-uri-2")) 311 Expect(entryWriter.Calls[2].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-2/test-uri-2"))) 312 313 Expect(entryWriter.Calls[3].Arguments[0]).To(Equal(filepath.Join(path, "test-include-files"))) 314 Expect(entryWriter.Calls[3].Arguments[1]).To(Equal(filepath.Join("test-destination", "test-include-files"))) 315 }) 316 }) 317 }) 318 319 context("with extension.toml", func() { 320 it.Before(func() { 321 entryWriter = &cMocks.EntryWriter{} 322 entryWriter.On("Write", mock.Anything, mock.Anything).Return(nil) 323 324 executor = &eMocks.Executor{} 325 executor.On("Execute", mock.Anything).Return(nil) 326 327 exitHandler = &mocks.ExitHandler{} 328 exitHandler.On("Error", mock.Anything) 329 330 path = t.TempDir() 331 332 Expect(os.WriteFile(filepath.Join(path, "extension.toml"), []byte(` 333 api = "0.0.0" 334 335 [extension] 336 name = "test-name" 337 version = "{{.version}}" 338 339 [[metadata.dependencies]] 340 id = "test-id" 341 name = "test-name" 342 version = "1.1.1" 343 uri = "test-uri" 344 sha256 = "test-sha256" 345 stacks = [ "test-stack" ] 346 347 [[metadata.dependencies.licenses]] 348 type = "test-type" 349 uri = "test-uri" 350 351 [metadata] 352 pre-package = "test-pre-package" 353 include-files = [ 354 "test-include-files", 355 "extension.toml", 356 ] 357 `), 0644)).To(Succeed()) 358 359 }) 360 361 it.After(func() { 362 Expect(os.RemoveAll(path)).To(Succeed()) 363 }) 364 365 it("executes pre_package script", func() { 366 carton.Package{ 367 Source: path, 368 }.Create( 369 carton.WithEntryWriter(entryWriter), 370 carton.WithExecutor(executor), 371 carton.WithExitHandler(exitHandler)) 372 373 e, ok := executor.Calls[0].Arguments[0].(effect.Execution) 374 Expect(ok).To(BeTrue()) 375 Expect(e.Command).To(Equal("test-pre-package")) 376 Expect(e.Dir).To(Equal(path)) 377 }) 378 379 it("includes include_files", func() { 380 carton.Package{ 381 Source: path, 382 Destination: "test-destination", 383 }.Create( 384 carton.WithEntryWriter(entryWriter), 385 carton.WithExecutor(executor), 386 carton.WithExitHandler(exitHandler)) 387 388 Expect(entryWriter.Calls[0].Arguments[0]).To(Equal(filepath.Join(path, "extension.toml"))) 389 Expect(entryWriter.Calls[0].Arguments[1]).To(Equal(filepath.Join("test-destination", "extension.toml"))) 390 Expect(entryWriter.Calls[1].Arguments[0]).To(Equal(filepath.Join(path, "test-include-files"))) 391 Expect(entryWriter.Calls[1].Arguments[1]).To(Equal(filepath.Join("test-destination", "test-include-files"))) 392 }) 393 394 it("replaces .version in extension.toml", func() { 395 carton.Package{ 396 Source: path, 397 Destination: "test-destination", 398 Version: "2.2.2", 399 }.Create( 400 carton.WithEntryWriter(entryWriter), 401 carton.WithExecutor(executor), 402 carton.WithExitHandler(exitHandler)) 403 404 Expect(entryWriter.Calls[0].Arguments[0]).NotTo(Equal(filepath.Join(path, "extension.toml"))) 405 Expect(entryWriter.Calls[0].Arguments[1]).To(Equal(filepath.Join("test-destination", "extension.toml"))) 406 Expect(entryWriter.Calls[1].Arguments[0]).To(Equal(filepath.Join(path, "test-include-files"))) 407 Expect(entryWriter.Calls[1].Arguments[1]).To(Equal(filepath.Join("test-destination", "test-include-files"))) 408 409 Expect(os.ReadFile(entryWriter.Calls[0].Arguments[0].(string))).To(Equal([]byte(` 410 api = "0.0.0" 411 412 [extension] 413 name = "test-name" 414 version = "2.2.2" 415 416 [[metadata.dependencies]] 417 id = "test-id" 418 name = "test-name" 419 version = "1.1.1" 420 uri = "test-uri" 421 sha256 = "test-sha256" 422 stacks = [ "test-stack" ] 423 424 [[metadata.dependencies.licenses]] 425 type = "test-type" 426 uri = "test-uri" 427 428 [metadata] 429 pre-package = "test-pre-package" 430 include-files = [ 431 "test-include-files", 432 "extension.toml", 433 ] 434 `))) 435 }) 436 437 context("includes dependencies", func() { 438 it.Before(func() { 439 Expect(os.WriteFile(filepath.Join(path, "extension.toml"), []byte(` 440 api = "0.0.0" 441 442 [extension] 443 name = "test-name" 444 version = "{{.version}}" 445 446 [[metadata.dependencies]] 447 id = "test-id" 448 name = "test-name" 449 version = "1.1.1" 450 uri = "test-uri-1" 451 sha256 = "test-sha256-1" 452 453 [[metadata.dependencies]] 454 id = "test-id" 455 name = "test-name" 456 version = "2.0.5" 457 uri = "test-uri-2" 458 sha256 = "test-sha256-2" 459 460 [[metadata.dependencies]] 461 id = "another-test-id" 462 name = "test-name" 463 version = "1.1.1" 464 uri = "test-uri-3" 465 sha256 = "test-sha256-3" 466 467 [metadata] 468 pre-package = "test-pre-package" 469 include-files = [ 470 "test-include-files", 471 "extension.toml", 472 ] 473 `), 0644)).To(Succeed()) 474 }) 475 476 it("includes all dependencies", func() { 477 carton.Package{ 478 Source: path, 479 Destination: "test-destination", 480 IncludeDependencies: true, 481 CacheLocation: "testdata", 482 }.Create( 483 carton.WithEntryWriter(entryWriter), 484 carton.WithExecutor(executor), 485 carton.WithExitHandler(exitHandler)) 486 487 Expect(entryWriter.Calls).To(HaveLen(8)) 488 489 Expect(entryWriter.Calls[0].Arguments[0]).To(Equal("testdata/test-sha256-1.toml")) 490 Expect(entryWriter.Calls[0].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-1.toml"))) 491 Expect(entryWriter.Calls[1].Arguments[0]).To(Equal("testdata/test-sha256-1/test-uri-1")) 492 Expect(entryWriter.Calls[1].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-1/test-uri-1"))) 493 494 Expect(entryWriter.Calls[2].Arguments[0]).To(Equal("testdata/test-sha256-2.toml")) 495 Expect(entryWriter.Calls[2].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-2.toml"))) 496 Expect(entryWriter.Calls[3].Arguments[0]).To(Equal("testdata/test-sha256-2/test-uri-2")) 497 Expect(entryWriter.Calls[3].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-2/test-uri-2"))) 498 499 Expect(entryWriter.Calls[4].Arguments[0]).To(Equal("testdata/test-sha256-3.toml")) 500 Expect(entryWriter.Calls[4].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-3.toml"))) 501 Expect(entryWriter.Calls[5].Arguments[0]).To(Equal("testdata/test-sha256-3/test-uri-3")) 502 Expect(entryWriter.Calls[5].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-3/test-uri-3"))) 503 504 Expect(entryWriter.Calls[6].Arguments[0]).To(Equal(filepath.Join(path, "extension.toml"))) 505 Expect(entryWriter.Calls[6].Arguments[1]).To(Equal(filepath.Join("test-destination", "extension.toml"))) 506 507 Expect(entryWriter.Calls[7].Arguments[0]).To(Equal(filepath.Join(path, "test-include-files"))) 508 Expect(entryWriter.Calls[7].Arguments[1]).To(Equal(filepath.Join("test-destination", "test-include-files"))) 509 }) 510 511 it("includes filter by id", func() { 512 carton.Package{ 513 Source: path, 514 Destination: "test-destination", 515 IncludeDependencies: true, 516 CacheLocation: "testdata", 517 DependencyFilters: []string{`^another-test-id$`}, 518 }.Create( 519 carton.WithEntryWriter(entryWriter), 520 carton.WithExecutor(executor), 521 carton.WithExitHandler(exitHandler)) 522 523 Expect(entryWriter.Calls).To(HaveLen(4)) 524 525 Expect(entryWriter.Calls[0].Arguments[0]).To(Equal("testdata/test-sha256-3.toml")) 526 Expect(entryWriter.Calls[0].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-3.toml"))) 527 Expect(entryWriter.Calls[1].Arguments[0]).To(Equal("testdata/test-sha256-3/test-uri-3")) 528 Expect(entryWriter.Calls[1].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-3/test-uri-3"))) 529 530 Expect(entryWriter.Calls[2].Arguments[0]).To(Equal(filepath.Join(path, "extension.toml"))) 531 Expect(entryWriter.Calls[2].Arguments[1]).To(Equal(filepath.Join("test-destination", "extension.toml"))) 532 533 Expect(entryWriter.Calls[3].Arguments[0]).To(Equal(filepath.Join(path, "test-include-files"))) 534 Expect(entryWriter.Calls[3].Arguments[1]).To(Equal(filepath.Join("test-destination", "test-include-files"))) 535 }) 536 537 it("includes filter by version", func() { 538 carton.Package{ 539 Source: path, 540 Destination: "test-destination", 541 IncludeDependencies: true, 542 CacheLocation: "testdata", 543 DependencyFilters: []string{`^1.1.1$`}, 544 }.Create( 545 carton.WithEntryWriter(entryWriter), 546 carton.WithExecutor(executor), 547 carton.WithExitHandler(exitHandler)) 548 549 Expect(entryWriter.Calls).To(HaveLen(6)) 550 551 Expect(entryWriter.Calls[0].Arguments[0]).To(Equal("testdata/test-sha256-1.toml")) 552 Expect(entryWriter.Calls[0].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-1.toml"))) 553 Expect(entryWriter.Calls[1].Arguments[0]).To(Equal("testdata/test-sha256-1/test-uri-1")) 554 Expect(entryWriter.Calls[1].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-1/test-uri-1"))) 555 556 Expect(entryWriter.Calls[2].Arguments[0]).To(Equal("testdata/test-sha256-3.toml")) 557 Expect(entryWriter.Calls[2].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-3.toml"))) 558 Expect(entryWriter.Calls[3].Arguments[0]).To(Equal("testdata/test-sha256-3/test-uri-3")) 559 Expect(entryWriter.Calls[3].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-3/test-uri-3"))) 560 561 Expect(entryWriter.Calls[4].Arguments[0]).To(Equal(filepath.Join(path, "extension.toml"))) 562 Expect(entryWriter.Calls[4].Arguments[1]).To(Equal(filepath.Join("test-destination", "extension.toml"))) 563 564 Expect(entryWriter.Calls[5].Arguments[0]).To(Equal(filepath.Join(path, "test-include-files"))) 565 Expect(entryWriter.Calls[5].Arguments[1]).To(Equal(filepath.Join("test-destination", "test-include-files"))) 566 }) 567 568 it("includes filter by version and id", func() { 569 carton.Package{ 570 Source: path, 571 Destination: "test-destination", 572 IncludeDependencies: true, 573 CacheLocation: "testdata", 574 DependencyFilters: []string{`^test-id$|^2\.0\.5$`}, 575 StrictDependencyFilters: true, 576 }.Create( 577 carton.WithEntryWriter(entryWriter), 578 carton.WithExecutor(executor), 579 carton.WithExitHandler(exitHandler)) 580 581 Expect(entryWriter.Calls).To(HaveLen(4)) 582 583 Expect(entryWriter.Calls[0].Arguments[0]).To(Equal("testdata/test-sha256-2.toml")) 584 Expect(entryWriter.Calls[0].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-2.toml"))) 585 Expect(entryWriter.Calls[1].Arguments[0]).To(Equal("testdata/test-sha256-2/test-uri-2")) 586 Expect(entryWriter.Calls[1].Arguments[1]).To(Equal(filepath.Join("test-destination", "dependencies/test-sha256-2/test-uri-2"))) 587 588 Expect(entryWriter.Calls[2].Arguments[0]).To(Equal(filepath.Join(path, "extension.toml"))) 589 Expect(entryWriter.Calls[2].Arguments[1]).To(Equal(filepath.Join("test-destination", "extension.toml"))) 590 591 Expect(entryWriter.Calls[3].Arguments[0]).To(Equal(filepath.Join(path, "test-include-files"))) 592 Expect(entryWriter.Calls[3].Arguments[1]).To(Equal(filepath.Join("test-destination", "test-include-files"))) 593 }) 594 }) 595 }) 596 597 }