Merge PR #2972: Fix gaiacli config and make it non-interactive only
* Fix gaiacli config and make it non-interactive only Closes: #2734 * Update cli tests * Remove --list, by default and with no args print config * Small improvements * Warn user when file doesn't exist * Fix integration tests
This commit is contained in:
parent
d8fbae677f
commit
d32e4a9fe0
9
Gopkg.lock
generated
9
Gopkg.lock
generated
@ -239,14 +239,6 @@
|
||||
revision = "c12348ce28de40eed0136aa2b644d0ee0650e56c"
|
||||
version = "v1.0.1"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:78bbb1ba5b7c3f2ed0ea1eab57bdd3859aec7e177811563edc41198a760b06af"
|
||||
name = "github.com/mitchellh/go-homedir"
|
||||
packages = ["."]
|
||||
pruneopts = "UT"
|
||||
revision = "ae18d6b8b3205b561c79e8e5f69bff09736185f4"
|
||||
version = "v1.0.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:53bc4cd4914cd7cd52139990d5170d6dc99067ae31c56530621b18b35fc30318"
|
||||
name = "github.com/mitchellh/mapstructure"
|
||||
@ -665,7 +657,6 @@
|
||||
"github.com/golang/protobuf/proto",
|
||||
"github.com/gorilla/mux",
|
||||
"github.com/mattn/go-isatty",
|
||||
"github.com/mitchellh/go-homedir",
|
||||
"github.com/pelletier/go-toml",
|
||||
"github.com/pkg/errors",
|
||||
"github.com/rakyll/statik/fs",
|
||||
|
||||
@ -63,10 +63,6 @@
|
||||
name = "github.com/rakyll/statik"
|
||||
version = "=v0.1.4"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/mitchellh/go-homedir"
|
||||
version = "1.0.0"
|
||||
|
||||
## transitive deps, without releases:
|
||||
|
||||
[[override]]
|
||||
|
||||
@ -7,6 +7,7 @@ BREAKING CHANGES
|
||||
* Gaia CLI (`gaiacli`)
|
||||
* [cli] [\#2595](https://github.com/cosmos/cosmos-sdk/issues/2595) Remove `keys new` in favor of `keys add` incorporating existing functionality with addition of key recovery functionality.
|
||||
* [cli] [\#2971](https://github.com/cosmos/cosmos-sdk/pull/2971) Additional verification when running `gaiad gentx`
|
||||
* [cli] [\#2734](https://github.com/cosmos/cosmos-sdk/issues/2734) Rewrite `gaiacli config`. It is now a non-interactive config utility.
|
||||
|
||||
* Gaia
|
||||
- [#128](https://github.com/tendermint/devops/issues/128) Updated CircleCI job to trigger website build on every push to master/develop.
|
||||
|
||||
212
client/config.go
212
client/config.go
@ -1,131 +1,157 @@
|
||||
package client
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path"
|
||||
"strconv"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/cmd/gaia/app"
|
||||
"github.com/tendermint/tendermint/libs/cli"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/mitchellh/go-homedir"
|
||||
"github.com/pelletier/go-toml"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
type cliConfig struct {
|
||||
Home string `toml:"home"`
|
||||
ChainID string `toml:"chain_id"`
|
||||
TrustNode bool `toml:"trust_node"`
|
||||
Output string `toml:"output"`
|
||||
Node string `toml:"node"`
|
||||
Trace bool `toml:"trace"`
|
||||
const (
|
||||
flagGet = "get"
|
||||
)
|
||||
|
||||
var configDefaults map[string]string
|
||||
|
||||
func init() {
|
||||
configDefaults = map[string]string{
|
||||
"chain_id": "",
|
||||
"output": "text",
|
||||
"node": "tcp://localhost:26657",
|
||||
}
|
||||
}
|
||||
|
||||
// ConfigCmd returns a CLI command to interactively create a
|
||||
// Gaia CLI config file.
|
||||
func ConfigCmd() *cobra.Command {
|
||||
cfg := &cobra.Command{
|
||||
Use: "config",
|
||||
Short: "Interactively creates a Gaia CLI config file",
|
||||
cmd := &cobra.Command{
|
||||
Use: "config <key> [value]",
|
||||
Short: "Create or query a Gaia CLI configuration file",
|
||||
RunE: runConfigCmd,
|
||||
Args: cobra.RangeArgs(0, 2),
|
||||
}
|
||||
|
||||
return cfg
|
||||
cmd.Flags().String(cli.HomeFlag, app.DefaultCLIHome,
|
||||
"set client's home directory for configuration")
|
||||
cmd.Flags().Bool(flagGet, false,
|
||||
"print configuration value or its default if unset")
|
||||
return cmd
|
||||
}
|
||||
|
||||
func runConfigCmd(cmd *cobra.Command, args []string) error {
|
||||
home, err := homedir.Dir()
|
||||
cfgFile, err := ensureConfFile(viper.GetString(cli.HomeFlag))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
stdin := BufferStdin()
|
||||
getAction := viper.GetBool(flagGet)
|
||||
if getAction && len(args) != 1 {
|
||||
return fmt.Errorf("wrong number of arguments")
|
||||
}
|
||||
|
||||
gaiaCLIHome, err := handleGaiaCLIHome(home, stdin)
|
||||
// Load configuration
|
||||
tree, err := loadConfigFile(cfgFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
node, err := handleNode(stdin)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
trustNode, err := handleTrustNode(stdin)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
chainID, err := types.DefaultChainID()
|
||||
|
||||
if err != nil {
|
||||
fmt.Println("Couldn't populate ChainID, so using an empty one.")
|
||||
}
|
||||
|
||||
cfg := &cliConfig{
|
||||
Home: gaiaCLIHome,
|
||||
ChainID: chainID,
|
||||
TrustNode: trustNode,
|
||||
Output: "text",
|
||||
Node: node,
|
||||
Trace: false,
|
||||
}
|
||||
|
||||
return createGaiaCLIConfig(cfg)
|
||||
}
|
||||
|
||||
func handleGaiaCLIHome(dir string, stdin *bufio.Reader) (string, error) {
|
||||
dirName := ".gaiacli"
|
||||
home, err := GetString(fmt.Sprintf("Where is your gaiacli home directory? (Default: ~/%s)", dirName), stdin)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if home == "" {
|
||||
home = path.Join(dir, dirName)
|
||||
}
|
||||
|
||||
return home, nil
|
||||
}
|
||||
|
||||
func handleNode(stdin *bufio.Reader) (string, error) {
|
||||
defaultNode := "tcp://localhost:26657"
|
||||
node, err := GetString(fmt.Sprintf("Where is your validator node running? (Default: %s)", defaultNode), stdin)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if node == "" {
|
||||
node = defaultNode
|
||||
}
|
||||
|
||||
return node, nil
|
||||
}
|
||||
|
||||
func handleTrustNode(stdin *bufio.Reader) (bool, error) {
|
||||
return GetConfirmation("Do you trust this node?", stdin)
|
||||
}
|
||||
|
||||
func createGaiaCLIConfig(cfg *cliConfig) error {
|
||||
cfgPath := path.Join(cfg.Home, "config")
|
||||
err := os.MkdirAll(cfgPath, os.ModePerm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
data, err := toml.Marshal(*cfg)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
cfgFile := path.Join(cfgPath, "config.toml")
|
||||
if info, err := os.Stat(cfgFile); err == nil && !info.IsDir() {
|
||||
err = os.Rename(cfgFile, path.Join(cfgPath, "config.toml-old"))
|
||||
// Print the config and exit
|
||||
if len(args) == 0 {
|
||||
s, err := tree.ToTomlString()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Print(s)
|
||||
return nil
|
||||
}
|
||||
|
||||
return ioutil.WriteFile(cfgFile, data, os.ModePerm)
|
||||
key := args[0]
|
||||
// Get value action
|
||||
if getAction {
|
||||
switch key {
|
||||
case "trace", "trust_node":
|
||||
fmt.Println(tree.GetDefault(key, false).(bool))
|
||||
default:
|
||||
if defaultValue, ok := configDefaults[key]; ok {
|
||||
fmt.Println(tree.GetDefault(key, defaultValue).(string))
|
||||
return nil
|
||||
}
|
||||
return errUnknownConfigKey(key)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Set value action
|
||||
value := args[1]
|
||||
switch key {
|
||||
case "chain_id", "output", "node":
|
||||
tree.Set(key, value)
|
||||
case "trace", "trust_node":
|
||||
boolVal, err := strconv.ParseBool(value)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
tree.Set(key, boolVal)
|
||||
default:
|
||||
return errUnknownConfigKey(key)
|
||||
}
|
||||
|
||||
// Save configuration to disk
|
||||
if err := saveConfigFile(cfgFile, tree); err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Fprintf(os.Stderr, "configuration saved to %s\n", cfgFile)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func ensureConfFile(rootDir string) (string, error) {
|
||||
cfgPath := path.Join(rootDir, "config")
|
||||
if err := os.MkdirAll(cfgPath, os.ModePerm); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return path.Join(cfgPath, "config.toml"), nil
|
||||
}
|
||||
|
||||
func loadConfigFile(cfgFile string) (*toml.Tree, error) {
|
||||
if _, err := os.Stat(cfgFile); os.IsNotExist(err) {
|
||||
fmt.Fprintf(os.Stderr, "%s does not exist\n", cfgFile)
|
||||
return toml.Load(``)
|
||||
}
|
||||
|
||||
bz, err := ioutil.ReadFile(cfgFile)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
tree, err := toml.LoadBytes(bz)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return tree, nil
|
||||
}
|
||||
|
||||
func saveConfigFile(cfgFile string, tree *toml.Tree) error {
|
||||
fp, err := os.OpenFile(cfgFile, os.O_WRONLY|os.O_CREATE, 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer fp.Close()
|
||||
|
||||
_, err = tree.WriteTo(fp)
|
||||
return err
|
||||
}
|
||||
|
||||
func errUnknownConfigKey(key string) error {
|
||||
return fmt.Errorf("unknown configuration key: %q", key)
|
||||
}
|
||||
|
||||
@ -44,8 +44,8 @@ func TestGaiaCLIMinimumFees(t *testing.T) {
|
||||
tests.WaitForTMStart(port)
|
||||
tests.WaitForNextNBlocksTM(1, port)
|
||||
|
||||
fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome))
|
||||
barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome))
|
||||
fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --home=%s", gaiacliHome))
|
||||
barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --home=%s", gaiacliHome))
|
||||
|
||||
fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
|
||||
require.Equal(t, int64(50), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
|
||||
@ -68,8 +68,8 @@ func TestGaiaCLIFeesDeduction(t *testing.T) {
|
||||
tests.WaitForTMStart(port)
|
||||
tests.WaitForNextNBlocksTM(1, port)
|
||||
|
||||
fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome))
|
||||
barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome))
|
||||
fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --home=%s", gaiacliHome))
|
||||
barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --home=%s", gaiacliHome))
|
||||
|
||||
fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
|
||||
require.Equal(t, int64(1000), fooAcc.GetCoins().AmountOf("fooToken").Int64())
|
||||
@ -110,8 +110,8 @@ func TestGaiaCLISend(t *testing.T) {
|
||||
tests.WaitForTMStart(port)
|
||||
tests.WaitForNextNBlocksTM(1, port)
|
||||
|
||||
fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome))
|
||||
barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome))
|
||||
fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --home=%s", gaiacliHome))
|
||||
barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --home=%s", gaiacliHome))
|
||||
|
||||
fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
|
||||
require.Equal(t, int64(50), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
|
||||
@ -163,8 +163,8 @@ func TestGaiaCLIGasAuto(t *testing.T) {
|
||||
tests.WaitForTMStart(port)
|
||||
tests.WaitForNextNBlocksTM(1, port)
|
||||
|
||||
fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome))
|
||||
barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome))
|
||||
fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --home=%s", gaiacliHome))
|
||||
barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --home=%s", gaiacliHome))
|
||||
|
||||
fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
|
||||
require.Equal(t, int64(50), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
|
||||
@ -216,8 +216,8 @@ func TestGaiaCLICreateValidator(t *testing.T) {
|
||||
tests.WaitForTMStart(port)
|
||||
tests.WaitForNextNBlocksTM(1, port)
|
||||
|
||||
fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome))
|
||||
barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome))
|
||||
fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --home=%s", gaiacliHome))
|
||||
barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --home=%s", gaiacliHome))
|
||||
consPubKey := sdk.MustBech32ifyConsPub(ed25519.GenPrivKey().PubKey())
|
||||
|
||||
executeWrite(t, fmt.Sprintf("gaiacli tx send %v --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass)
|
||||
@ -264,11 +264,11 @@ func TestGaiaCLICreateValidator(t *testing.T) {
|
||||
barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", barAddr, flags))
|
||||
require.Equal(t, int64(8), barAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64(), "%v", barAcc)
|
||||
|
||||
validator := executeGetValidator(t, fmt.Sprintf("gaiacli query stake validator %s --output=json %v", sdk.ValAddress(barAddr), flags))
|
||||
validator := executeGetValidator(t, fmt.Sprintf("gaiacli query stake validator %s %v", sdk.ValAddress(barAddr), flags))
|
||||
require.Equal(t, validator.OperatorAddr, sdk.ValAddress(barAddr))
|
||||
require.True(sdk.DecEq(t, sdk.NewDec(2), validator.Tokens))
|
||||
|
||||
validatorDelegations := executeGetValidatorDelegations(t, fmt.Sprintf("gaiacli query stake delegations-to %s --output=json %v", sdk.ValAddress(barAddr), flags))
|
||||
validatorDelegations := executeGetValidatorDelegations(t, fmt.Sprintf("gaiacli query stake delegations-to %s %v", sdk.ValAddress(barAddr), flags))
|
||||
require.Len(t, validatorDelegations, 1)
|
||||
require.NotZero(t, validatorDelegations[0].Shares)
|
||||
|
||||
@ -286,19 +286,18 @@ func TestGaiaCLICreateValidator(t *testing.T) {
|
||||
barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %v %v", barCech, flags))
|
||||
require.Equal(t, int64(9), barAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64(), "%v", barAcc)
|
||||
*/
|
||||
validator = executeGetValidator(t, fmt.Sprintf("gaiacli query stake validator %s --output=json %v", sdk.ValAddress(barAddr), flags))
|
||||
validator = executeGetValidator(t, fmt.Sprintf("gaiacli query stake validator %s %v", sdk.ValAddress(barAddr), flags))
|
||||
require.Equal(t, "1.0000000000", validator.Tokens.String())
|
||||
|
||||
validatorUbds := executeGetValidatorUnbondingDelegations(t,
|
||||
fmt.Sprintf("gaiacli query stake unbonding-delegations-from %s --output=json %v",
|
||||
sdk.ValAddress(barAddr), flags))
|
||||
fmt.Sprintf("gaiacli query stake unbonding-delegations-from %s %v", sdk.ValAddress(barAddr), flags))
|
||||
require.Len(t, validatorUbds, 1)
|
||||
require.Equal(t, "1", validatorUbds[0].Balance.Amount.String())
|
||||
|
||||
params := executeGetParams(t, fmt.Sprintf("gaiacli query stake parameters --output=json %v", flags))
|
||||
params := executeGetParams(t, fmt.Sprintf("gaiacli query stake parameters %v", flags))
|
||||
require.True(t, defaultParams.Equal(params))
|
||||
|
||||
pool := executeGetPool(t, fmt.Sprintf("gaiacli query stake pool --output=json %v", flags))
|
||||
pool := executeGetPool(t, fmt.Sprintf("gaiacli query stake pool %v", flags))
|
||||
require.Equal(t, initialPool.BondedTokens, pool.BondedTokens)
|
||||
cleanupDirs(gaiadHome, gaiacliHome)
|
||||
}
|
||||
@ -319,7 +318,7 @@ func TestGaiaCLISubmitProposal(t *testing.T) {
|
||||
executeGetVotingParam(t, fmt.Sprintf("gaiacli query gov param voting %v", flags))
|
||||
executeGetTallyingParam(t, fmt.Sprintf("gaiacli query gov param tallying %v", flags))
|
||||
|
||||
fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome))
|
||||
fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --home=%s", gaiacliHome))
|
||||
|
||||
fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
|
||||
require.Equal(t, int64(50), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
|
||||
@ -358,7 +357,7 @@ func TestGaiaCLISubmitProposal(t *testing.T) {
|
||||
fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
|
||||
require.Equal(t, int64(45), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
|
||||
|
||||
proposal1 := executeGetProposal(t, fmt.Sprintf("gaiacli query gov proposal 1 --output=json %v", flags))
|
||||
proposal1 := executeGetProposal(t, fmt.Sprintf("gaiacli query gov proposal 1 %v", flags))
|
||||
require.Equal(t, uint64(1), proposal1.GetProposalID())
|
||||
require.Equal(t, gov.StatusDepositPeriod, proposal1.GetStatus())
|
||||
|
||||
@ -366,8 +365,7 @@ func TestGaiaCLISubmitProposal(t *testing.T) {
|
||||
require.Equal(t, " 1 - Test", proposalsQuery)
|
||||
|
||||
deposit := executeGetDeposit(t,
|
||||
fmt.Sprintf("gaiacli query gov deposit 1 %s --output=json %v",
|
||||
fooAddr, flags))
|
||||
fmt.Sprintf("gaiacli query gov deposit 1 %s %v", fooAddr, flags))
|
||||
require.Equal(t, int64(5), deposit.Amount.AmountOf(stakeTypes.DefaultBondDenom).Int64())
|
||||
|
||||
depositStr := fmt.Sprintf("gaiacli tx gov deposit 1 %s %v", fmt.Sprintf("10%s", stakeTypes.DefaultBondDenom), flags)
|
||||
@ -387,14 +385,12 @@ func TestGaiaCLISubmitProposal(t *testing.T) {
|
||||
tests.WaitForNextNBlocksTM(1, port)
|
||||
|
||||
// test query deposit
|
||||
deposits := executeGetDeposits(t,
|
||||
fmt.Sprintf("gaiacli query gov deposits 1 --output=json %v", flags))
|
||||
deposits := executeGetDeposits(t, fmt.Sprintf("gaiacli query gov deposits 1 %v", flags))
|
||||
require.Len(t, deposits, 1)
|
||||
require.Equal(t, int64(15), deposits[0].Amount.AmountOf(stakeTypes.DefaultBondDenom).Int64())
|
||||
|
||||
deposit = executeGetDeposit(t,
|
||||
fmt.Sprintf("gaiacli query gov deposit 1 %s --output=json %v",
|
||||
fooAddr, flags))
|
||||
fmt.Sprintf("gaiacli query gov deposit 1 %s %v", fooAddr, flags))
|
||||
require.Equal(t, int64(15), deposit.Amount.AmountOf(stakeTypes.DefaultBondDenom).Int64())
|
||||
|
||||
txs = executeGetTxs(t, fmt.Sprintf("gaiacli query txs --tags=action:deposit&depositor:%s %v", fooAddr, flags))
|
||||
@ -403,7 +399,7 @@ func TestGaiaCLISubmitProposal(t *testing.T) {
|
||||
fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
|
||||
|
||||
require.Equal(t, int64(35), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
|
||||
proposal1 = executeGetProposal(t, fmt.Sprintf("gaiacli query gov proposal 1 --output=json %v", flags))
|
||||
proposal1 = executeGetProposal(t, fmt.Sprintf("gaiacli query gov proposal 1 %v", flags))
|
||||
require.Equal(t, uint64(1), proposal1.GetProposalID())
|
||||
require.Equal(t, gov.StatusVotingPeriod, proposal1.GetStatus())
|
||||
|
||||
@ -423,11 +419,11 @@ func TestGaiaCLISubmitProposal(t *testing.T) {
|
||||
executeWrite(t, voteStr, app.DefaultKeyPass)
|
||||
tests.WaitForNextNBlocksTM(1, port)
|
||||
|
||||
vote := executeGetVote(t, fmt.Sprintf("gaiacli query gov vote 1 %s --output=json %v", fooAddr, flags))
|
||||
vote := executeGetVote(t, fmt.Sprintf("gaiacli query gov vote 1 %s %v", fooAddr, flags))
|
||||
require.Equal(t, uint64(1), vote.ProposalID)
|
||||
require.Equal(t, gov.OptionYes, vote.Option)
|
||||
|
||||
votes := executeGetVotes(t, fmt.Sprintf("gaiacli query gov votes 1 --output=json %v", flags))
|
||||
votes := executeGetVotes(t, fmt.Sprintf("gaiacli query gov votes 1 %v", flags))
|
||||
require.Len(t, votes, 1)
|
||||
require.Equal(t, uint64(1), votes[0].ProposalID)
|
||||
require.Equal(t, gov.OptionYes, votes[0].Option)
|
||||
@ -469,8 +465,8 @@ func TestGaiaCLISendGenerateSignAndBroadcast(t *testing.T) {
|
||||
tests.WaitForTMStart(port)
|
||||
tests.WaitForNextNBlocksTM(1, port)
|
||||
|
||||
fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome))
|
||||
barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome))
|
||||
fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --home=%s", gaiacliHome))
|
||||
barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --home=%s", gaiacliHome))
|
||||
|
||||
// Test generate sendTx with default gas
|
||||
success, stdout, stderr := executeWriteRetStdStreams(t, fmt.Sprintf(
|
||||
@ -563,36 +559,19 @@ func TestGaiaCLIConfig(t *testing.T) {
|
||||
t.Parallel()
|
||||
chainID, servAddr, port, gaiadHome, gaiacliHome, _ := initializeFixtures(t)
|
||||
node := fmt.Sprintf("%s:%s", servAddr, port)
|
||||
executeWrite(t, fmt.Sprintf("gaiacli --home=%s config", gaiadHome), gaiacliHome, node, "y")
|
||||
executeWrite(t, fmt.Sprintf(`gaiacli --home=%s config node %s`, gaiacliHome, node))
|
||||
executeWrite(t, fmt.Sprintf(`gaiacli --home=%s config output text`, gaiacliHome))
|
||||
executeWrite(t, fmt.Sprintf(`gaiacli --home=%s config trust_node true`, gaiacliHome))
|
||||
executeWrite(t, fmt.Sprintf(`gaiacli --home=%s config chain_id %s`, gaiacliHome, chainID))
|
||||
executeWrite(t, fmt.Sprintf(`gaiacli --home=%s config trace false`, gaiacliHome))
|
||||
config, err := ioutil.ReadFile(path.Join(gaiacliHome, "config", "config.toml"))
|
||||
require.NoError(t, err)
|
||||
expectedConfig := fmt.Sprintf(`chain_id = "%s"
|
||||
home = "%s"
|
||||
node = "%s"
|
||||
output = "text"
|
||||
trace = false
|
||||
trust_node = true
|
||||
`, chainID, gaiacliHome, node)
|
||||
require.Equal(t, expectedConfig, string(config))
|
||||
// ensure a backup gets created
|
||||
executeWrite(t, "gaiacli config", gaiacliHome, node, "y", "y")
|
||||
configBackup, err := ioutil.ReadFile(path.Join(gaiacliHome, "config", "config.toml-old"))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, expectedConfig, string(configBackup))
|
||||
|
||||
require.NoError(t, os.RemoveAll(gaiadHome))
|
||||
executeWrite(t, "gaiacli config", gaiacliHome, node, "y")
|
||||
|
||||
// ensure it works without an initialized gaiad state
|
||||
expectedConfig = fmt.Sprintf(`chain_id = ""
|
||||
home = "%s"
|
||||
node = "%s"
|
||||
output = "text"
|
||||
trace = false
|
||||
trust_node = true
|
||||
`, gaiacliHome, node)
|
||||
config, err = ioutil.ReadFile(path.Join(gaiacliHome, "config", "config.toml"))
|
||||
require.NoError(t, err)
|
||||
`, chainID, node)
|
||||
require.Equal(t, expectedConfig, string(config))
|
||||
cleanupDirs(gaiadHome, gaiacliHome)
|
||||
}
|
||||
@ -615,7 +594,8 @@ func initializeFixtures(t *testing.T) (chainID, servAddr, port, gaiadHome, gaiac
|
||||
executeWrite(t, fmt.Sprintf("gaiacli keys delete --home=%s bar", gaiacliHome), app.DefaultKeyPass)
|
||||
executeWriteCheckErr(t, fmt.Sprintf("gaiacli keys add --home=%s foo", gaiacliHome), app.DefaultKeyPass)
|
||||
executeWriteCheckErr(t, fmt.Sprintf("gaiacli keys add --home=%s bar", gaiacliHome), app.DefaultKeyPass)
|
||||
fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome))
|
||||
executeWriteCheckErr(t, fmt.Sprintf("gaiacli config --home=%s output json", gaiacliHome))
|
||||
fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --home=%s", gaiacliHome))
|
||||
chainID = executeInit(t, fmt.Sprintf("gaiad init -o --moniker=foo --home=%s", gaiadHome))
|
||||
|
||||
executeWriteCheckErr(t, fmt.Sprintf(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user