cosmos-sdk/version/build_test.go

167 lines
3.1 KiB
Go

package version
import (
"runtime/debug"
"testing"
"github.com/stretchr/testify/require"
)
func Test_getSDKBuildInfo(t *testing.T) {
tests := []struct {
name string
debugBuildInfo *debug.BuildInfo
want sdkBuildInfo
}{
{
name: "no deps",
debugBuildInfo: &debug.BuildInfo{
Deps: nil,
},
want: sdkBuildInfo{},
},
{
name: "cosmos-sdk dep only",
debugBuildInfo: &debug.BuildInfo{
Deps: []*debug.Module{
{
Path: "github.com/cosmos/cosmos-sdk",
Version: "v2.0.0",
},
},
},
want: sdkBuildInfo{
sdkVersion: "v2.0.0",
},
},
{
name: "all depo",
debugBuildInfo: &debug.BuildInfo{
Deps: []*debug.Module{
{
Path: "github.com/cosmos/cosmos-sdk",
Version: "v2.0.0",
},
{
Path: "cosmossdk.io/server/v2/cometbft",
Version: "v2.0.1",
},
{
Path: "cosmossdk.io/runtime/v2",
Version: "v2.0.2",
},
{
Path: "cosmossdk.io/server/v2/stf",
Version: "v2.0.3",
},
},
},
want: sdkBuildInfo{
sdkVersion: "v2.0.0",
cometServerVersion: "v2.0.1",
runtimeVersion: "v2.0.2",
stfVersion: "v2.0.3",
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
require.Equal(t, tt.want, getSDKBuildInfo(tt.debugBuildInfo))
})
}
}
func Test_extractVersionFromBuildInfo(t *testing.T) {
tests := []struct {
name string
dep *debug.Module
want string
}{
{
name: "no replace",
dep: &debug.Module{
Path: "github.com/cosmos/cosmos-sdk",
Version: "v2.0.0",
},
want: "v2.0.0",
},
{
name: "devel replace ",
dep: &debug.Module{
Path: "github.com/cosmos/cosmos-sdk",
Version: "v2.0.0",
Replace: &debug.Module{
Version: "(devel)",
},
},
want: "v2.0.0",
},
{
name: "non-devel replace ",
dep: &debug.Module{
Path: "github.com/cosmos/cosmos-sdk",
Version: "v2.0.0",
Replace: &debug.Module{
Version: "v1.0.3",
},
},
want: "v1.0.3",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
require.Equal(t, tt.want, extractVersionFromBuildInfo(tt.dep))
})
}
}
func Test_depsFromBuildInfo(t *testing.T) {
modules := []*debug.Module{
{
Path: "github.com/cosmos/cosmos-sdk",
Version: "v2.0.0",
},
{
Path: "cosmossdk.io/server/v2/cometbft",
Version: "v2.0.1",
},
{
Path: "cosmossdk.io/runtime/v2",
Version: "v2.0.2",
},
{
Path: "cosmossdk.io/server/v2/stf",
Version: "v2.0.3",
},
}
tests := []struct {
name string
debugBuildInfo *debug.BuildInfo
want []buildDep
}{
{
name: "no deps",
debugBuildInfo: &debug.BuildInfo{},
want: nil,
},
{
name: "deps",
debugBuildInfo: &debug.BuildInfo{
Deps: modules,
},
want: []buildDep{
{modules[0]},
{modules[1]},
{modules[2]},
{modules[3]},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
require.Equal(t, tt.want, depsFromBuildInfo(tt.debugBuildInfo))
})
}
}