gitee.com/mirrors_opencollective/goreleaser@v0.45.0/pipeline/release/body_test.go (about)

     1  package release
     2  
     3  import (
     4  	"flag"
     5  	"io/ioutil"
     6  	"os"
     7  	"testing"
     8  
     9  	"github.com/goreleaser/goreleaser/config"
    10  	"github.com/goreleaser/goreleaser/context"
    11  	"github.com/goreleaser/goreleaser/internal/artifact"
    12  	"github.com/stretchr/testify/assert"
    13  )
    14  
    15  var update = flag.Bool("update", false, "update .golden files")
    16  
    17  func TestDescribeBody(t *testing.T) {
    18  	var changelog = "\nfeature1: description\nfeature2: other description"
    19  	var ctx = context.New(config.Project{})
    20  	ctx.ReleaseNotes = changelog
    21  	for _, d := range []string{
    22  		"goreleaser/goreleaser:0.40.0",
    23  		"goreleaser/goreleaser:latest",
    24  		"goreleaser/godownloader:v0.1.0",
    25  	} {
    26  		ctx.Artifacts.Add(artifact.Artifact{
    27  			Name: d,
    28  			Type: artifact.DockerImage,
    29  		})
    30  	}
    31  	out, err := describeBodyVersion(ctx, "go version go1.9 darwin/amd64")
    32  	assert.NoError(t, err)
    33  
    34  	var golden = "testdata/release1.golden"
    35  	if *update {
    36  		ioutil.WriteFile(golden, out.Bytes(), 0755)
    37  	}
    38  	bts, err := ioutil.ReadFile(golden)
    39  	assert.NoError(t, err)
    40  	assert.Equal(t, string(bts), out.String())
    41  }
    42  
    43  func TestDescribeBodyNoDockerImagesNoBrews(t *testing.T) {
    44  	var changelog = "\nfeature1: description\nfeature2: other description"
    45  	var ctx = &context.Context{
    46  		ReleaseNotes: changelog,
    47  	}
    48  	out, err := describeBodyVersion(ctx, "go version go1.9 darwin/amd64")
    49  	assert.NoError(t, err)
    50  
    51  	var golden = "testdata/release2.golden"
    52  	if *update {
    53  		ioutil.WriteFile(golden, out.Bytes(), 0655)
    54  	}
    55  	bts, err := ioutil.ReadFile(golden)
    56  	assert.NoError(t, err)
    57  
    58  	assert.Equal(t, string(bts), out.String())
    59  }
    60  
    61  func TestDontEscapeHTML(t *testing.T) {
    62  	var changelog = "<h1>test</h1>"
    63  	var ctx = context.New(config.Project{})
    64  	ctx.ReleaseNotes = changelog
    65  
    66  	out, err := describeBody(ctx)
    67  	assert.NoError(t, err)
    68  	assert.Contains(t, out.String(), changelog)
    69  }
    70  
    71  func TestGoVersionFails(t *testing.T) {
    72  	var path = os.Getenv("PATH")
    73  	defer func() {
    74  		assert.NoError(t, os.Setenv("PATH", path))
    75  	}()
    76  	assert.NoError(t, os.Setenv("PATH", ""))
    77  	var ctx = &context.Context{
    78  		ReleaseNotes: "changelog",
    79  	}
    80  	_, err := describeBody(ctx)
    81  	assert.Error(t, err)
    82  }