fix(log): custom marshaller produce invalid data (#17532)

This commit is contained in:
Julien Robert 2023-08-25 15:14:24 +02:00 committed by GitHub
parent 4a536b21e2
commit 03fb7da26d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 28 additions and 24 deletions

View File

@ -78,7 +78,7 @@ func TestABCI_First_block_Height(t *testing.T) {
func TestABCI_InitChain(t *testing.T) {
name := t.Name()
db := dbm.NewMemDB()
logger := log.NewNopLogger()
logger := log.NewTestLogger(t)
app := baseapp.NewBaseApp(name, logger, db, nil, baseapp.SetChainID("test-chain-id"))
capKey := storetypes.NewKVStoreKey("main")
@ -180,7 +180,7 @@ func TestABCI_InitChain(t *testing.T) {
func TestABCI_InitChain_WithInitialHeight(t *testing.T) {
name := t.Name()
db := dbm.NewMemDB()
app := baseapp.NewBaseApp(name, log.NewNopLogger(), db, nil)
app := baseapp.NewBaseApp(name, log.NewTestLogger(t), db, nil)
_, err := app.InitChain(
&abci.RequestInitChain{
@ -197,7 +197,7 @@ func TestABCI_InitChain_WithInitialHeight(t *testing.T) {
func TestABCI_FinalizeBlock_WithInitialHeight(t *testing.T) {
name := t.Name()
db := dbm.NewMemDB()
app := baseapp.NewBaseApp(name, log.NewNopLogger(), db, nil)
app := baseapp.NewBaseApp(name, log.NewTestLogger(t), db, nil)
_, err := app.InitChain(
&abci.RequestInitChain{
@ -219,7 +219,7 @@ func TestABCI_FinalizeBlock_WithInitialHeight(t *testing.T) {
func TestABCI_FinalizeBlock_WithBeginAndEndBlocker(t *testing.T) {
name := t.Name()
db := dbm.NewMemDB()
app := baseapp.NewBaseApp(name, log.NewNopLogger(), db, nil)
app := baseapp.NewBaseApp(name, log.NewTestLogger(t), db, nil)
app.SetBeginBlocker(func(ctx sdk.Context) (sdk.BeginBlock, error) {
return sdk.BeginBlock{
@ -286,7 +286,7 @@ func TestABCI_FinalizeBlock_WithBeginAndEndBlocker(t *testing.T) {
func TestABCI_ExtendVote(t *testing.T) {
name := t.Name()
db := dbm.NewMemDB()
app := baseapp.NewBaseApp(name, log.NewNopLogger(), db, nil)
app := baseapp.NewBaseApp(name, log.NewTestLogger(t), db, nil)
app.SetExtendVoteHandler(func(ctx sdk.Context, req *abci.RequestExtendVote) (*abci.ResponseExtendVote, error) {
voteExt := "foo" + hex.EncodeToString(req.Hash) + strconv.FormatInt(req.Height, 10)
@ -369,7 +369,7 @@ func TestABCI_ExtendVote(t *testing.T) {
func TestABCI_OnlyVerifyVoteExtension(t *testing.T) {
name := t.Name()
db := dbm.NewMemDB()
app := baseapp.NewBaseApp(name, log.NewNopLogger(), db, nil)
app := baseapp.NewBaseApp(name, log.NewTestLogger(t), db, nil)
app.SetVerifyVoteExtensionHandler(func(ctx sdk.Context, req *abci.RequestVerifyVoteExtension) (*abci.ResponseVerifyVoteExtension, error) {
// do some kind of verification here
@ -503,7 +503,7 @@ func TestABCI_P2PQuery(t *testing.T) {
func TestBaseApp_PrepareCheckState(t *testing.T) {
db := dbm.NewMemDB()
name := t.Name()
logger := log.NewNopLogger()
logger := log.NewTestLogger(t)
cp := &cmtproto.ConsensusParams{
Block: &cmtproto.BlockParams{
@ -532,7 +532,7 @@ func TestBaseApp_PrepareCheckState(t *testing.T) {
func TestBaseApp_Precommit(t *testing.T) {
db := dbm.NewMemDB()
name := t.Name()
logger := log.NewNopLogger()
logger := log.NewTestLogger(t)
cp := &cmtproto.ConsensusParams{
Block: &cmtproto.BlockParams{
@ -1238,7 +1238,7 @@ func TestABCI_Query(t *testing.T) {
}
func TestABCI_GetBlockRetentionHeight(t *testing.T) {
logger := log.NewNopLogger()
logger := log.NewTestLogger(t)
db := dbm.NewMemDB()
name := t.Name()
@ -1351,7 +1351,7 @@ func TestABCI_GetBlockRetentionHeight(t *testing.T) {
func TestPrepareCheckStateCalledWithCheckState(t *testing.T) {
t.Parallel()
logger := log.NewNopLogger()
logger := log.NewTestLogger(t)
db := dbm.NewMemDB()
name := t.Name()
app := baseapp.NewBaseApp(name, logger, db, nil)
@ -1374,7 +1374,7 @@ func TestPrepareCheckStateCalledWithCheckState(t *testing.T) {
func TestPrecommiterCalledWithDeliverState(t *testing.T) {
t.Parallel()
logger := log.NewNopLogger()
logger := log.NewTestLogger(t)
db := dbm.NewMemDB()
name := t.Name()
app := baseapp.NewBaseApp(name, logger, db, nil)
@ -2009,7 +2009,7 @@ func TestABCI_HaltChain(t *testing.T) {
func TestBaseApp_PreFinalizeBlockHook(t *testing.T) {
db := dbm.NewMemDB()
name := t.Name()
logger := log.NewNopLogger()
logger := log.NewTestLogger(t)
app := baseapp.NewBaseApp(name, logger, db, nil)
_, err := app.InitChain(&abci.RequestInitChain{})

View File

@ -66,7 +66,7 @@ func NewBaseAppSuite(t *testing.T, opts ...func(*baseapp.BaseApp)) *BaseAppSuite
txConfig := authtx.NewTxConfig(cdc, authtx.DefaultSignModes)
db := dbm.NewMemDB()
app := baseapp.NewBaseApp(t.Name(), log.NewNopLogger(), db, txConfig.TxDecoder(), opts...)
app := baseapp.NewBaseApp(t.Name(), log.NewTestLogger(t), db, txConfig.TxDecoder(), opts...)
require.Equal(t, t.Name(), app.Name())
app.SetInterfaceRegistry(cdc.InterfaceRegistry())
@ -91,7 +91,7 @@ func getQueryBaseapp(t *testing.T) *baseapp.BaseApp {
db := dbm.NewMemDB()
name := t.Name()
app := baseapp.NewBaseApp(name, log.NewNopLogger(), db, nil)
app := baseapp.NewBaseApp(name, log.NewTestLogger(t), db, nil)
_, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{Height: 1})
require.NoError(t, err)
@ -192,7 +192,7 @@ func NewBaseAppSuiteWithSnapshots(t *testing.T, cfg SnapshotsConfig, opts ...fun
}
func TestLoadVersion(t *testing.T) {
logger := log.NewNopLogger()
logger := log.NewTestLogger(t)
pruningOpt := baseapp.SetPruning(pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
db := dbm.NewMemDB()
name := t.Name()
@ -323,7 +323,7 @@ func TestSetLoader(t *testing.T) {
if tc.setLoader != nil {
opts = append(opts, tc.setLoader)
}
app := baseapp.NewBaseApp(t.Name(), log.NewNopLogger(), db, nil, opts...)
app := baseapp.NewBaseApp(t.Name(), log.NewTestLogger(t), db, nil, opts...)
app.MountStores(storetypes.NewKVStoreKey(tc.loadStoreKey))
err := app.LoadLatestVersion()
require.Nil(t, err)
@ -346,7 +346,7 @@ func TestVersionSetterGetter(t *testing.T) {
pruningOpt := baseapp.SetPruning(pruningtypes.NewPruningOptions(pruningtypes.PruningDefault))
db := dbm.NewMemDB()
name := t.Name()
app := baseapp.NewBaseApp(name, log.NewNopLogger(), db, nil, pruningOpt)
app := baseapp.NewBaseApp(name, log.NewTestLogger(t), db, nil, pruningOpt)
require.Equal(t, "", app.Version())
res, err := app.Query(context.TODO(), &abci.RequestQuery{Path: "app/version"})
@ -405,7 +405,7 @@ func TestOptionFunction(t *testing.T) {
}
db := dbm.NewMemDB()
bap := baseapp.NewBaseApp("starting name", log.NewNopLogger(), db, nil, testChangeNameHelper("new name"))
bap := baseapp.NewBaseApp("starting name", log.NewTestLogger(t), db, nil, testChangeNameHelper("new name"))
require.Equal(t, bap.Name(), "new name", "BaseApp should have had name changed via option function")
}
@ -597,7 +597,7 @@ func TestABCI_CreateQueryContext(t *testing.T) {
db := dbm.NewMemDB()
name := t.Name()
app := baseapp.NewBaseApp(name, log.NewNopLogger(), db, nil)
app := baseapp.NewBaseApp(name, log.NewTestLogger(t), db, nil)
_, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{Height: 1})
require.NoError(t, err)

View File

@ -59,7 +59,7 @@ func TestRegisterQueryServiceTwice(t *testing.T) {
err := depinject.Inject(
depinject.Configs(
makeMinimalConfig(),
depinject.Supply(log.NewNopLogger()),
depinject.Supply(log.NewTestLogger(t)),
),
&appBuilder)
require.NoError(t, err)

View File

@ -30,7 +30,7 @@ func TestRegisterMsgService(t *testing.T) {
err := depinject.Inject(
depinject.Configs(
makeMinimalConfig(),
depinject.Supply(log.NewNopLogger()),
depinject.Supply(log.NewTestLogger(t)),
), &appBuilder, &registry)
require.NoError(t, err)
app := appBuilder.Build(dbm.NewMemDB(), nil)
@ -62,7 +62,7 @@ func TestRegisterMsgServiceTwice(t *testing.T) {
err := depinject.Inject(
depinject.Configs(
makeMinimalConfig(),
depinject.Supply(log.NewNopLogger()),
depinject.Supply(log.NewTestLogger(t)),
), &appBuilder, &registry)
require.NoError(t, err)
db := dbm.NewMemDB()

View File

@ -22,6 +22,10 @@ Each entry must include the Github issue reference in the following format:
## [Unreleased]
## [v1.2.1](https://github.com/cosmos/cosmos-sdk/releases/tag/log/v1.2.1) - 2023-08-25
* [#17532](https://github.com/cosmos/cosmos-sdk/pull/17532) Proper marshalling of `fmt.Stringer` (follow-up of [#17205](https://github.com/cosmos/cosmos-sdk/pull/17205)).
## [v1.2.0](https://github.com/cosmos/cosmos-sdk/releases/tag/log/v1.2.0) - 2023-07-31
* [#17194](https://github.com/cosmos/cosmos-sdk/pull/17194) Avoid repeating parse log level in `ParseLogLevel`.

View File

@ -19,7 +19,7 @@ func init() {
case encoding.TextMarshaler:
return json.Marshal(i)
case fmt.Stringer:
return fmt.Appendf([]byte("\""), "%s%s", v.String(), "\""), nil
return json.Marshal(v.String())
default:
return json.Marshal(i)
}

View File

@ -25,7 +25,7 @@ func Execute(rootCmd *cobra.Command, envPrefix, defaultHome string) error {
// https://github.com/spf13/cobra/pull/1118.
ctx := CreateExecuteContext(context.Background())
rootCmd.PersistentFlags().String(flags.FlagLogLevel, zerolog.InfoLevel.String(), "The logging level (trace|debug|info|warn|error|fatal|panic)")
rootCmd.PersistentFlags().String(flags.FlagLogLevel, zerolog.InfoLevel.String(), "The logging level (trace|debug|info|warn|error|fatal|panic|disabled or '*:<level>,<key>:<level>')")
// NOTE: The default logger is only checking for the "json" value, any other value will default to plain text.
rootCmd.PersistentFlags().String(flags.FlagLogFormat, "plain", "The logging format (json|plain)")