oauth2-proxy/pkg/version/version_test.go

64 lines
1.7 KiB
Go

package version
import (
"runtime/debug"
"testing"
"github.com/stretchr/testify/assert"
)
func TestResolveVersion(t *testing.T) {
testCases := []struct {
name string
ldflagsVersion string
buildInfo *debug.BuildInfo
buildInfoOK bool
expected string
}{
{
name: "ldflags version takes precedence over build info",
ldflagsVersion: "v7.15.3",
buildInfo: &debug.BuildInfo{Main: debug.Module{Version: "v7.15.0"}},
buildInfoOK: true,
expected: "v7.15.3",
},
{
name: "falls back to build info version when undefined",
ldflagsVersion: "undefined",
buildInfo: &debug.BuildInfo{Main: debug.Module{Version: "v7.15.3"}},
buildInfoOK: true,
expected: "v7.15.3",
},
{
name: "keeps undefined when build info is unavailable",
ldflagsVersion: "undefined",
buildInfo: nil,
buildInfoOK: false,
expected: "undefined",
},
{
name: "keeps undefined for a (devel) build info version",
ldflagsVersion: "undefined",
buildInfo: &debug.BuildInfo{Main: debug.Module{Version: "(devel)"}},
buildInfoOK: true,
expected: "undefined",
},
{
name: "keeps undefined for an empty build info version",
ldflagsVersion: "undefined",
buildInfo: &debug.BuildInfo{Main: debug.Module{Version: ""}},
buildInfoOK: true,
expected: "undefined",
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
result := resolveVersion(tc.ldflagsVersion, func() (*debug.BuildInfo, bool) {
return tc.buildInfo, tc.buildInfoOK
})
assert.Equal(t, tc.expected, result)
})
}
}