Skip to content

Commit 86eea35

Browse files
author
Yongwoo Lee
committed
Merge branch 'v2/develop' into whylee/v2/fix/build-properly-when-using-libsecp256k1
2 parents 7f31054 + f9fbaea commit 86eea35

File tree

16 files changed

+934
-8
lines changed

16 files changed

+934
-8
lines changed

codecov.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ ignore:
5757
- "*.sh"
5858
- "*.png"
5959
- "*_test.go"
60-
- "*.pb.go"
61-
- "*.pb.gw.go"
60+
- "x/**/*.pb.go"
61+
- "x/**/*.pb.gw.go"
6262
- "scripts/"
6363
- "x/**/test_common.go"
6464
- "*_cmd.go"

docs/core/proto-docs.md

+57
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,12 @@
240240

241241
- [Query](#lbm.auth.v1beta1.Query)
242242

243+
- [lbm/auth/v1beta1/tx.proto](#lbm/auth/v1beta1/tx.proto)
244+
- [MsgEmpty](#lbm.auth.v1beta1.MsgEmpty)
245+
- [MsgEmptyResponse](#lbm.auth.v1beta1.MsgEmptyResponse)
246+
247+
- [Msg](#lbm.auth.v1beta1.Msg)
248+
243249
- [lbm/bank/v1beta1/bank.proto](#lbm/bank/v1beta1/bank.proto)
244250
- [DenomUnit](#lbm.bank.v1beta1.DenomUnit)
245251
- [Input](#lbm.bank.v1beta1.Input)
@@ -4018,6 +4024,57 @@ Query defines the gRPC querier service.
40184024

40194025

40204026

4027+
<a name="lbm/auth/v1beta1/tx.proto"></a>
4028+
<p align="right"><a href="#top">Top</a></p>
4029+
4030+
## lbm/auth/v1beta1/tx.proto
4031+
4032+
4033+
4034+
<a name="lbm.auth.v1beta1.MsgEmpty"></a>
4035+
4036+
### MsgEmpty
4037+
MsgEmpty represents a message that doesn't do anything. Used to measure performance.
4038+
4039+
4040+
| Field | Type | Label | Description |
4041+
| ----- | ---- | ----- | ----------- |
4042+
| `from_address` | [string](#string) | | |
4043+
4044+
4045+
4046+
4047+
4048+
4049+
<a name="lbm.auth.v1beta1.MsgEmptyResponse"></a>
4050+
4051+
### MsgEmptyResponse
4052+
MsgEmptyResponse defines the Msg/Empty response type.
4053+
4054+
4055+
4056+
4057+
4058+
<!-- end messages -->
4059+
4060+
<!-- end enums -->
4061+
4062+
<!-- end HasExtensions -->
4063+
4064+
4065+
<a name="lbm.auth.v1beta1.Msg"></a>
4066+
4067+
### Msg
4068+
Msg defines the auth Msg service.
4069+
4070+
| Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint |
4071+
| ----------- | ------------ | ------------- | ------------| ------- | -------- |
4072+
| `Empty` | [MsgEmpty](#lbm.auth.v1beta1.MsgEmpty) | [MsgEmptyResponse](#lbm.auth.v1beta1.MsgEmptyResponse) | Empty defines a method that doesn't do anything. Used to measure performance. | |
4073+
4074+
<!-- end services -->
4075+
4076+
4077+
40214078
<a name="lbm/bank/v1beta1/bank.proto"></a>
40224079
<p align="right"><a href="#top">Top</a></p>
40234080

go.mod

+5-2
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,13 @@ require (
2828
github.com/grpc-ecosystem/go-grpc-middleware v1.2.2
2929
github.com/grpc-ecosystem/grpc-gateway v1.16.0
3030
github.com/hashicorp/golang-lru v0.5.4 // indirect
31+
github.com/kr/text v0.2.0 // indirect
3132
github.com/line/iavl/v2 v2.0.0-init.1.0.20210507092458-8331d3daef36
3233
github.com/line/ostracon v0.34.9-0.20210512045543-6c7ab0535e10
3334
github.com/line/tm-db/v2 v2.0.0-init.1.0.20210413083915-5bb60e117524
3435
github.com/magiconair/properties v1.8.4
3536
github.com/mattn/go-isatty v0.0.12
37+
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
3638
github.com/nxadm/tail v1.4.8 // indirect
3739
github.com/onsi/ginkgo v1.15.0 // indirect
3840
github.com/onsi/gomega v1.10.5 // indirect
@@ -54,12 +56,13 @@ require (
5456
github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15
5557
github.com/tendermint/go-amino v0.16.0
5658
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83
57-
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 // indirect
58-
golang.org/x/sys v0.0.0-20210228012217-479acdf4ea46 // indirect
59+
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 // indirect
60+
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 // indirect
5961
golang.org/x/text v0.3.5 // indirect
6062
google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f
6163
google.golang.org/grpc v1.35.0
6264
google.golang.org/protobuf v1.25.0
65+
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
6366
gopkg.in/yaml.v2 v2.4.0
6467
)
6568

go.sum

+14-4
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwc
113113
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
114114
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
115115
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
116+
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
116117
github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU=
117118
github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U=
118119
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -259,6 +260,7 @@ github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBt
259260
github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE=
260261
github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
261262
github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
263+
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
262264
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
263265
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
264266
github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
@@ -311,6 +313,7 @@ github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8
311313
github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM=
312314
github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc=
313315
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
316+
github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
314317
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
315318
github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
316319
github.com/kkdai/bstream v1.0.0/go.mod h1:FDnDOHt5Yx4p3FaHcioFT0QjDOtgUpvjeZqAs+NVZZA=
@@ -323,6 +326,8 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN
323326
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
324327
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
325328
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
329+
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
330+
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
326331
github.com/libp2p/go-buffer-pool v0.0.2 h1:QNK2iAFa8gjAe1SPz6mHSMuCcjs+X1wlHzeOSqcmlfs=
327332
github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM=
328333
github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
@@ -380,6 +385,8 @@ github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzE
380385
github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
381386
github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
382387
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
388+
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
389+
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
383390
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
384391
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
385392
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
@@ -650,8 +657,8 @@ golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81R
650657
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
651658
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
652659
golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
653-
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw=
654-
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
660+
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0=
661+
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
655662
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
656663
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
657664
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -704,8 +711,9 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w
704711
golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
705712
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
706713
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
707-
golang.org/x/sys v0.0.0-20210228012217-479acdf4ea46 h1:V066+OYJ66oTjnhm4Yrn7SXIwSCiDQJxpBxmvqb1N1c=
708-
golang.org/x/sys v0.0.0-20210228012217-479acdf4ea46/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
714+
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
715+
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 h1:F5Gozwx4I1xtr/sr/8CFbb57iKi3297KFs0QDbGN60A=
716+
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
709717
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
710718
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
711719
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -795,6 +803,8 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
795803
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
796804
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
797805
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
806+
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
807+
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
798808
gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
799809
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
800810
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=

proto/lbm/auth/v1beta1/tx.proto

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
syntax = "proto3";
2+
package lbm.auth.v1beta1;
3+
4+
import "gogoproto/gogo.proto";
5+
import "lbm/auth/v1beta1/auth.proto";
6+
7+
option go_package = "github.com/line/lbm-sdk/v2/x/auth/types";
8+
9+
// Msg defines the auth Msg service.
10+
service Msg {
11+
// Empty defines a method that doesn't do anything. Used to measure performance.
12+
rpc Empty(MsgEmpty) returns (MsgEmptyResponse);
13+
}
14+
15+
// MsgEmpty represents a message that doesn't do anything. Used to measure performance.
16+
message MsgEmpty {
17+
option (gogoproto.equal) = false;
18+
option (gogoproto.goproto_getters) = false;
19+
20+
string from_address = 1 [(gogoproto.moretags) = "yaml:\"from_address\""];
21+
}
22+
23+
// MsgEmptyResponse defines the Msg/Empty response type.
24+
message MsgEmptyResponse {}

testutil/network/network.go

+11
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,17 @@ func NewWithoutInit(t *testing.T, cfg Config, baseDir string, validators []*Vali
403403
return network
404404
}
405405

406+
func AddNewValidator(t *testing.T, network *Network, validator *Validator) {
407+
t.Log("adding new validator")
408+
409+
require.NoError(t, startInProcess(network.Config, validator))
410+
network.Validators = append(network.Validators, validator)
411+
412+
t.Log("added new validator")
413+
414+
server.TrapSignal(network.Cleanup)
415+
}
416+
406417
// LatestHeight returns the latest height of the network or an error if the
407418
// query fails or no validators exist.
408419
func (n *Network) LatestHeight() (int64, error) {

x/auth/client/cli/cli_test.go

+83
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import (
99
"strings"
1010
"testing"
1111

12+
"github.com/gogo/protobuf/proto"
13+
sdkerrors "github.com/line/lbm-sdk/v2/types/errors"
1214
ostcli "github.com/line/ostracon/libs/cli"
1315
"github.com/stretchr/testify/require"
1416
"github.com/stretchr/testify/suite"
@@ -1150,6 +1152,87 @@ func (s *IntegrationTestSuite) createBankMsg(val *network.Validator, toAddr sdk.
11501152
return res
11511153
}
11521154

1155+
func (s *IntegrationTestSuite) TestNewEmptyTxCmd() {
1156+
val := s.network.Validators[0]
1157+
1158+
testCases := []struct {
1159+
name string
1160+
from sdk.AccAddress
1161+
args []string
1162+
expectErr bool
1163+
respType proto.Message
1164+
expectedCode uint32
1165+
}{
1166+
{
1167+
"valid transaction",
1168+
val.Address,
1169+
[]string{
1170+
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
1171+
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
1172+
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
1173+
},
1174+
false,
1175+
&sdk.TxResponse{},
1176+
0,
1177+
},
1178+
{
1179+
"not enough fees",
1180+
val.Address,
1181+
[]string{
1182+
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
1183+
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
1184+
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(1))).String()),
1185+
},
1186+
false,
1187+
&sdk.TxResponse{},
1188+
sdkerrors.ErrInsufficientFee.ABCICode(),
1189+
},
1190+
{
1191+
"not enough gas",
1192+
val.Address,
1193+
[]string{
1194+
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
1195+
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
1196+
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
1197+
"--gas=10",
1198+
},
1199+
false,
1200+
&sdk.TxResponse{},
1201+
sdkerrors.ErrOutOfGas.ABCICode(),
1202+
},
1203+
{
1204+
"no from",
1205+
sdk.AccAddress{},
1206+
[]string{
1207+
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
1208+
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
1209+
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
1210+
},
1211+
true,
1212+
&sdk.TxResponse{},
1213+
0,
1214+
},
1215+
}
1216+
1217+
for _, tc := range testCases {
1218+
tc := tc
1219+
1220+
s.Run(tc.name, func() {
1221+
bz, err := clitestutil.ExecTestCLICmd(val.ClientCtx, authcli.NewEmptyTxCmd(),
1222+
append([]string{tc.from.String()}, tc.args...))
1223+
if tc.expectErr {
1224+
s.Require().Error(err)
1225+
} else {
1226+
s.Require().NoError(err)
1227+
1228+
s.Require().NoError(val.ClientCtx.JSONMarshaler.UnmarshalJSON(bz.Bytes(), tc.respType), bz.String())
1229+
txResp := tc.respType.(*sdk.TxResponse)
1230+
s.Require().Equal(tc.expectedCode, txResp.Code)
1231+
}
1232+
})
1233+
}
1234+
}
1235+
11531236
func TestIntegrationTestSuite(t *testing.T) {
11541237
suite.Run(t, new(IntegrationTestSuite))
11551238
}

x/auth/client/cli/tx.go

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package cli
2+
3+
import (
4+
"github.com/line/lbm-sdk/v2/client"
5+
"github.com/line/lbm-sdk/v2/client/flags"
6+
"github.com/line/lbm-sdk/v2/client/tx"
7+
"github.com/line/lbm-sdk/v2/x/auth/types"
8+
"github.com/spf13/cobra"
9+
)
10+
11+
// NewTxCmd returns a root CLI command handler for all x/auth transaction commands.
12+
func NewTxCmd() *cobra.Command {
13+
txCmd := &cobra.Command{
14+
Use: types.ModuleName,
15+
Short: "Auth transaction subcommands",
16+
DisableFlagParsing: true,
17+
SuggestionsMinimumDistance: 2,
18+
RunE: client.ValidateCmd,
19+
}
20+
21+
txCmd.AddCommand(NewEmptyTxCmd())
22+
23+
return txCmd
24+
}
25+
26+
// NewEmptyTxCmd returns a CLI command handler for creating a MsgEmpty transaction.
27+
func NewEmptyTxCmd() *cobra.Command {
28+
cmd := &cobra.Command{
29+
Use: "empty [from_key_or_address]",
30+
Short: `Empty doesn't do anything. Used to measure performance.`,
31+
Args: cobra.ExactArgs(1),
32+
RunE: func(cmd *cobra.Command, args []string) error {
33+
err := cmd.Flags().Set(flags.FlagFrom, args[0])
34+
if err != nil {
35+
return err
36+
}
37+
clientCtx, err := client.GetClientTxContext(cmd)
38+
if err != nil {
39+
return err
40+
}
41+
42+
msg := types.NewServiceMsgEmpty(clientCtx.GetFromAddress())
43+
if err := msg.ValidateBasic(); err != nil {
44+
return err
45+
}
46+
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
47+
},
48+
}
49+
50+
flags.AddTxFlagsToCmd(cmd)
51+
52+
return cmd
53+
}

0 commit comments

Comments
 (0)