2017-04-19 16:59:26 -03:00
|
|
|
package release
|
|
|
|
|
|
|
|
import (
|
2017-12-25 20:03:40 -02:00
|
|
|
"flag"
|
2021-04-25 13:00:51 -03:00
|
|
|
"os"
|
2017-04-19 16:59:26 -03:00
|
|
|
"testing"
|
|
|
|
|
2017-12-18 00:53:48 -02:00
|
|
|
"github.com/goreleaser/goreleaser/internal/artifact"
|
2018-08-14 23:50:20 -03:00
|
|
|
"github.com/goreleaser/goreleaser/pkg/config"
|
|
|
|
"github.com/goreleaser/goreleaser/pkg/context"
|
2020-10-06 09:48:04 -03:00
|
|
|
"github.com/stretchr/testify/require"
|
2017-04-19 16:59:26 -03:00
|
|
|
)
|
|
|
|
|
2017-12-25 20:03:40 -02:00
|
|
|
var update = flag.Bool("update", false, "update .golden files")
|
|
|
|
|
2017-04-19 17:12:12 -03:00
|
|
|
func TestDescribeBody(t *testing.T) {
|
2021-04-25 14:20:49 -03:00
|
|
|
changelog := "feature1: description\nfeature2: other description"
|
|
|
|
ctx := context.New(config.Project{})
|
2020-11-30 21:53:36 -03:00
|
|
|
ctx.ReleaseNotes = changelog
|
|
|
|
for _, d := range []string{
|
|
|
|
"goreleaser/goreleaser:0.40.0",
|
|
|
|
"goreleaser/goreleaser:latest",
|
|
|
|
"goreleaser/godownloader:v0.1.0",
|
|
|
|
} {
|
|
|
|
ctx.Artifacts.Add(&artifact.Artifact{
|
|
|
|
Name: d,
|
|
|
|
Type: artifact.DockerImage,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
out, err := describeBody(ctx)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
2021-04-25 14:20:49 -03:00
|
|
|
golden := "testdata/release1.golden"
|
2020-11-30 21:53:36 -03:00
|
|
|
if *update {
|
2021-04-25 14:20:49 -03:00
|
|
|
_ = os.WriteFile(golden, out.Bytes(), 0o755)
|
2020-11-30 21:53:36 -03:00
|
|
|
}
|
2021-04-25 13:00:51 -03:00
|
|
|
bts, err := os.ReadFile(golden)
|
2020-11-30 21:53:36 -03:00
|
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, string(bts), out.String())
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDescribeBodyWithDockerManifest(t *testing.T) {
|
2021-04-25 14:20:49 -03:00
|
|
|
changelog := "feature1: description\nfeature2: other description"
|
|
|
|
ctx := context.New(config.Project{})
|
2017-12-17 23:11:17 -02:00
|
|
|
ctx.ReleaseNotes = changelog
|
|
|
|
for _, d := range []string{
|
|
|
|
"goreleaser/goreleaser:0.40.0",
|
|
|
|
"goreleaser/goreleaser:latest",
|
|
|
|
"goreleaser/godownloader:v0.1.0",
|
2020-11-29 14:33:31 -03:00
|
|
|
} {
|
|
|
|
ctx.Artifacts.Add(&artifact.Artifact{
|
|
|
|
Name: d,
|
|
|
|
Type: artifact.DockerManifest,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
for _, d := range []string{
|
|
|
|
"goreleaser/goreleaser:0.40.0-amd64",
|
|
|
|
"goreleaser/goreleaser:latest-amd64",
|
|
|
|
"goreleaser/godownloader:v0.1.0-amd64",
|
|
|
|
"goreleaser/goreleaser:0.40.0-arm64",
|
|
|
|
"goreleaser/goreleaser:latest-arm64",
|
|
|
|
"goreleaser/godownloader:v0.1.0-arm64",
|
2017-12-17 23:11:17 -02:00
|
|
|
} {
|
2019-08-12 17:44:48 -03:00
|
|
|
ctx.Artifacts.Add(&artifact.Artifact{
|
2017-12-17 23:11:17 -02:00
|
|
|
Name: d,
|
|
|
|
Type: artifact.DockerImage,
|
|
|
|
})
|
2017-04-19 16:59:26 -03:00
|
|
|
}
|
2018-04-01 13:27:57 -03:00
|
|
|
out, err := describeBody(ctx)
|
2020-10-06 09:48:04 -03:00
|
|
|
require.NoError(t, err)
|
2017-09-16 15:31:20 -03:00
|
|
|
|
2021-04-25 14:20:49 -03:00
|
|
|
golden := "testdata/release3.golden"
|
2017-12-25 20:03:40 -02:00
|
|
|
if *update {
|
2021-04-25 14:20:49 -03:00
|
|
|
_ = os.WriteFile(golden, out.Bytes(), 0o755)
|
2017-12-25 20:03:40 -02:00
|
|
|
}
|
2021-04-25 13:00:51 -03:00
|
|
|
bts, err := os.ReadFile(golden)
|
2020-10-06 09:48:04 -03:00
|
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, string(bts), out.String())
|
2017-09-16 15:31:20 -03:00
|
|
|
}
|
|
|
|
|
2017-12-05 18:19:18 -02:00
|
|
|
func TestDescribeBodyNoDockerImagesNoBrews(t *testing.T) {
|
2021-04-25 14:20:49 -03:00
|
|
|
changelog := "feature1: description\nfeature2: other description"
|
|
|
|
ctx := &context.Context{
|
2017-09-16 15:31:20 -03:00
|
|
|
ReleaseNotes: changelog,
|
|
|
|
}
|
2018-04-01 13:27:57 -03:00
|
|
|
out, err := describeBody(ctx)
|
2020-10-06 09:48:04 -03:00
|
|
|
require.NoError(t, err)
|
2017-09-16 15:31:20 -03:00
|
|
|
|
2021-04-25 14:20:49 -03:00
|
|
|
golden := "testdata/release2.golden"
|
2017-12-25 20:03:40 -02:00
|
|
|
if *update {
|
2021-04-25 14:20:49 -03:00
|
|
|
_ = os.WriteFile(golden, out.Bytes(), 0o655)
|
2017-12-25 20:03:40 -02:00
|
|
|
}
|
2021-04-25 13:00:51 -03:00
|
|
|
bts, err := os.ReadFile(golden)
|
2020-10-06 09:48:04 -03:00
|
|
|
require.NoError(t, err)
|
2017-09-16 15:31:20 -03:00
|
|
|
|
2020-10-06 09:48:04 -03:00
|
|
|
require.Equal(t, string(bts), out.String())
|
2017-04-19 16:59:26 -03:00
|
|
|
}
|
|
|
|
|
2017-07-04 09:28:26 -03:00
|
|
|
func TestDontEscapeHTML(t *testing.T) {
|
2021-04-25 14:20:49 -03:00
|
|
|
changelog := "<h1>test</h1>"
|
|
|
|
ctx := context.New(config.Project{})
|
2017-12-29 20:34:09 -02:00
|
|
|
ctx.ReleaseNotes = changelog
|
|
|
|
|
2017-07-04 09:28:26 -03:00
|
|
|
out, err := describeBody(ctx)
|
2020-10-06 09:48:04 -03:00
|
|
|
require.NoError(t, err)
|
|
|
|
require.Contains(t, out.String(), changelog)
|
2017-07-04 09:28:26 -03:00
|
|
|
}
|