github.com/cosmos/cosmos-sdk@v0.50.10/x/genutil/client/cli/migrate_test.go (about)

     1  package cli_test
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  
     9  	"github.com/cosmos/cosmos-sdk/client"
    10  	"github.com/cosmos/cosmos-sdk/testutil"
    11  	clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
    12  	moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
    13  	"github.com/cosmos/cosmos-sdk/x/genutil/client/cli"
    14  )
    15  
    16  func TestMigrateGenesis(t *testing.T) {
    17  	testCases := []struct {
    18  		name      string
    19  		genesis   string
    20  		target    string
    21  		expErr    bool
    22  		expErrMsg string
    23  		check     func(jsonOut string)
    24  	}{
    25  		{
    26  			"migrate 0.37 to 0.43",
    27  			v037Exported,
    28  			"v0.43",
    29  			true, "make sure that you have correctly migrated all CometBFT consensus params", func(_ string) {},
    30  		},
    31  		{
    32  			"invalid target version",
    33  			func() string {
    34  				bz, err := os.ReadFile("../../types/testdata/app_genesis.json")
    35  				require.NoError(t, err)
    36  
    37  				return string(bz)
    38  			}(),
    39  			"v0.10",
    40  			true, "unknown migration function for version: v0.10 (supported versions v0.43, v0.46, v0.47)", func(_ string) {},
    41  		},
    42  		{
    43  			"invalid target version",
    44  			func() string {
    45  				bz, err := os.ReadFile("../../types/testdata/cmt_genesis.json")
    46  				require.NoError(t, err)
    47  
    48  				return string(bz)
    49  			}(),
    50  			"v0.10",
    51  			true, "unknown migration function for version: v0.10 (supported versions v0.43, v0.46, v0.47)", func(_ string) {},
    52  		},
    53  	}
    54  
    55  	for _, tc := range testCases {
    56  		tc := tc
    57  		t.Run(tc.name, func(t *testing.T) {
    58  			genesisFile := testutil.WriteToNewTempFile(t, tc.genesis)
    59  			jsonOutput, err := clitestutil.ExecTestCLICmd(
    60  				// the codec does not contain any modules so that genutil does not bring unnecessary dependencies in the test
    61  				client.Context{Codec: moduletestutil.MakeTestEncodingConfig().Codec},
    62  				cli.MigrateGenesisCmd(cli.MigrationMap),
    63  				[]string{tc.target, genesisFile.Name()},
    64  			)
    65  			if tc.expErr {
    66  				require.Contains(t, err.Error(), tc.expErrMsg)
    67  			} else {
    68  				require.NoError(t, err)
    69  				tc.check(jsonOutput.String())
    70  			}
    71  		})
    72  	}
    73  }