diff --git a/CHANGELOG.md b/CHANGELOG.md index a1c5819012b6..dc7fb9531aa9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -72,6 +72,8 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Improvements +* [#14691](https://github.com/cosmos/cosmos-sdk/pull/14691) Change behavior of `sdk.StringifyEvents` to not flatten events attributes by events type. + * This change only affects ABCI message logs, and not the actual events. * [#14692](https://github.com/cosmos/cosmos-sdk/pull/14692) Improve RPC queries error message when app is at height 0. * [#14609](https://github.com/cosmos/cosmos-sdk/pull/14609) Add RetryForBlocks method to use in tests that require waiting for a transaction to be included in a block. * [#14017](https://github.com/cosmos/cosmos-sdk/pull/14017) Simplify ADR-028 and `address.Module`. diff --git a/math/dec_test.go b/math/dec_test.go index 45daeee77a13..a58ba7769db3 100644 --- a/math/dec_test.go +++ b/math/dec_test.go @@ -671,7 +671,7 @@ func BenchmarkLegacyQuoRoundupMut(b *testing.B) { func TestFormatDec(t *testing.T) { type decimalTest []string var testcases []decimalTest - raw, err := os.ReadFile("../tx/textual/internal/testdata/decimals.json") + raw, err := os.ReadFile("../x/tx/textual/internal/testdata/decimals.json") require.NoError(t, err) err = json.Unmarshal(raw, &testcases) require.NoError(t, err) diff --git a/math/int_test.go b/math/int_test.go index 4f5b31c0f143..6ea405d7f57e 100644 --- a/math/int_test.go +++ b/math/int_test.go @@ -432,7 +432,7 @@ func TestRoundTripMarshalToInt(t *testing.T) { func TestFormatInt(t *testing.T) { type integerTest []string var testcases []integerTest - raw, err := os.ReadFile("../tx/textual/internal/testdata/integers.json") + raw, err := os.ReadFile("../x/tx/textual/internal/testdata/integers.json") require.NoError(t, err) err = json.Unmarshal(raw, &testcases) require.NoError(t, err) diff --git a/types/events.go b/types/events.go index b433c8515679..9acd52b4997a 100644 --- a/types/events.go +++ b/types/events.go @@ -4,7 +4,6 @@ import ( "encoding/json" "fmt" "reflect" - "sort" "strings" "golang.org/x/exp/maps" @@ -289,29 +288,6 @@ func (se StringEvents) String() string { return strings.TrimRight(sb.String(), "\n") } -// Flatten returns a flattened version of StringEvents by grouping all attributes -// per unique event type. -func (se StringEvents) Flatten() StringEvents { - flatEvents := make(map[string][]Attribute) - - for _, e := range se { - flatEvents[e.Type] = append(flatEvents[e.Type], e.Attributes...) - } - keys := make([]string, 0, len(flatEvents)) - res := make(StringEvents, 0, len(flatEvents)) // appeneded to keys, same length of what is allocated to keys - - for ty := range flatEvents { - keys = append(keys, ty) - } - - sort.Strings(keys) - for _, ty := range keys { - res = append(res, StringEvent{Type: ty, Attributes: flatEvents[ty]}) - } - - return res -} - // StringifyEvent converts an Event object to a StringEvent object. func StringifyEvent(e abci.Event) StringEvent { res := StringEvent{Type: e.Type} @@ -335,7 +311,7 @@ func StringifyEvents(events []abci.Event) StringEvents { res = append(res, StringifyEvent(e)) } - return res.Flatten() + return res } // MarkEventsToIndex returns the set of ABCI events, where each event's attribute diff --git a/types/events_test.go b/types/events_test.go index bcd242d714de..6adc05698708 100644 --- a/types/events_test.go +++ b/types/events_test.go @@ -145,8 +145,8 @@ func (s *eventsTestSuite) TestStringifyEvents() { sdk.NewEvent("message", sdk.NewAttribute(sdk.AttributeKeySender, "foo")), sdk.NewEvent("message", sdk.NewAttribute(sdk.AttributeKeyModule, "bank")), }, - expTxtStr: "\t\t- message\n\t\t\t- sender: foo\n\t\t\t- module: bank", - expJSONStr: "[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"foo\"},{\"key\":\"module\",\"value\":\"bank\"}]}]", + expTxtStr: "\t\t- message\n\t\t\t- sender: foo\n\t\t- message\n\t\t\t- module: bank", + expJSONStr: "[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"foo\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"module\",\"value\":\"bank\"}]}]", }, { name: "multiple events with same attributes", @@ -158,8 +158,8 @@ func (s *eventsTestSuite) TestStringifyEvents() { ), sdk.NewEvent("message", sdk.NewAttribute(sdk.AttributeKeySender, "foo")), }, - expTxtStr: "\t\t- message\n\t\t\t- module: staking\n\t\t\t- sender: cosmos1foo\n\t\t\t- sender: foo", - expJSONStr: `[{"type":"message","attributes":[{"key":"module","value":"staking"},{"key":"sender","value":"cosmos1foo"},{"key":"sender","value":"foo"}]}]`, + expTxtStr: "\t\t- message\n\t\t\t- module: staking\n\t\t\t- sender: cosmos1foo\n\t\t- message\n\t\t\t- sender: foo", + expJSONStr: `[{"type":"message","attributes":[{"key":"module","value":"staking"},{"key":"sender","value":"cosmos1foo"}]},{"type":"message","attributes":[{"key":"sender","value":"foo"}]}]`, }, } diff --git a/types/result_test.go b/types/result_test.go index bbbfd268cce6..1823bfd19e62 100644 --- a/types/result_test.go +++ b/types/result_test.go @@ -42,13 +42,17 @@ func (s *resultTestSuite) TestParseABCILog() { func (s *resultTestSuite) TestABCIMessageLog() { cdc := codec.NewLegacyAmino() - events := sdk.Events{sdk.NewEvent("transfer", sdk.NewAttribute("sender", "foo"))} + events := sdk.Events{ + sdk.NewEvent("transfer", sdk.NewAttribute("sender", "foo")), + sdk.NewEvent("transfer", sdk.NewAttribute("sender", "bar")), + } msgLog := sdk.NewABCIMessageLog(0, "", events) msgLogs := sdk.ABCIMessageLogs{msgLog} bz, err := cdc.MarshalJSON(msgLogs) s.Require().NoError(err) s.Require().Equal(string(bz), msgLogs.String()) + s.Require().Equal(`[{"msg_index":0,"events":[{"type":"transfer","attributes":[{"key":"sender","value":"foo"}]},{"type":"transfer","attributes":[{"key":"sender","value":"bar"}]}]}]`, msgLogs.String()) } func (s *resultTestSuite) TestNewSearchTxsResult() {