1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
package server
import (
"testing"
"custard/internal/release"
)
func TestCouldBeRelease(t *testing.T) {
yes := []string{"refs/tags/v1.2.3", "refs/heads/release/v1.2.3", "refs/heads/rel/v0.1.0"}
no := []string{"refs/heads/main", "refs/heads/feature/x", "refs/tags/nightly", "refs/heads/release/main"}
for _, r := range yes {
if !couldBeRelease(r) {
t.Errorf("couldBeRelease(%q) = false, want true", r)
}
}
for _, r := range no {
if couldBeRelease(r) {
t.Errorf("couldBeRelease(%q) = true, want false", r)
}
}
}
func cfgWith(source, prefix string) release.RepoConfig {
var c release.RepoConfig
c.Brew.Enabled = true
c.Brew.Source = source
c.Brew.BookmarkPrefix = prefix
return c
}
func TestReleasePlan(t *testing.T) {
cases := []struct {
name, source, prefix, ref string
wantArchive, wantVer string
wantSkip bool
}{
{"tag mode tag", release.SourceTag, "", "refs/tags/v1.2.3", "v1.2.3", "v1.2.3", false},
{"tag mode ignores branch", release.SourceTag, "", "refs/heads/release/v1.2.3", "", "", true},
{"tag mode non-semver tag", release.SourceTag, "", "refs/tags/nightly", "", "", true},
{"bookmark mode branch", release.SourceBookmark, "", "refs/heads/release/v1.2.3", "release/v1.2.3", "v1.2.3", false},
{"bookmark mode custom prefix", release.SourceBookmark, "rel/", "refs/heads/rel/v0.1.0", "rel/v0.1.0", "v0.1.0", false},
{"bookmark mode ignores tag", release.SourceBookmark, "", "refs/tags/v1.2.3", "", "", true},
{"bookmark mode wrong prefix", release.SourceBookmark, "", "refs/heads/foo/v1.2.3", "", "", true},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
archive, ver, skip := releasePlan(cfgWith(c.source, c.prefix), c.ref)
if (skip != "") != c.wantSkip {
t.Fatalf("skip = %q, wantSkip=%v", skip, c.wantSkip)
}
if !c.wantSkip && (archive != c.wantArchive || ver != c.wantVer) {
t.Errorf("got archive=%q ver=%q; want %q %q", archive, ver, c.wantArchive, c.wantVer)
}
})
}
}
|