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 }