Files
silo-server/internal/buildinfo/buildinfo_test.go
T

174 lines
4.2 KiB
Go

package buildinfo
import (
"runtime/debug"
"testing"
)
func TestResolve(t *testing.T) {
t.Parallel()
tests := []struct {
name string
settings []debug.BuildSetting
overrideRevision string
overrideDirty string
want Info
}{
{
name: "clean revision",
settings: []debug.BuildSetting{
{Key: "vcs.revision", Value: "b4c5aae18aa653725ac697b29a05eac797576008"},
{Key: "vcs.modified", Value: "false"},
{Key: "vcs.time", Value: "2026-04-05T22:24:40Z"},
},
want: Info{
Display: "b4c5aae1",
Revision: "b4c5aae18aa653725ac697b29a05eac797576008",
Dirty: false,
VCSTime: "2026-04-05T22:24:40Z",
Available: true,
},
},
{
name: "dirty revision",
settings: []debug.BuildSetting{
{Key: "vcs.revision", Value: "b4c5aae18aa653725ac697b29a05eac797576008"},
{Key: "vcs.modified", Value: "true"},
{Key: "vcs.time", Value: "2026-04-05T22:24:40Z"},
},
want: Info{
Display: "b4c5aae1+dirty",
Revision: "b4c5aae18aa653725ac697b29a05eac797576008",
Dirty: true,
VCSTime: "2026-04-05T22:24:40Z",
Available: true,
},
},
{
name: "missing revision",
settings: []debug.BuildSetting{
{Key: "vcs.modified", Value: "true"},
{Key: "vcs.time", Value: "2026-04-05T22:24:40Z"},
},
want: Info{
Display: "unavailable",
Revision: "",
Dirty: false,
VCSTime: "",
Available: false,
},
},
{
name: "override revision",
settings: []debug.BuildSetting{
{Key: "vcs.modified", Value: "false"},
},
overrideRevision: "edf2977f5013df08e57a869bf722af4243a0a4fd",
want: Info{
Display: "edf2977f",
Revision: "edf2977f5013df08e57a869bf722af4243a0a4fd",
Dirty: false,
VCSTime: "",
Available: true,
},
},
{
name: "override dirty revision",
settings: []debug.BuildSetting{
{Key: "vcs.time", Value: "2026-04-05T22:24:40Z"},
},
overrideRevision: "edf2977f5013df08e57a869bf722af4243a0a4fd",
overrideDirty: "true",
want: Info{
Display: "edf2977f+dirty",
Revision: "edf2977f5013df08e57a869bf722af4243a0a4fd",
Dirty: true,
VCSTime: "",
Available: true,
},
},
{
name: "override short revision",
overrideRevision: "abc123",
want: Info{
Display: "abc123",
Revision: "abc123",
Dirty: false,
VCSTime: "",
Available: true,
},
},
{
name: "empty override remains unavailable",
overrideRevision: " ",
overrideDirty: "true",
want: Info{
Display: "unavailable",
Revision: "",
Dirty: false,
VCSTime: "",
Available: false,
},
},
{
name: "embedded revision wins over override",
settings: []debug.BuildSetting{
{Key: "vcs.revision", Value: "b4c5aae18aa653725ac697b29a05eac797576008"},
{Key: "vcs.modified", Value: "false"},
{Key: "vcs.time", Value: "2026-04-05T22:24:40Z"},
},
overrideRevision: "edf2977f5013df08e57a869bf722af4243a0a4fd",
overrideDirty: "true",
want: Info{
Display: "b4c5aae1",
Revision: "b4c5aae18aa653725ac697b29a05eac797576008",
Dirty: false,
VCSTime: "2026-04-05T22:24:40Z",
Available: true,
},
},
{
name: "short revision",
settings: []debug.BuildSetting{
{Key: "vcs.revision", Value: "abc123"},
{Key: "vcs.modified", Value: "false"},
},
want: Info{
Display: "abc123",
Revision: "abc123",
Dirty: false,
VCSTime: "",
Available: true,
},
},
{
name: "missing vcs time",
settings: []debug.BuildSetting{
{Key: "vcs.revision", Value: "b4c5aae18aa653725ac697b29a05eac797576008"},
{Key: "vcs.modified", Value: "false"},
},
want: Info{
Display: "b4c5aae1",
Revision: "b4c5aae18aa653725ac697b29a05eac797576008",
Dirty: false,
VCSTime: "",
Available: true,
},
},
}
for _, tc := range tests {
tc := tc
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
overrideRevision, overrideDirty := parseOverrides(tc.overrideRevision, tc.overrideDirty)
got := resolve(tc.settings, overrideRevision, overrideDirty)
if got != tc.want {
t.Fatalf("resolve() = %#v, want %#v", got, tc.want)
}
})
}
}