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  }