github.com/amane3/goreleaser@v0.182.0/internal/pipe/release/body_test.go (about)

     1  package release
     2  
     3  import (
     4  	"flag"
     5  	"io/ioutil"
     6  	"testing"
     7  
     8  	"github.com/amane3/goreleaser/internal/artifact"
     9  	"github.com/amane3/goreleaser/pkg/config"
    10  	"github.com/amane3/goreleaser/pkg/context"
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  var update = flag.Bool("update", false, "update .golden files")
    15  
    16  func TestDescribeBody(t *testing.T) {
    17  	var changelog = "feature1: description\nfeature2: other description"
    18  	var ctx = context.New(config.Project{})
    19  	ctx.ReleaseNotes = changelog
    20  	for _, d := range []string{
    21  		"goreleaser/goreleaser:0.40.0",
    22  		"goreleaser/goreleaser:latest",
    23  		"goreleaser/godownloader:v0.1.0",
    24  	} {
    25  		ctx.Artifacts.Add(&artifact.Artifact{
    26  			Name: d,
    27  			Type: artifact.DockerImage,
    28  		})
    29  	}
    30  	out, err := describeBody(ctx)
    31  	require.NoError(t, err)
    32  
    33  	var golden = "testdata/release1.golden"
    34  	if *update {
    35  		_ = ioutil.WriteFile(golden, out.Bytes(), 0755)
    36  	}
    37  	bts, err := ioutil.ReadFile(golden)
    38  	require.NoError(t, err)
    39  	require.Equal(t, string(bts), out.String())
    40  }
    41  
    42  func TestDescribeBodyWithDockerManifest(t *testing.T) {
    43  	var changelog = "feature1: description\nfeature2: other description"
    44  	var ctx = context.New(config.Project{})
    45  	ctx.ReleaseNotes = changelog
    46  	for _, d := range []string{
    47  		"goreleaser/goreleaser:0.40.0",
    48  		"goreleaser/goreleaser:latest",
    49  		"goreleaser/godownloader:v0.1.0",
    50  	} {
    51  		ctx.Artifacts.Add(&artifact.Artifact{
    52  			Name: d,
    53  			Type: artifact.DockerManifest,
    54  		})
    55  	}
    56  	for _, d := range []string{
    57  		"goreleaser/goreleaser:0.40.0-amd64",
    58  		"goreleaser/goreleaser:latest-amd64",
    59  		"goreleaser/godownloader:v0.1.0-amd64",
    60  		"goreleaser/goreleaser:0.40.0-arm64",
    61  		"goreleaser/goreleaser:latest-arm64",
    62  		"goreleaser/godownloader:v0.1.0-arm64",
    63  	} {
    64  		ctx.Artifacts.Add(&artifact.Artifact{
    65  			Name: d,
    66  			Type: artifact.DockerImage,
    67  		})
    68  	}
    69  	out, err := describeBody(ctx)
    70  	require.NoError(t, err)
    71  
    72  	var golden = "testdata/release3.golden"
    73  	if *update {
    74  		_ = ioutil.WriteFile(golden, out.Bytes(), 0755)
    75  	}
    76  	bts, err := ioutil.ReadFile(golden)
    77  	require.NoError(t, err)
    78  	require.Equal(t, string(bts), out.String())
    79  }
    80  
    81  func TestDescribeBodyNoDockerImagesNoBrews(t *testing.T) {
    82  	var changelog = "feature1: description\nfeature2: other description"
    83  	var ctx = &context.Context{
    84  		ReleaseNotes: changelog,
    85  	}
    86  	out, err := describeBody(ctx)
    87  	require.NoError(t, err)
    88  
    89  	var golden = "testdata/release2.golden"
    90  	if *update {
    91  		_ = ioutil.WriteFile(golden, out.Bytes(), 0655)
    92  	}
    93  	bts, err := ioutil.ReadFile(golden)
    94  	require.NoError(t, err)
    95  
    96  	require.Equal(t, string(bts), out.String())
    97  }
    98  
    99  func TestDontEscapeHTML(t *testing.T) {
   100  	var changelog = "<h1>test</h1>"
   101  	var ctx = context.New(config.Project{})
   102  	ctx.ReleaseNotes = changelog
   103  
   104  	out, err := describeBody(ctx)
   105  	require.NoError(t, err)
   106  	require.Contains(t, out.String(), changelog)
   107  }