You've already forked goreleaser
mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-07-17 01:42:37 +02:00
fixed first release log
This commit is contained in:
@ -93,11 +93,20 @@ func getChangelog(tag string) (string, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
return git("log", "--pretty=oneline", "--abbrev-commit", prev+".."+tag)
|
if !prev.Tag {
|
||||||
|
return gitLog(prev.SHA, tag)
|
||||||
|
}
|
||||||
|
return gitLog(fmt.Sprintf("%v..%v", prev.SHA, tag))
|
||||||
|
}
|
||||||
|
|
||||||
|
func gitLog(refs ...string) (string, error) {
|
||||||
|
var args = []string{"log", "--pretty=oneline", "--abbrev-commit"}
|
||||||
|
args = append(args, refs...)
|
||||||
|
return git(args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func getInfo() (tag, commit string, err error) {
|
func getInfo() (tag, commit string, err error) {
|
||||||
tag, err = cleanGit("describe", "--tags", "--abbrev=0", "--always")
|
tag, err = cleanGit("describe", "--tags", "--abbrev=0")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -105,10 +114,21 @@ func getInfo() (tag, commit string, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func previous(tag string) (previous string, err error) {
|
func previous(tag string) (r ref, err error) {
|
||||||
previous, err = cleanGit("describe", "--tags", "--abbrev=0", "--always", tag+"^")
|
var previous string
|
||||||
|
var istag = true
|
||||||
|
previous, err = cleanGit("describe", "--tags", "--abbrev=0", tag+"^")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
istag = false
|
||||||
previous, err = cleanGit("rev-list", "--max-parents=0", "HEAD")
|
previous, err = cleanGit("rev-list", "--max-parents=0", "HEAD")
|
||||||
}
|
}
|
||||||
return
|
return ref{
|
||||||
|
Tag: istag,
|
||||||
|
SHA: previous,
|
||||||
|
}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
type ref struct {
|
||||||
|
Tag bool
|
||||||
|
SHA string
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package git
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
@ -144,16 +145,45 @@ func TestChangelog(t *testing.T) {
|
|||||||
gitCommit(t, "added feature 1")
|
gitCommit(t, "added feature 1")
|
||||||
gitCommit(t, "fixed bug 2")
|
gitCommit(t, "fixed bug 2")
|
||||||
gitTag(t, "v0.0.2")
|
gitTag(t, "v0.0.2")
|
||||||
|
s, _ := git("log", "--oneline")
|
||||||
|
log.Println("\n" + s)
|
||||||
var ctx = &context.Context{
|
var ctx = &context.Context{
|
||||||
Config: config.Project{},
|
Config: config.Project{},
|
||||||
}
|
}
|
||||||
assert.NoError(Pipe{}.Run(ctx))
|
assert.NoError(Pipe{}.Run(ctx))
|
||||||
assert.Equal("v0.0.2", ctx.Git.CurrentTag)
|
assert.Equal("v0.0.2", ctx.Git.CurrentTag)
|
||||||
assert.Contains(ctx.ReleaseNotes, "## Changelog")
|
assert.Contains(ctx.ReleaseNotes, "## Changelog")
|
||||||
|
assert.NotContains(ctx.ReleaseNotes, "first")
|
||||||
assert.Contains(ctx.ReleaseNotes, "added feature 1")
|
assert.Contains(ctx.ReleaseNotes, "added feature 1")
|
||||||
assert.Contains(ctx.ReleaseNotes, "fixed bug 2")
|
assert.Contains(ctx.ReleaseNotes, "fixed bug 2")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestChangelogOfFirstRelease(t *testing.T) {
|
||||||
|
var assert = assert.New(t)
|
||||||
|
_, back := createAndChdir(t)
|
||||||
|
defer back()
|
||||||
|
gitInit(t)
|
||||||
|
var msgs = []string{
|
||||||
|
"initial commit",
|
||||||
|
"another one",
|
||||||
|
"one more",
|
||||||
|
"and finally this one",
|
||||||
|
}
|
||||||
|
for _, msg := range msgs {
|
||||||
|
gitCommit(t, msg)
|
||||||
|
}
|
||||||
|
gitTag(t, "v0.0.1")
|
||||||
|
var ctx = &context.Context{
|
||||||
|
Config: config.Project{},
|
||||||
|
}
|
||||||
|
assert.NoError(Pipe{}.Run(ctx))
|
||||||
|
assert.Equal("v0.0.1", ctx.Git.CurrentTag)
|
||||||
|
assert.Contains(ctx.ReleaseNotes, "## Changelog")
|
||||||
|
for _, msg := range msgs {
|
||||||
|
assert.Contains(ctx.ReleaseNotes, msg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestCustomReleaseNotes(t *testing.T) {
|
func TestCustomReleaseNotes(t *testing.T) {
|
||||||
var assert = assert.New(t)
|
var assert = assert.New(t)
|
||||||
_, back := createAndChdir(t)
|
_, back := createAndChdir(t)
|
||||||
|
Reference in New Issue
Block a user