github.com/tomsquest/goreleaser@v0.34.3-0.20171008022654-7d6ef4d338b3/pipeline/checksums/checksums_test.go (about) 1 package checksums 2 3 import ( 4 "io/ioutil" 5 "path/filepath" 6 "testing" 7 8 "github.com/goreleaser/goreleaser/config" 9 "github.com/goreleaser/goreleaser/context" 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestDescription(t *testing.T) { 14 assert.NotEmpty(t, Pipe{}.Description()) 15 } 16 17 func TestPipe(t *testing.T) { 18 var binary = "binary" 19 var checksums = binary + "_checksums.txt" 20 folder, err := ioutil.TempDir("", "goreleasertest") 21 assert.NoError(t, err) 22 var file = filepath.Join(folder, binary) 23 assert.NoError(t, ioutil.WriteFile(file, []byte("some string"), 0644)) 24 var ctx = &context.Context{ 25 Config: config.Project{ 26 Dist: folder, 27 ProjectName: binary, 28 Checksum: config.Checksum{ 29 NameTemplate: "{{ .ProjectName }}_checksums.txt", 30 }, 31 }, 32 } 33 ctx.AddArtifact(file) 34 assert.NoError(t, Pipe{}.Run(ctx)) 35 assert.Contains(t, ctx.Artifacts, checksums, binary) 36 bts, err := ioutil.ReadFile(filepath.Join(folder, checksums)) 37 assert.NoError(t, err) 38 assert.Equal(t, string(bts), "61d034473102d7dac305902770471fd50f4c5b26f6831a56dd90b5184b3c30fc binary\n") 39 } 40 41 func TestPipeFileNotExist(t *testing.T) { 42 folder, err := ioutil.TempDir("", "goreleasertest") 43 assert.NoError(t, err) 44 var ctx = &context.Context{ 45 Config: config.Project{ 46 Dist: folder, 47 Checksum: config.Checksum{ 48 NameTemplate: "checksums.txt", 49 }, 50 }, 51 } 52 ctx.AddArtifact("nope") 53 err = Pipe{}.Run(ctx) 54 assert.Error(t, err) 55 assert.Contains(t, err.Error(), "/nope: no such file or directory") 56 } 57 58 func TestPipeInvalidNameTemplate(t *testing.T) { 59 folder, err := ioutil.TempDir("", "goreleasertest") 60 assert.NoError(t, err) 61 var ctx = &context.Context{ 62 Config: config.Project{ 63 Dist: folder, 64 ProjectName: "name", 65 Checksum: config.Checksum{ 66 NameTemplate: "{{ .Pro }_checksums.txt", 67 }, 68 }, 69 } 70 ctx.AddArtifact("whatever") 71 err = Pipe{}.Run(ctx) 72 assert.Error(t, err) 73 assert.Equal(t, `template: name:1: unexpected "}" in operand`, err.Error()) 74 } 75 76 func TestPipeCouldNotOpenChecksumsTxt(t *testing.T) { 77 folder, err := ioutil.TempDir("", "goreleasertest") 78 assert.NoError(t, err) 79 var file = filepath.Join(folder, "checksums.txt") 80 assert.NoError(t, ioutil.WriteFile(file, []byte("some string"), 0000)) 81 var ctx = &context.Context{ 82 Config: config.Project{ 83 Dist: folder, 84 Checksum: config.Checksum{ 85 NameTemplate: "checksums.txt", 86 }, 87 }, 88 } 89 ctx.AddArtifact("nope") 90 err = Pipe{}.Run(ctx) 91 assert.Error(t, err) 92 assert.Contains(t, err.Error(), "/checksums.txt: permission denied") 93 }