58 lines
2.0 KiB
Go
58 lines
2.0 KiB
Go
package netssh_test
|
|
|
|
import (
|
|
"os"
|
|
"os/exec"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestReleaseNotesUseReleaseAssetAndVersionRange(t *testing.T) {
|
|
script, err := filepath.Abs("scripts/release-notes.sh")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
repo := t.TempDir()
|
|
git := func(args ...string) {
|
|
t.Helper()
|
|
cmd := exec.Command("git", args...)
|
|
cmd.Dir = repo
|
|
cmd.Env = append(os.Environ(), "GIT_AUTHOR_NAME=Release Test", "GIT_AUTHOR_EMAIL=release@example.com", "GIT_COMMITTER_NAME=Release Test", "GIT_COMMITTER_EMAIL=release@example.com", "GIT_CONFIG_NOSYSTEM=1", "GIT_CONFIG_GLOBAL=/dev/null")
|
|
if out, err := cmd.CombinedOutput(); err != nil {
|
|
t.Fatalf("git %v: %v\n%s", args, err, out)
|
|
}
|
|
}
|
|
git("init")
|
|
git("-c", "commit.gpgsign=false", "commit", "--allow-empty", "-m", "Initial version")
|
|
git("tag", "v0.0.1")
|
|
render := func(tag string) string {
|
|
t.Helper()
|
|
cmd := exec.Command("bash", script, tag, "https://git.example.com/team/netssh/")
|
|
cmd.Dir = repo
|
|
out, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
t.Fatalf("render: %v\n%s", err, out)
|
|
}
|
|
return string(out)
|
|
}
|
|
initial := render("v0.0.1")
|
|
if !strings.Contains(initial, "Initial release:") || !strings.Contains(initial, "Initial version") {
|
|
t.Fatalf("first release: %s", initial)
|
|
}
|
|
git("-c", "commit.gpgsign=false", "commit", "--allow-empty", "-m", `Add installer and "quoted" release notes`)
|
|
git("tag", "v0.0.2")
|
|
git("-c", "commit.gpgsign=false", "commit", "--allow-empty", "-m", "Unreleased changes")
|
|
notes := render("v0.0.2")
|
|
for _, want := range []string{"https://git.example.com/team/netssh/releases/download/v0.0.2/install.sh", "Changes since `v0.0.1`:", `Add installer and "quoted" release notes`, "checksums.txt"} {
|
|
if !strings.Contains(notes, want) {
|
|
t.Errorf("missing %q:\n%s", want, notes)
|
|
}
|
|
}
|
|
for _, excluded := range []string{"Initial version", "Unreleased changes", "raw/branch/main"} {
|
|
if strings.Contains(notes, excluded) {
|
|
t.Errorf("unexpected %q:\n%s", excluded, notes)
|
|
}
|
|
}
|
|
}
|