github.com/windmeup/goreleaser@v1.21.95/internal/pipe/release/release_test.go (about) 1 package release 2 3 import ( 4 "os" 5 "path/filepath" 6 "strings" 7 "testing" 8 9 "github.com/stretchr/testify/require" 10 "github.com/windmeup/goreleaser/internal/artifact" 11 "github.com/windmeup/goreleaser/internal/client" 12 "github.com/windmeup/goreleaser/internal/testctx" 13 "github.com/windmeup/goreleaser/internal/testlib" 14 "github.com/windmeup/goreleaser/pkg/config" 15 "github.com/windmeup/goreleaser/pkg/context" 16 ) 17 18 func TestPipeDescription(t *testing.T) { 19 require.NotEmpty(t, Pipe{}.String()) 20 } 21 22 func createTmpFile(tb testing.TB, folder, path string) string { 23 tb.Helper() 24 f, err := os.Create(filepath.Join(folder, path)) 25 require.NoError(tb, err) 26 require.NoError(tb, f.Close()) 27 return f.Name() 28 } 29 30 func TestRunPipeWithoutIDsThenDoesNotFilter(t *testing.T) { 31 folder := t.TempDir() 32 tarfile := createTmpFile(t, folder, "bin.tar.gz") 33 srcfile := createTmpFile(t, folder, "source.tar.gz") 34 debfile := createTmpFile(t, folder, "bin.deb") 35 checksumfile := createTmpFile(t, folder, "checksum") 36 checksumsigfile := createTmpFile(t, folder, "checksum.sig") 37 checksumpemfile := createTmpFile(t, folder, "checksum.pem") 38 filteredtarfile := createTmpFile(t, folder, "filtered.tar.gz") 39 filtereddebfile := createTmpFile(t, folder, "filtered.deb") 40 41 config := config.Project{ 42 Dist: folder, 43 Release: config.Release{ 44 GitHub: config.Repo{ 45 Owner: "test", 46 Name: "test", 47 }, 48 }, 49 } 50 ctx := testctx.NewWithCfg(config, testctx.WithCurrentTag("v1.0.0")) 51 ctx.Artifacts.Add(&artifact.Artifact{ 52 Type: artifact.UploadableArchive, 53 Name: "bin.tar.gz", 54 Path: tarfile, 55 Extra: map[string]interface{}{ 56 artifact.ExtraID: "foo", 57 }, 58 }) 59 ctx.Artifacts.Add(&artifact.Artifact{ 60 Type: artifact.LinuxPackage, 61 Name: "bin.deb", 62 Path: debfile, 63 Extra: map[string]interface{}{ 64 artifact.ExtraID: "foo", 65 }, 66 }) 67 ctx.Artifacts.Add(&artifact.Artifact{ 68 Type: artifact.UploadableArchive, 69 Name: "filtered.tar.gz", 70 Path: filteredtarfile, 71 Extra: map[string]interface{}{ 72 artifact.ExtraID: "bar", 73 }, 74 }) 75 ctx.Artifacts.Add(&artifact.Artifact{ 76 Type: artifact.LinuxPackage, 77 Name: "filtered.deb", 78 Path: filtereddebfile, 79 Extra: map[string]interface{}{ 80 artifact.ExtraID: "bar", 81 }, 82 }) 83 ctx.Artifacts.Add(&artifact.Artifact{ 84 Type: artifact.UploadableSourceArchive, 85 Name: "source.tar.gz", 86 Path: srcfile, 87 Extra: map[string]interface{}{ 88 artifact.ExtraFormat: "tar.gz", 89 }, 90 }) 91 92 ctx.Artifacts.Add(&artifact.Artifact{ 93 Type: artifact.Checksum, 94 Name: "checksum", 95 Path: checksumfile, 96 Extra: map[string]interface{}{ 97 artifact.ExtraID: "bar", 98 }, 99 }) 100 ctx.Artifacts.Add(&artifact.Artifact{ 101 Type: artifact.Signature, 102 Name: "checksum.sig", 103 Path: checksumsigfile, 104 Extra: map[string]interface{}{ 105 artifact.ExtraID: "bar", 106 }, 107 }) 108 ctx.Artifacts.Add(&artifact.Artifact{ 109 Type: artifact.Certificate, 110 Name: "checksum.pem", 111 Path: checksumpemfile, 112 Extra: map[string]interface{}{ 113 artifact.ExtraID: "bar", 114 }, 115 }) 116 client := &client.Mock{} 117 require.NoError(t, doPublish(ctx, client)) 118 require.True(t, client.CreatedRelease) 119 require.True(t, client.UploadedFile) 120 require.Contains(t, client.UploadedFileNames, "source.tar.gz") 121 require.Contains(t, client.UploadedFileNames, "bin.deb") 122 require.Contains(t, client.UploadedFileNames, "bin.tar.gz") 123 require.Contains(t, client.UploadedFileNames, "filtered.deb") 124 require.Contains(t, client.UploadedFileNames, "filtered.tar.gz") 125 require.Contains(t, client.UploadedFileNames, "checksum") 126 require.Contains(t, client.UploadedFileNames, "checksum.pem") 127 require.Contains(t, client.UploadedFileNames, "checksum.sig") 128 } 129 130 func TestRunPipeWithIDsThenFilters(t *testing.T) { 131 folder := t.TempDir() 132 tarfile, err := os.Create(filepath.Join(folder, "bin.tar.gz")) 133 require.NoError(t, err) 134 require.NoError(t, tarfile.Close()) 135 debfile, err := os.Create(filepath.Join(folder, "bin.deb")) 136 require.NoError(t, err) 137 require.NoError(t, debfile.Close()) 138 filteredtarfile, err := os.Create(filepath.Join(folder, "filtered.tar.gz")) 139 require.NoError(t, err) 140 require.NoError(t, filteredtarfile.Close()) 141 filtereddebfile, err := os.Create(filepath.Join(folder, "filtered.deb")) 142 require.NoError(t, err) 143 require.NoError(t, filtereddebfile.Close()) 144 145 config := config.Project{ 146 Dist: folder, 147 Release: config.Release{ 148 GitHub: config.Repo{ 149 Owner: "test", 150 Name: "test", 151 }, 152 IDs: []string{"foo"}, 153 ExtraFiles: []config.ExtraFile{ 154 {Glob: "./testdata/**/*"}, 155 }, 156 }, 157 } 158 ctx := testctx.NewWithCfg(config, testctx.WithCurrentTag("v1.0.0")) 159 ctx.Artifacts.Add(&artifact.Artifact{ 160 Type: artifact.UploadableArchive, 161 Name: "bin.tar.gz", 162 Path: tarfile.Name(), 163 Extra: map[string]interface{}{ 164 artifact.ExtraID: "foo", 165 }, 166 }) 167 ctx.Artifacts.Add(&artifact.Artifact{ 168 Type: artifact.LinuxPackage, 169 Name: "bin.deb", 170 Path: debfile.Name(), 171 Extra: map[string]interface{}{ 172 artifact.ExtraID: "foo", 173 }, 174 }) 175 ctx.Artifacts.Add(&artifact.Artifact{ 176 Type: artifact.UploadableArchive, 177 Name: "filtered.tar.gz", 178 Path: filteredtarfile.Name(), 179 Extra: map[string]interface{}{ 180 artifact.ExtraID: "bar", 181 }, 182 }) 183 ctx.Artifacts.Add(&artifact.Artifact{ 184 Type: artifact.LinuxPackage, 185 Name: "filtered.deb", 186 Path: filtereddebfile.Name(), 187 Extra: map[string]interface{}{ 188 artifact.ExtraID: "bar", 189 }, 190 }) 191 client := &client.Mock{} 192 require.NoError(t, doPublish(ctx, client)) 193 require.True(t, client.CreatedRelease) 194 require.True(t, client.UploadedFile) 195 require.Contains(t, client.UploadedFileNames, "bin.deb") 196 require.Contains(t, client.UploadedFileNames, "bin.tar.gz") 197 require.Contains(t, client.UploadedFileNames, "f1") 198 require.NotContains(t, client.UploadedFileNames, "filtered.deb") 199 require.NotContains(t, client.UploadedFileNames, "filtered.tar.gz") 200 } 201 202 func TestRunPipeReleaseCreationFailed(t *testing.T) { 203 config := config.Project{ 204 Release: config.Release{ 205 GitHub: config.Repo{ 206 Owner: "test", 207 Name: "test", 208 }, 209 }, 210 } 211 ctx := testctx.NewWithCfg(config, testctx.WithCurrentTag("v1.0.0")) 212 client := &client.Mock{ 213 FailToCreateRelease: true, 214 } 215 require.Error(t, doPublish(ctx, client)) 216 require.False(t, client.CreatedRelease) 217 require.False(t, client.UploadedFile) 218 } 219 220 func TestRunPipeWithFileThatDontExist(t *testing.T) { 221 config := config.Project{ 222 Release: config.Release{ 223 GitHub: config.Repo{ 224 Owner: "test", 225 Name: "test", 226 }, 227 }, 228 } 229 ctx := testctx.NewWithCfg(config, testctx.WithCurrentTag("v1.0.0")) 230 ctx.Artifacts.Add(&artifact.Artifact{ 231 Type: artifact.UploadableArchive, 232 Name: "bin.tar.gz", 233 Path: "/nope/nope/nope", 234 }) 235 client := &client.Mock{} 236 require.Error(t, doPublish(ctx, client)) 237 require.True(t, client.CreatedRelease) 238 require.False(t, client.UploadedFile) 239 } 240 241 func TestRunPipeUploadFailure(t *testing.T) { 242 folder := t.TempDir() 243 tarfile, err := os.Create(filepath.Join(folder, "bin.tar.gz")) 244 require.NoError(t, err) 245 config := config.Project{ 246 Release: config.Release{ 247 GitHub: config.Repo{ 248 Owner: "test", 249 Name: "test", 250 }, 251 }, 252 } 253 ctx := testctx.NewWithCfg(config, testctx.WithCurrentTag("v1.0.0")) 254 ctx.Artifacts.Add(&artifact.Artifact{ 255 Type: artifact.UploadableArchive, 256 Name: "bin.tar.gz", 257 Path: tarfile.Name(), 258 }) 259 client := &client.Mock{ 260 FailToUpload: true, 261 } 262 require.EqualError(t, doPublish(ctx, client), "failed to upload bin.tar.gz after 1 tries: upload failed") 263 require.True(t, client.CreatedRelease) 264 require.False(t, client.UploadedFile) 265 } 266 267 func TestRunPipeExtraFileNotFound(t *testing.T) { 268 config := config.Project{ 269 Release: config.Release{ 270 GitHub: config.Repo{ 271 Owner: "test", 272 Name: "test", 273 }, 274 ExtraFiles: []config.ExtraFile{ 275 {Glob: "./testdata/f1.txt"}, 276 {Glob: "./nope"}, 277 }, 278 }, 279 } 280 ctx := testctx.NewWithCfg(config, testctx.WithCurrentTag("v1.0.0")) 281 client := &client.Mock{} 282 require.EqualError(t, doPublish(ctx, client), "globbing failed for pattern ./nope: matching \"./nope\": file does not exist") 283 require.True(t, client.CreatedRelease) 284 require.False(t, client.UploadedFile) 285 } 286 287 func TestRunPipeExtraOverride(t *testing.T) { 288 config := config.Project{ 289 Release: config.Release{ 290 GitHub: config.Repo{ 291 Owner: "test", 292 Name: "test", 293 }, 294 ExtraFiles: []config.ExtraFile{ 295 {Glob: "./testdata/**/*"}, 296 {Glob: "./testdata/upload_same_name/f1"}, 297 }, 298 }, 299 } 300 ctx := testctx.NewWithCfg(config, testctx.WithCurrentTag("v1.0.0")) 301 client := &client.Mock{} 302 require.NoError(t, doPublish(ctx, client)) 303 require.True(t, client.CreatedRelease) 304 require.True(t, client.UploadedFile) 305 require.Contains(t, client.UploadedFileNames, "f1") 306 require.True(t, strings.HasSuffix(client.UploadedFilePaths["f1"], "testdata/upload_same_name/f1")) 307 } 308 309 func TestRunPipeUploadRetry(t *testing.T) { 310 folder := t.TempDir() 311 tarfile, err := os.Create(filepath.Join(folder, "bin.tar.gz")) 312 require.NoError(t, err) 313 config := config.Project{ 314 Release: config.Release{ 315 GitHub: config.Repo{ 316 Owner: "test", 317 Name: "test", 318 }, 319 }, 320 } 321 ctx := testctx.NewWithCfg(config, testctx.WithCurrentTag("v1.0.0")) 322 ctx.Artifacts.Add(&artifact.Artifact{ 323 Type: artifact.UploadableArchive, 324 Name: "bin.tar.gz", 325 Path: tarfile.Name(), 326 }) 327 client := &client.Mock{ 328 FailFirstUpload: true, 329 } 330 require.NoError(t, doPublish(ctx, client)) 331 require.True(t, client.CreatedRelease) 332 require.True(t, client.UploadedFile) 333 } 334 335 func TestDefault(t *testing.T) { 336 testlib.Mktmp(t) 337 testlib.GitInit(t) 338 testlib.GitRemoteAdd(t, "git@github.com:goreleaser/goreleaser.git") 339 340 ctx := testctx.NewWithCfg( 341 config.Project{ 342 GitHubURLs: config.GitHubURLs{ 343 Download: "https://github.com", 344 }, 345 }, 346 testctx.GitHubTokenType, 347 testctx.WithCurrentTag("v1.0.0"), 348 ) 349 require.NoError(t, Pipe{}.Default(ctx)) 350 require.Equal(t, "goreleaser", ctx.Config.Release.GitHub.Name) 351 require.Equal(t, "goreleaser", ctx.Config.Release.GitHub.Owner) 352 require.Equal(t, "https://github.com/windmeup/goreleaser/releases/tag/v1.0.0", ctx.ReleaseURL) 353 } 354 355 func TestDefaultInvalidURL(t *testing.T) { 356 testlib.Mktmp(t) 357 testlib.GitInit(t) 358 testlib.GitRemoteAdd(t, "git@github.com:goreleaser.git") 359 ctx := testctx.NewWithCfg( 360 config.Project{ 361 GitHubURLs: config.GitHubURLs{ 362 Download: "https://github.com", 363 }, 364 }, 365 testctx.GitHubTokenType, 366 testctx.WithCurrentTag("v1.0.0"), 367 ) 368 require.Error(t, Pipe{}.Default(ctx)) 369 } 370 371 func TestDefaultWithGitlab(t *testing.T) { 372 testlib.Mktmp(t) 373 testlib.GitInit(t) 374 testlib.GitRemoteAdd(t, "git@gitlab.com:gitlabowner/gitlabrepo.git") 375 376 ctx := testctx.NewWithCfg( 377 config.Project{ 378 GitLabURLs: config.GitLabURLs{ 379 Download: "https://gitlab.com", 380 }, 381 }, 382 testctx.GitLabTokenType, 383 testctx.WithCurrentTag("v1.0.0"), 384 ) 385 require.NoError(t, Pipe{}.Default(ctx)) 386 require.Equal(t, "gitlabrepo", ctx.Config.Release.GitLab.Name) 387 require.Equal(t, "gitlabowner", ctx.Config.Release.GitLab.Owner) 388 require.Equal(t, "https://gitlab.com/gitlabowner/gitlabrepo/-/releases/v1.0.0", ctx.ReleaseURL) 389 } 390 391 func TestDefaultWithGitlabInvalidURL(t *testing.T) { 392 testlib.Mktmp(t) 393 testlib.GitInit(t) 394 testlib.GitRemoteAdd(t, "git@gitlab.com:gitlabrepo.git") 395 ctx := testctx.NewWithCfg( 396 config.Project{ 397 GitLabURLs: config.GitLabURLs{ 398 Download: "https://gitlab.com", 399 }, 400 }, 401 testctx.GiteaTokenType, 402 testctx.WithCurrentTag("v1.0.0"), 403 ) 404 require.Error(t, Pipe{}.Default(ctx)) 405 } 406 407 func TestDefaultWithGitea(t *testing.T) { 408 testlib.Mktmp(t) 409 testlib.GitInit(t) 410 testlib.GitRemoteAdd(t, "git@gitea.example.com:giteaowner/gitearepo.git") 411 412 ctx := testctx.NewWithCfg( 413 config.Project{ 414 GiteaURLs: config.GiteaURLs{ 415 Download: "https://git.honk.com", 416 }, 417 }, 418 testctx.GiteaTokenType, 419 testctx.WithCurrentTag("v1.0.0"), 420 ) 421 require.NoError(t, Pipe{}.Default(ctx)) 422 require.Equal(t, "gitearepo", ctx.Config.Release.Gitea.Name) 423 require.Equal(t, "giteaowner", ctx.Config.Release.Gitea.Owner) 424 require.Equal(t, "https://git.honk.com/giteaowner/gitearepo/releases/tag/v1.0.0", ctx.ReleaseURL) 425 } 426 427 func TestDefaultWithGiteaInvalidURL(t *testing.T) { 428 testlib.Mktmp(t) 429 testlib.GitInit(t) 430 testlib.GitRemoteAdd(t, "git@gitea.example.com:gitearepo.git") 431 ctx := testctx.NewWithCfg( 432 config.Project{ 433 GiteaURLs: config.GiteaURLs{ 434 Download: "https://git.honk.com", 435 }, 436 }, 437 testctx.GiteaTokenType, 438 testctx.WithCurrentTag("v1.0.0"), 439 ) 440 require.Error(t, Pipe{}.Default(ctx)) 441 } 442 443 func TestDefaultPreRelease(t *testing.T) { 444 testlib.Mktmp(t) 445 testlib.GitInit(t) 446 testlib.GitRemoteAdd(t, "git@github.com:goreleaser/goreleaser.git") 447 448 t.Run("prerelease", func(t *testing.T) { 449 ctx := testctx.NewWithCfg(config.Project{ 450 Release: config.Release{ 451 Prerelease: "true", 452 }, 453 }) 454 ctx.TokenType = context.TokenTypeGitHub 455 ctx.Semver = context.Semver{ 456 Major: 1, 457 Minor: 0, 458 Patch: 0, 459 } 460 require.NoError(t, Pipe{}.Default(ctx)) 461 require.True(t, ctx.PreRelease) 462 }) 463 464 t.Run("release", func(t *testing.T) { 465 ctx := testctx.NewWithCfg(config.Project{ 466 Release: config.Release{}, 467 }) 468 ctx.TokenType = context.TokenTypeGitHub 469 ctx.Semver = context.Semver{ 470 Major: 1, 471 Minor: 0, 472 Patch: 0, 473 Prerelease: "rc1", 474 } 475 require.NoError(t, Pipe{}.Default(ctx)) 476 require.False(t, ctx.PreRelease) 477 }) 478 479 t.Run("auto-release", func(t *testing.T) { 480 ctx := testctx.NewWithCfg( 481 config.Project{ 482 Release: config.Release{ 483 Prerelease: "auto", 484 }, 485 }, 486 testctx.GitHubTokenType, 487 testctx.WithSemver(1, 0, 0, ""), 488 ) 489 require.NoError(t, Pipe{}.Default(ctx)) 490 require.Equal(t, false, ctx.PreRelease) 491 }) 492 493 t.Run("auto-rc", func(t *testing.T) { 494 ctx := testctx.NewWithCfg( 495 config.Project{ 496 Release: config.Release{ 497 Prerelease: "auto", 498 }, 499 }, 500 testctx.GitHubTokenType, 501 testctx.WithSemver(1, 0, 0, "rc1"), 502 ) 503 require.NoError(t, Pipe{}.Default(ctx)) 504 require.Equal(t, true, ctx.PreRelease) 505 }) 506 507 t.Run("auto-rc-github-setup", func(t *testing.T) { 508 ctx := testctx.NewWithCfg( 509 config.Project{ 510 Release: config.Release{ 511 GitHub: config.Repo{ 512 Name: "foo", 513 Owner: "foo", 514 }, 515 Prerelease: "auto", 516 }, 517 }, 518 testctx.GitHubTokenType, 519 testctx.WithSemver(1, 0, 0, "rc1"), 520 ) 521 require.NoError(t, Pipe{}.Default(ctx)) 522 require.Equal(t, true, ctx.PreRelease) 523 }) 524 } 525 526 func TestDefaultPipeDisabled(t *testing.T) { 527 testlib.Mktmp(t) 528 testlib.GitInit(t) 529 testlib.GitRemoteAdd(t, "git@github.com:goreleaser/goreleaser.git") 530 531 ctx := testctx.NewWithCfg(config.Project{ 532 Release: config.Release{ 533 Disable: "true", 534 }, 535 }) 536 ctx.TokenType = context.TokenTypeGitHub 537 testlib.AssertSkipped(t, Pipe{}.Default(ctx)) 538 require.Empty(t, ctx.Config.Release.GitHub.Name) 539 require.Empty(t, ctx.Config.Release.GitHub.Owner) 540 } 541 542 func TestDefaultFilled(t *testing.T) { 543 testlib.Mktmp(t) 544 testlib.GitInit(t) 545 testlib.GitRemoteAdd(t, "git@github.com:goreleaser/goreleaser.git") 546 547 ctx := testctx.NewWithCfg(config.Project{ 548 Release: config.Release{ 549 GitHub: config.Repo{ 550 Name: "foo", 551 Owner: "bar", 552 }, 553 }, 554 }) 555 ctx.TokenType = context.TokenTypeGitHub 556 require.NoError(t, Pipe{}.Default(ctx)) 557 require.Equal(t, "foo", ctx.Config.Release.GitHub.Name) 558 require.Equal(t, "bar", ctx.Config.Release.GitHub.Owner) 559 } 560 561 func TestDefaultNotAGitRepo(t *testing.T) { 562 testlib.Mktmp(t) 563 ctx := testctx.New(testctx.GitHubTokenType) 564 require.EqualError(t, Pipe{}.Default(ctx), "current folder is not a git repository") 565 require.Empty(t, ctx.Config.Release.GitHub.String()) 566 } 567 568 func TestDefaultGitRepoWithoutOrigin(t *testing.T) { 569 testlib.Mktmp(t) 570 ctx := testctx.New(testctx.GitHubTokenType) 571 testlib.GitInit(t) 572 require.EqualError(t, Pipe{}.Default(ctx), "no remote configured to list refs from") 573 require.Empty(t, ctx.Config.Release.GitHub.String()) 574 } 575 576 func TestDefaultNotAGitRepoSnapshot(t *testing.T) { 577 testlib.Mktmp(t) 578 ctx := testctx.New(testctx.GitHubTokenType, testctx.Snapshot) 579 require.NoError(t, Pipe{}.Default(ctx)) 580 require.Empty(t, ctx.Config.Release.GitHub.String()) 581 } 582 583 func TestDefaultGitRepoWithoutRemote(t *testing.T) { 584 testlib.Mktmp(t) 585 ctx := testctx.New(testctx.GitHubTokenType) 586 require.Error(t, Pipe{}.Default(ctx)) 587 require.Empty(t, ctx.Config.Release.GitHub.String()) 588 } 589 590 func TestDefaultMultipleReleasesDefined(t *testing.T) { 591 ctx := testctx.NewWithCfg(config.Project{ 592 Release: config.Release{ 593 GitHub: config.Repo{ 594 Owner: "githubName", 595 Name: "githubName", 596 }, 597 GitLab: config.Repo{ 598 Owner: "gitlabOwner", 599 Name: "gitlabName", 600 }, 601 Gitea: config.Repo{ 602 Owner: "giteaOwner", 603 Name: "giteaName", 604 }, 605 }, 606 }) 607 require.EqualError(t, Pipe{}.Default(ctx), ErrMultipleReleases.Error()) 608 } 609 610 func TestSkip(t *testing.T) { 611 t.Run("skip", func(t *testing.T) { 612 ctx := testctx.NewWithCfg(config.Project{ 613 Release: config.Release{ 614 Disable: "true", 615 }, 616 }) 617 b, err := Pipe{}.Skip(ctx) 618 require.NoError(t, err) 619 require.True(t, b) 620 }) 621 622 t.Run("skip tmpl", func(t *testing.T) { 623 ctx := testctx.NewWithCfg(config.Project{ 624 Env: []string{"FOO=true"}, 625 Release: config.Release{ 626 Disable: "{{ .Env.FOO }}", 627 }, 628 }) 629 b, err := Pipe{}.Skip(ctx) 630 require.NoError(t, err) 631 require.True(t, b) 632 }) 633 634 t.Run("tmpl err", func(t *testing.T) { 635 ctx := testctx.NewWithCfg(config.Project{ 636 Release: config.Release{ 637 Disable: "{{ .Env.FOO }}", 638 }, 639 }) 640 _, err := Pipe{}.Skip(ctx) 641 require.Error(t, err) 642 }) 643 644 t.Run("skip upload", func(t *testing.T) { 645 ctx := testctx.NewWithCfg(config.Project{ 646 Env: []string{"FOO=true"}, 647 Release: config.Release{ 648 SkipUpload: "{{ .Env.FOO }}", 649 }, 650 }) 651 client := &client.Mock{} 652 testlib.AssertSkipped(t, doPublish(ctx, client)) 653 require.True(t, client.CreatedRelease) 654 require.False(t, client.UploadedFile) 655 }) 656 657 t.Run("skip upload tmpl", func(t *testing.T) { 658 ctx := testctx.NewWithCfg(config.Project{ 659 Release: config.Release{ 660 SkipUpload: "true", 661 }, 662 }) 663 client := &client.Mock{} 664 testlib.AssertSkipped(t, doPublish(ctx, client)) 665 require.True(t, client.CreatedRelease) 666 require.False(t, client.UploadedFile) 667 }) 668 669 t.Run("dont skip", func(t *testing.T) { 670 b, err := Pipe{}.Skip(testctx.New()) 671 require.NoError(t, err) 672 require.False(t, b) 673 }) 674 }