Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F13115826
D9947.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
D9947.diff
View Options
diff --git a/test/functional/interface_bitcoin_cli.py b/test/functional/interface_bitcoin_cli.py
--- a/test/functional/interface_bitcoin_cli.py
+++ b/test/functional/interface_bitcoin_cli.py
@@ -3,6 +3,7 @@
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Test bitcoin-cli"""
+
from decimal import Decimal
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import (
@@ -17,6 +18,10 @@
BLOCKS = 101
BALANCE = (BLOCKS - 100) * 50000000
+JSON_PARSING_ERROR = 'error: Error parsing JSON:foo'
+BLOCKS_VALUE_OF_ZERO = 'error: the first argument (number of blocks to generate, default: 1) must be an integer value greater than zero'
+TOO_MANY_ARGS = 'error: too many arguments (maximum 2 for nblocks and maxtries)'
+
class TestBitcoinCli(BitcoinTestFramework):
def set_test_params(self):
@@ -95,7 +100,8 @@
assert_equal(cli_get_info['relayfee'], network_info['relayfee'])
assert_equal(self.nodes[0].cli.getwalletinfo(), wallet_info)
- # Setup to test -getinfo and -rpcwallet= with multiple wallets.
+ # Setup to test -getinfo, -generate, and -rpcwallet= with multiple
+ # wallets.
wallets = ['', 'Encrypted', 'secret']
amounts = [
BALANCE + Decimal('9999995.50'),
@@ -173,11 +179,46 @@
'-getinfo', '-rpcwallet={}'.format(wallets[2])).send_cli()
assert 'balance' not in cli_get_info_keys
assert 'balances' not in cli_get_info_keys
+
+ # Test bitcoin-cli -generate.
+ n1 = 3
+ n2 = 5
+ w2.walletpassphrase(password, self.rpc_timeout)
+ blocks = self.nodes[0].getblockcount()
+
+ self.log.info('Test -generate with no args')
+ generate = self.nodes[0].cli('-generate').send_cli()
+ assert_equal(set(generate.keys()), {'address', 'blocks'})
+ assert_equal(len(generate["blocks"]), 1)
+ assert_equal(self.nodes[0].getblockcount(), blocks + 1)
+
+ self.log.info('Test -generate with bad args')
+ assert_raises_process_error(
+ 1, JSON_PARSING_ERROR, self.nodes[0].cli(
+ '-generate', 'foo').echo)
+ assert_raises_process_error(
+ 1, BLOCKS_VALUE_OF_ZERO, self.nodes[0].cli(
+ '-generate', 0).echo)
+ assert_raises_process_error(
+ 1, TOO_MANY_ARGS, self.nodes[0].cli(
+ '-generate', 1, 2, 3).echo)
+
+ self.log.info('Test -generate with nblocks')
+ generate = self.nodes[0].cli('-generate', n1).send_cli()
+ assert_equal(set(generate.keys()), {'address', 'blocks'})
+ assert_equal(len(generate["blocks"]), n1)
+ assert_equal(self.nodes[0].getblockcount(), blocks + 1 + n1)
+
+ self.log.info('Test -generate with nblocks and maxtries')
+ generate = self.nodes[0].cli('-generate', n2, 1000000).send_cli()
+ assert_equal(set(generate.keys()), {'address', 'blocks'})
+ assert_equal(len(generate["blocks"]), n2)
+ assert_equal(self.nodes[0].getblockcount(), blocks + 1 + n1 + n2)
else:
self.log.info(
"*** Wallet not compiled; cli getwalletinfo and -getinfo wallet tests skipped")
# maintain block parity with the wallet_compiled conditional branch
- self.nodes[0].generate(1)
+ self.nodes[0].generate(10)
self.log.info("Test -version with node stopped")
self.stop_node(0)
@@ -193,7 +234,7 @@
self.nodes[0].wait_for_cookie_credentials()
blocks = self.nodes[0].cli('-rpcwait').send_cli('getblockcount')
self.nodes[0].wait_for_rpc_connection()
- assert_equal(blocks, BLOCKS + 1)
+ assert_equal(blocks, BLOCKS + 10)
if __name__ == '__main__':
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Mar 1, 12:11 (7 m, 24 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5187803
Default Alt Text
D9947.diff (3 KB)
Attached To
D9947: test: add tests for bitcoin-cli -generate
Event Timeline
Log In to Comment