diff --git a/cmd/git-chglog/custom_template_builder.go b/cmd/git-chglog/custom_template_builder.go index eba8aa11..04de5f97 100644 --- a/cmd/git-chglog/custom_template_builder.go +++ b/cmd/git-chglog/custom_template_builder.go @@ -12,7 +12,7 @@ func NewCustomTemplateBuilder() TemplateBuilder { // Build ... func (t *customTemplateBuilderImpl) Build(ans *Answer) (string, error) { // versions - tpl := "{{range .Versions}}\n" + tpl := "{{ range .Versions }}\n" // version header tpl += t.versionHeader(ans.Style, ans.Template) @@ -34,7 +34,7 @@ func (t *customTemplateBuilderImpl) Build(ans *Answer) (string, error) { tpl += t.notes() // versions end - tpl += "\n{{end}}" + tpl += "{{ end -}}" return tpl, nil } @@ -42,30 +42,30 @@ func (t *customTemplateBuilderImpl) Build(ans *Answer) (string, error) { func (*customTemplateBuilderImpl) versionHeader(style, template string) string { var ( tpl string - tagName = "{{.Tag.Name}}" - date = "{{datetime \"2006-01-02\" .Tag.Date}}" + tagName = "{{ .Tag.Name }}" + date = "{{ datetime \"2006-01-02\" .Tag.Date }}" ) // parts switch style { case styleGitHub, styleGitLab: - tpl = "\n" - tagName = "{{if .Tag.Previous}}[{{.Tag.Name}}]({{$.Info.RepositoryURL}}/compare/{{.Tag.Previous.Name}}...{{.Tag.Name}}){{else}}{{.Tag.Name}}{{end}}" + tpl = "\n" + tagName = "{{ if .Tag.Previous }}[{{ .Tag.Name }}]({{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}){{ else }}{{ .Tag.Name }}{{ end }}" case styleBitbucket: - tpl = "\n" - tagName = "{{if .Tag.Previous}}[{{.Tag.Name}}]({{$.Info.RepositoryURL}}/compare/{{.Tag.Name}}..{{.Tag.Previous.Name}}){{else}}{{.Tag.Name}}{{end}}" + tpl = "\n" + tagName = "{{ if .Tag.Previous }}[{{ .Tag.Name }}]({{ $.Info.RepositoryURL }}/compare/{{ .Tag.Name }}..{{ .Tag.Previous.Name }}){{ else }}{{ .Tag.Name }}{{ end }}" } // format switch template { case tplStandard: - tpl = fmt.Sprintf("%s## %s (%s)\n", + tpl = fmt.Sprintf("%s## %s (%s)\n\n", tpl, tagName, date, ) case tplCool: - tpl = fmt.Sprintf("%s## %s\n\n> %s\n", + tpl = fmt.Sprintf("%s## %s\n\n> %s\n\n", tpl, tagName, date, @@ -83,33 +83,40 @@ func (*customTemplateBuilderImpl) commits(template, format string) string { switch format { case fmtSubject.Display: - body = `{{range .Commits}} -* {{.Header}}{{end}} -` + body = `{{ range .Commits -}} +* {{ .Header }} +{{ end }}` default: if format == fmtTypeScopeSubject.Display { - header = "{{if .Scope}}**{{.Scope}}:** {{end}}{{.Subject}}" + header = "{{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}" } else { - header = "{{.Subject}}" + header = "{{ .Subject }}" } - body = fmt.Sprintf(`### {{.Title}} -{{range .Commits}} -* %s{{end}} -`, header) + body = fmt.Sprintf(`### {{ .Title }} + +{{ range .Commits -}} +* %s +{{ end }}`, header) } - return fmt.Sprintf(`{{range .CommitGroups}} -%s{{end}}`, body) + return fmt.Sprintf(`{{ range .CommitGroups -}} +%s +{{ end -}} +`, body) } func (*customTemplateBuilderImpl) reverts() string { - return `{{if .RevertCommits}} + return ` +{{- if .RevertCommits -}} ### Reverts -{{range .RevertCommits}} -* {{.Revert.Header}}{{end}} -{{end}}` + +{{ range .RevertCommits -}} +* {{ .Revert.Header }} +{{ end }} +{{ end -}} +` } func (t *customTemplateBuilderImpl) merges(style string) string { @@ -124,18 +131,27 @@ func (t *customTemplateBuilderImpl) merges(style string) string { title = "Merges" } - return fmt.Sprintf(`{{if .MergeCommits}} + return fmt.Sprintf(` +{{- if .MergeCommits -}} ### %s -{{range .MergeCommits}} -* {{.Header}}{{end}} -{{end}}`, title) + +{{ range .MergeCommits -}} +* {{ .Header }} +{{ end }} +{{ end -}} +`, title) } func (*customTemplateBuilderImpl) notes() string { - return `{{range .NoteGroups}} -### {{.Title}} -{{range .Notes}} -{{.Body}} -{{end}} -{{end}}` + return ` +{{- if .NoteGroups -}} +{{ range .NoteGroups -}} +### {{ .Title }} + +{{ range .Notes }} +{{ .Body }} +{{ end }} +{{ end -}} +{{ end -}} +` } diff --git a/cmd/git-chglog/custom_template_builder_test.go b/cmd/git-chglog/custom_template_builder_test.go index a6251800..f9bccf30 100644 --- a/cmd/git-chglog/custom_template_builder_test.go +++ b/cmd/git-chglog/custom_template_builder_test.go @@ -19,28 +19,44 @@ func TestCustomTemplateBuilderDefault(t *testing.T) { }) assert.Nil(err) - assert.Equal(`{{range .Versions}} - -## {{if .Tag.Previous}}[{{.Tag.Name}}]({{$.Info.RepositoryURL}}/compare/{{.Tag.Previous.Name}}...{{.Tag.Name}}){{else}}{{.Tag.Name}}{{end}} ({{datetime "2006-01-02" .Tag.Date}}) -{{range .CommitGroups}} -### {{.Title}} -{{range .Commits}} -* {{if .Scope}}**{{.Scope}}:** {{end}}{{.Subject}}{{end}} -{{end}}{{if .RevertCommits}} + assert.Equal(`{{ range .Versions }} + +## {{ if .Tag.Previous }}[{{ .Tag.Name }}]({{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}){{ else }}{{ .Tag.Name }}{{ end }} ({{ datetime "2006-01-02" .Tag.Date }}) + +{{ range .CommitGroups -}} +### {{ .Title }} + +{{ range .Commits -}} +* {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }} +{{ end }} +{{ end -}} + +{{- if .RevertCommits -}} ### Reverts -{{range .RevertCommits}} -* {{.Revert.Header}}{{end}} -{{end}}{{if .MergeCommits}} + +{{ range .RevertCommits -}} +* {{ .Revert.Header }} +{{ end }} +{{ end -}} + +{{- if .MergeCommits -}} ### Pull Requests -{{range .MergeCommits}} -* {{.Header}}{{end}} -{{end}}{{range .NoteGroups}} -### {{.Title}} -{{range .Notes}} -{{.Body}} -{{end}} -{{end}} -{{end}}`, out) + +{{ range .MergeCommits -}} +* {{ .Header }} +{{ end }} +{{ end -}} + +{{- if .NoteGroups -}} +{{ range .NoteGroups -}} +### {{ .Title }} + +{{ range .Notes }} +{{ .Body }} +{{ end }} +{{ end -}} +{{ end -}} +{{ end -}}`, out) } func TestCustomTemplateBuilderNone(t *testing.T) { @@ -56,65 +72,43 @@ func TestCustomTemplateBuilderNone(t *testing.T) { }) assert.Nil(err) - assert.Equal(`{{range .Versions}} -## {{.Tag.Name}} ({{datetime "2006-01-02" .Tag.Date}}) -{{range .CommitGroups}} -### {{.Title}} -{{range .Commits}} -* {{if .Scope}}**{{.Scope}}:** {{end}}{{.Subject}}{{end}} -{{end}}{{if .RevertCommits}} + assert.Equal(`{{ range .Versions }} +## {{ .Tag.Name }} ({{ datetime "2006-01-02" .Tag.Date }}) + +{{ range .CommitGroups -}} +### {{ .Title }} + +{{ range .Commits -}} +* {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }} +{{ end }} +{{ end -}} + +{{- if .RevertCommits -}} ### Reverts -{{range .RevertCommits}} -* {{.Revert.Header}}{{end}} -{{end}}{{if .MergeCommits}} + +{{ range .RevertCommits -}} +* {{ .Revert.Header }} +{{ end }} +{{ end -}} + +{{- if .MergeCommits -}} ### Merges -{{range .MergeCommits}} -* {{.Header}}{{end}} -{{end}}{{range .NoteGroups}} -### {{.Title}} -{{range .Notes}} -{{.Body}} -{{end}} -{{end}} -{{end}}`, out) -} -func TestCustomTemplateBuilderCool(t *testing.T) { - assert := assert.New(t) - builder := NewCustomTemplateBuilder() +{{ range .MergeCommits -}} +* {{ .Header }} +{{ end }} +{{ end -}} - out, err := builder.Build(&Answer{ - Style: styleNone, - CommitMessageFormat: fmtTypeScopeSubject.Display, - Template: tplCool, - IncludeMerges: true, - IncludeReverts: true, - }) +{{- if .NoteGroups -}} +{{ range .NoteGroups -}} +### {{ .Title }} - assert.Nil(err) - assert.Equal(`{{range .Versions}} -## {{.Tag.Name}} - -> {{datetime "2006-01-02" .Tag.Date}} -{{range .CommitGroups}} -### {{.Title}} -{{range .Commits}} -* {{if .Scope}}**{{.Scope}}:** {{end}}{{.Subject}}{{end}} -{{end}}{{if .RevertCommits}} -### Reverts -{{range .RevertCommits}} -* {{.Revert.Header}}{{end}} -{{end}}{{if .MergeCommits}} -### Merges -{{range .MergeCommits}} -* {{.Header}}{{end}} -{{end}}{{range .NoteGroups}} -### {{.Title}} -{{range .Notes}} -{{.Body}} -{{end}} -{{end}} -{{end}}`, out) +{{ range .Notes }} +{{ .Body }} +{{ end }} +{{ end -}} +{{ end -}} +{{ end -}}`, out) } func TestCustomTemplateBuilderSubjectOnly(t *testing.T) { @@ -130,26 +124,41 @@ func TestCustomTemplateBuilderSubjectOnly(t *testing.T) { }) assert.Nil(err) - assert.Equal(`{{range .Versions}} -## {{.Tag.Name}} ({{datetime "2006-01-02" .Tag.Date}}) -{{range .CommitGroups}} -{{range .Commits}} -* {{.Header}}{{end}} -{{end}}{{if .RevertCommits}} + assert.Equal(`{{ range .Versions }} +## {{ .Tag.Name }} ({{ datetime "2006-01-02" .Tag.Date }}) + +{{ range .CommitGroups -}} +{{ range .Commits -}} +* {{ .Header }} +{{ end }} +{{ end -}} + +{{- if .RevertCommits -}} ### Reverts -{{range .RevertCommits}} -* {{.Revert.Header}}{{end}} -{{end}}{{if .MergeCommits}} + +{{ range .RevertCommits -}} +* {{ .Revert.Header }} +{{ end }} +{{ end -}} + +{{- if .MergeCommits -}} ### Merges -{{range .MergeCommits}} -* {{.Header}}{{end}} -{{end}}{{range .NoteGroups}} -### {{.Title}} -{{range .Notes}} -{{.Body}} -{{end}} -{{end}} -{{end}}`, out) + +{{ range .MergeCommits -}} +* {{ .Header }} +{{ end }} +{{ end -}} + +{{- if .NoteGroups -}} +{{ range .NoteGroups -}} +### {{ .Title }} + +{{ range .Notes }} +{{ .Body }} +{{ end }} +{{ end -}} +{{ end -}} +{{ end -}}`, out) } func TestCustomTemplateBuilderSubject(t *testing.T) { @@ -165,27 +174,43 @@ func TestCustomTemplateBuilderSubject(t *testing.T) { }) assert.Nil(err) - assert.Equal(`{{range .Versions}} -## {{.Tag.Name}} ({{datetime "2006-01-02" .Tag.Date}}) -{{range .CommitGroups}} -### {{.Title}} -{{range .Commits}} -* {{.Subject}}{{end}} -{{end}}{{if .RevertCommits}} + assert.Equal(`{{ range .Versions }} +## {{ .Tag.Name }} ({{ datetime "2006-01-02" .Tag.Date }}) + +{{ range .CommitGroups -}} +### {{ .Title }} + +{{ range .Commits -}} +* {{ .Subject }} +{{ end }} +{{ end -}} + +{{- if .RevertCommits -}} ### Reverts -{{range .RevertCommits}} -* {{.Revert.Header}}{{end}} -{{end}}{{if .MergeCommits}} + +{{ range .RevertCommits -}} +* {{ .Revert.Header }} +{{ end }} +{{ end -}} + +{{- if .MergeCommits -}} ### Merges -{{range .MergeCommits}} -* {{.Header}}{{end}} -{{end}}{{range .NoteGroups}} -### {{.Title}} -{{range .Notes}} -{{.Body}} -{{end}} -{{end}} -{{end}}`, out) + +{{ range .MergeCommits -}} +* {{ .Header }} +{{ end }} +{{ end -}} + +{{- if .NoteGroups -}} +{{ range .NoteGroups -}} +### {{ .Title }} + +{{ range .Notes }} +{{ .Body }} +{{ end }} +{{ end -}} +{{ end -}} +{{ end -}}`, out) } func TestCustomTemplateBuilderIgnoreReverts(t *testing.T) { @@ -201,23 +226,35 @@ func TestCustomTemplateBuilderIgnoreReverts(t *testing.T) { }) assert.Nil(err) - assert.Equal(`{{range .Versions}} -## {{.Tag.Name}} ({{datetime "2006-01-02" .Tag.Date}}) -{{range .CommitGroups}} -### {{.Title}} -{{range .Commits}} -* {{.Subject}}{{end}} -{{end}}{{if .MergeCommits}} + assert.Equal(`{{ range .Versions }} +## {{ .Tag.Name }} ({{ datetime "2006-01-02" .Tag.Date }}) + +{{ range .CommitGroups -}} +### {{ .Title }} + +{{ range .Commits -}} +* {{ .Subject }} +{{ end }} +{{ end -}} + +{{- if .MergeCommits -}} ### Merges -{{range .MergeCommits}} -* {{.Header}}{{end}} -{{end}}{{range .NoteGroups}} -### {{.Title}} -{{range .Notes}} -{{.Body}} -{{end}} -{{end}} -{{end}}`, out) + +{{ range .MergeCommits -}} +* {{ .Header }} +{{ end }} +{{ end -}} + +{{- if .NoteGroups -}} +{{ range .NoteGroups -}} +### {{ .Title }} + +{{ range .Notes }} +{{ .Body }} +{{ end }} +{{ end -}} +{{ end -}} +{{ end -}}`, out) } func TestCustomTemplateBuilderIgnoreMerges(t *testing.T) { @@ -233,21 +270,87 @@ func TestCustomTemplateBuilderIgnoreMerges(t *testing.T) { }) assert.Nil(err) - assert.Equal(`{{range .Versions}} -## {{.Tag.Name}} ({{datetime "2006-01-02" .Tag.Date}}) -{{range .CommitGroups}} -### {{.Title}} -{{range .Commits}} -* {{.Subject}}{{end}} -{{end}}{{if .RevertCommits}} + assert.Equal(`{{ range .Versions }} +## {{ .Tag.Name }} ({{ datetime "2006-01-02" .Tag.Date }}) + +{{ range .CommitGroups -}} +### {{ .Title }} + +{{ range .Commits -}} +* {{ .Subject }} +{{ end }} +{{ end -}} + +{{- if .RevertCommits -}} ### Reverts -{{range .RevertCommits}} -* {{.Revert.Header}}{{end}} -{{end}}{{range .NoteGroups}} -### {{.Title}} -{{range .Notes}} -{{.Body}} -{{end}} -{{end}} -{{end}}`, out) + +{{ range .RevertCommits -}} +* {{ .Revert.Header }} +{{ end }} +{{ end -}} + +{{- if .NoteGroups -}} +{{ range .NoteGroups -}} +### {{ .Title }} + +{{ range .Notes }} +{{ .Body }} +{{ end }} +{{ end -}} +{{ end -}} +{{ end -}}`, out) +} + +func TestCustomTemplateBuilderCool(t *testing.T) { + assert := assert.New(t) + builder := NewCustomTemplateBuilder() + + out, err := builder.Build(&Answer{ + Style: styleNone, + CommitMessageFormat: fmtTypeScopeSubject.Display, + Template: tplCool, + IncludeMerges: true, + IncludeReverts: true, + }) + + assert.Nil(err) + assert.Equal(`{{ range .Versions }} +## {{ .Tag.Name }} + +> {{ datetime "2006-01-02" .Tag.Date }} + +{{ range .CommitGroups -}} +### {{ .Title }} + +{{ range .Commits -}} +* {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }} +{{ end }} +{{ end -}} + +{{- if .RevertCommits -}} +### Reverts + +{{ range .RevertCommits -}} +* {{ .Revert.Header }} +{{ end }} +{{ end -}} + +{{- if .MergeCommits -}} +### Merges + +{{ range .MergeCommits -}} +* {{ .Header }} +{{ end }} +{{ end -}} + +{{- if .NoteGroups -}} +{{ range .NoteGroups -}} +### {{ .Title }} + +{{ range .Notes }} +{{ .Body }} +{{ end }} +{{ end -}} +{{ end -}} +{{ end -}}`, out) } diff --git a/cmd/git-chglog/kac_template_builder.go b/cmd/git-chglog/kac_template_builder.go index 5c0e816e..785a29fa 100644 --- a/cmd/git-chglog/kac_template_builder.go +++ b/cmd/git-chglog/kac_template_builder.go @@ -12,7 +12,11 @@ func NewKACTemplateBuilder() TemplateBuilder { // Build ... func (t *kacTemplateBuilderImpl) Build(ans *Answer) (string, error) { // versions - tpl := "## {{if .Versions}}[Unreleased]{{end}}\n{{range .Versions}}\n" + tpl := `## {{ if .Versions }}[Unreleased]{{ end }} + +{{ range .Versions }} +` + tpl += t.versionHeader(ans.Style) // commits @@ -32,7 +36,7 @@ func (t *kacTemplateBuilderImpl) Build(ans *Answer) (string, error) { tpl += t.notes() // versions end - tpl += "{{end}}" + tpl += "{{ end -}}\n" // footer (links) tpl += t.footer(ans.Style) @@ -42,16 +46,16 @@ func (t *kacTemplateBuilderImpl) Build(ans *Answer) (string, error) { func (t *kacTemplateBuilderImpl) versionHeader(style string) string { var ( - tagName = "{{.Tag.Name}}" - date = "{{datetime \"2006-01-02\" .Tag.Date}}" + tagName = "{{ .Tag.Name }}" + date = "{{ datetime \"2006-01-02\" .Tag.Date }}" ) switch style { case styleGitHub, styleGitLab, styleBitbucket: - tagName = "{{if .Tag.Previous}}[{{.Tag.Name}}]{{else}}{{.Tag.Name}}{{end}}" + tagName = "{{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }}" } - return fmt.Sprintf("## %s - %s", tagName, date) + return fmt.Sprintf("## %s - %s\n", tagName, date) } func (t *kacTemplateBuilderImpl) commits(format string) string { @@ -61,24 +65,32 @@ func (t *kacTemplateBuilderImpl) commits(format string) string { switch format { case fmtSubject.Display: - body = `{{range .Commits}} -- {{.Header}}{{end}}` + body = `{{ range .Commits -}} +- {{ .Header }} +{{ end }}` default: - body = `### {{.Title}}{{range .Commits}} -- {{if .Scope}}**{{.Scope}}:** {{end}}{{.Subject}}{{end}}` + body = `### {{ .Title }} +{{ range .Commits -}} +- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }} +{{ end }}` } - return fmt.Sprintf(`{{range .CommitGroups}} + return fmt.Sprintf(`{{ range .CommitGroups -}} %s -{{end}}`, body) +{{ end -}} +`, body) } func (t *kacTemplateBuilderImpl) reverts() string { - return `{{if .RevertCommits}} -### Reverts{{range .RevertCommits}} -- {{.Revert.Header}}{{end}} -{{end}}` + return ` +{{- if .RevertCommits -}} +### Reverts +{{ range .RevertCommits -}} +- {{ .Revert.Header }} +{{ end }} +{{ end -}} +` } func (t *kacTemplateBuilderImpl) merges(style string) string { @@ -93,33 +105,51 @@ func (t *kacTemplateBuilderImpl) merges(style string) string { title = "Merges" } - return fmt.Sprintf(`{{if .MergeCommits}} -### %s{{range .MergeCommits}} -- {{.Header}}{{end}} -{{end}}`, title) + return fmt.Sprintf(` +{{- if .MergeCommits -}} +### %s +{{ range .MergeCommits -}} +- {{ .Header }} +{{ end }} +{{ end -}} +`, title) } func (*kacTemplateBuilderImpl) notes() string { - return `{{range .NoteGroups}} -### {{.Title}} -{{range .Notes}} -{{.Body}} -{{end}} -{{end}}` + return ` +{{- if .NoteGroups -}} +{{ range .NoteGroups -}} +### {{ .Title }} +{{ range .Notes }} +{{ .Body }} +{{ end }} +{{ end -}} +{{ end -}} +` } func (*kacTemplateBuilderImpl) footer(style string) string { switch style { case styleGitHub, styleGitLab: - return `{{if .Versions}} -[Unreleased]: {{.Info.RepositoryURL}}/compare/{{$latest := index .Versions 0}}{{$latest.Tag.Name}}...HEAD{{range .Versions}}{{if .Tag.Previous}} -[{{.Tag.Name}}]: {{$.Info.RepositoryURL}}/compare/{{.Tag.Previous.Name}}...{{.Tag.Name}}{{end}}{{end}} -{{end}}` + return ` +{{- if .Versions }} +[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...HEAD +{{ range .Versions -}} +{{ if .Tag.Previous -}} +[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }} +{{ end -}} +{{ end -}} +{{ end -}}` case styleBitbucket: - return `{{if .Versions}} -[Unreleased]: {{.Info.RepositoryURL}}/compare/HEAD..{{$latest := index .Versions 0}}{{$latest.Tag.Name}}{{range .Versions}}{{if .Tag.Previous}} -[{{.Tag.Name}}]: {{$.Info.RepositoryURL}}/compare/{{.Tag.Name}}..{{.Tag.Previous.Name}}{{end}}{{end}} -{{end}}` + return ` +{{- if .Versions }} +[Unreleased]: {{ .Info.RepositoryURL }}/compare/HEAD..{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }} +{{ range .Versions -}} +{{ if .Tag.Previous -}} +[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Name }}..{{ .Tag.Previous.Name }} +{{ end -}} +{{ end -}} +{{ end -}}` default: return "" } diff --git a/cmd/git-chglog/kac_template_builder_test.go b/cmd/git-chglog/kac_template_builder_test.go index 2f46d53f..241f54e7 100644 --- a/cmd/git-chglog/kac_template_builder_test.go +++ b/cmd/git-chglog/kac_template_builder_test.go @@ -19,24 +19,47 @@ func TestKACTemplateBuilderDefault(t *testing.T) { }) assert.Nil(err) - assert.Equal(`## {{if .Versions}}[Unreleased]{{end}} -{{range .Versions}} -## {{if .Tag.Previous}}[{{.Tag.Name}}]{{else}}{{.Tag.Name}}{{end}} - {{datetime "2006-01-02" .Tag.Date}}{{range .CommitGroups}} -### {{.Title}}{{range .Commits}} -- {{if .Scope}}**{{.Scope}}:** {{end}}{{.Subject}}{{end}} -{{end}}{{if .RevertCommits}} -### Reverts{{range .RevertCommits}} -- {{.Revert.Header}}{{end}} -{{end}}{{if .MergeCommits}} -### Pull Requests{{range .MergeCommits}} -- {{.Header}}{{end}} -{{end}}{{range .NoteGroups}} -### {{.Title}} -{{range .Notes}} -{{.Body}} -{{end}} -{{end}}{{end}}{{if .Versions}} -[Unreleased]: {{.Info.RepositoryURL}}/compare/{{$latest := index .Versions 0}}{{$latest.Tag.Name}}...HEAD{{range .Versions}}{{if .Tag.Previous}} -[{{.Tag.Name}}]: {{$.Info.RepositoryURL}}/compare/{{.Tag.Previous.Name}}...{{.Tag.Name}}{{end}}{{end}} -{{end}}`, out) + assert.Equal(`## {{ if .Versions }}[Unreleased]{{ end }} + +{{ range .Versions }} +## {{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }} - {{ datetime "2006-01-02" .Tag.Date }} +{{ range .CommitGroups -}} +### {{ .Title }} +{{ range .Commits -}} +- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }} +{{ end }} +{{ end -}} + +{{- if .RevertCommits -}} +### Reverts +{{ range .RevertCommits -}} +- {{ .Revert.Header }} +{{ end }} +{{ end -}} + +{{- if .MergeCommits -}} +### Pull Requests +{{ range .MergeCommits -}} +- {{ .Header }} +{{ end }} +{{ end -}} + +{{- if .NoteGroups -}} +{{ range .NoteGroups -}} +### {{ .Title }} +{{ range .Notes }} +{{ .Body }} +{{ end }} +{{ end -}} +{{ end -}} +{{ end -}} + +{{- if .Versions }} +[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...HEAD +{{ range .Versions -}} +{{ if .Tag.Previous -}} +[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }} +{{ end -}} +{{ end -}} +{{ end -}}`, out) }