58 lines
1.1 KiB
Go
58 lines
1.1 KiB
Go
package runtimeinfo
|
|
|
|
import (
|
|
"runtime/debug"
|
|
"testing"
|
|
)
|
|
|
|
func TestVersion(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
injected string
|
|
info *debug.BuildInfo
|
|
ok bool
|
|
want string
|
|
}{
|
|
{
|
|
name: "injected version takes precedence",
|
|
injected: "v1.2.3",
|
|
info: &debug.BuildInfo{Main: debug.Module{Version: "v4.5.6"}},
|
|
ok: true,
|
|
want: "v1.2.3",
|
|
},
|
|
{
|
|
name: "main module version",
|
|
info: &debug.BuildInfo{Main: debug.Module{Version: "v4.5.6"}},
|
|
ok: true,
|
|
want: "v4.5.6",
|
|
},
|
|
{
|
|
name: "missing build information",
|
|
want: "dev",
|
|
},
|
|
{
|
|
name: "development main module",
|
|
info: &debug.BuildInfo{Main: debug.Module{Version: "(devel)"}},
|
|
ok: true,
|
|
want: "dev",
|
|
},
|
|
{
|
|
name: "empty main module version",
|
|
info: &debug.BuildInfo{Main: debug.Module{}},
|
|
ok: true,
|
|
want: "dev",
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
got := version(test.injected, func() (*debug.BuildInfo, bool) {
|
|
return test.info, test.ok
|
|
})
|
|
if got != test.want {
|
|
t.Fatalf("version() = %q, want %q", got, test.want)
|
|
}
|
|
})
|
|
}
|
|
}
|