scripted-diff: test: Remove brackets after assert

-BEGIN VERIFY SCRIPT-
sed -i --regexp-extended -e 's/assert ?\((.+)\)(( )*)?(#.*)?$/assert \1\3\3\4/g' $(git grep -l --extended-regexp 'assert ?\(' test)
-END VERIFY SCRIPT-
This commit is contained in:
MarcoFalke 2019-02-19 17:43:44 -05:00
parent fab5a1e0f4
commit fa0e65b772
No known key found for this signature in database
GPG key ID: CE2B75697E69A548
41 changed files with 273 additions and 273 deletions

View file

@ -63,7 +63,7 @@ class BIP68Test(BitcoinTestFramework):
self.nodes[0].sendtoaddress(new_addr, 2) # send 2 BTC self.nodes[0].sendtoaddress(new_addr, 2) # send 2 BTC
utxos = self.nodes[0].listunspent(0, 0) utxos = self.nodes[0].listunspent(0, 0)
assert(len(utxos) > 0) assert len(utxos) > 0
utxo = utxos[0] utxo = utxos[0]
@ -253,7 +253,7 @@ class BIP68Test(BitcoinTestFramework):
self.nodes[0].generate(1) self.nodes[0].generate(1)
cur_time += 600 cur_time += 600
assert(tx2.hash in self.nodes[0].getrawmempool()) assert tx2.hash in self.nodes[0].getrawmempool()
test_nonzero_locks(tx2, self.nodes[0], self.relayfee, use_height_lock=True) test_nonzero_locks(tx2, self.nodes[0], self.relayfee, use_height_lock=True)
test_nonzero_locks(tx2, self.nodes[0], self.relayfee, use_height_lock=False) test_nonzero_locks(tx2, self.nodes[0], self.relayfee, use_height_lock=False)
@ -264,23 +264,23 @@ class BIP68Test(BitcoinTestFramework):
# Advance the time on the node so that we can test timelocks # Advance the time on the node so that we can test timelocks
self.nodes[0].setmocktime(cur_time+600) self.nodes[0].setmocktime(cur_time+600)
self.nodes[0].generate(1) self.nodes[0].generate(1)
assert(tx2.hash not in self.nodes[0].getrawmempool()) assert tx2.hash not in self.nodes[0].getrawmempool()
# Now that tx2 is not in the mempool, a sequence locked spend should # Now that tx2 is not in the mempool, a sequence locked spend should
# succeed # succeed
tx3 = test_nonzero_locks(tx2, self.nodes[0], self.relayfee, use_height_lock=False) tx3 = test_nonzero_locks(tx2, self.nodes[0], self.relayfee, use_height_lock=False)
assert(tx3.hash in self.nodes[0].getrawmempool()) assert tx3.hash in self.nodes[0].getrawmempool()
self.nodes[0].generate(1) self.nodes[0].generate(1)
assert(tx3.hash not in self.nodes[0].getrawmempool()) assert tx3.hash not in self.nodes[0].getrawmempool()
# One more test, this time using height locks # One more test, this time using height locks
tx4 = test_nonzero_locks(tx3, self.nodes[0], self.relayfee, use_height_lock=True) tx4 = test_nonzero_locks(tx3, self.nodes[0], self.relayfee, use_height_lock=True)
assert(tx4.hash in self.nodes[0].getrawmempool()) assert tx4.hash in self.nodes[0].getrawmempool()
# Now try combining confirmed and unconfirmed inputs # Now try combining confirmed and unconfirmed inputs
tx5 = test_nonzero_locks(tx4, self.nodes[0], self.relayfee, use_height_lock=True) tx5 = test_nonzero_locks(tx4, self.nodes[0], self.relayfee, use_height_lock=True)
assert(tx5.hash not in self.nodes[0].getrawmempool()) assert tx5.hash not in self.nodes[0].getrawmempool()
utxos = self.nodes[0].listunspent() utxos = self.nodes[0].listunspent()
tx5.vin.append(CTxIn(COutPoint(int(utxos[0]["txid"], 16), utxos[0]["vout"]), nSequence=1)) tx5.vin.append(CTxIn(COutPoint(int(utxos[0]["txid"], 16), utxos[0]["vout"]), nSequence=1))
@ -299,8 +299,8 @@ class BIP68Test(BitcoinTestFramework):
# If we invalidate the tip, tx3 should get added to the mempool, causing # If we invalidate the tip, tx3 should get added to the mempool, causing
# tx4 to be removed (fails sequence-lock). # tx4 to be removed (fails sequence-lock).
self.nodes[0].invalidateblock(self.nodes[0].getbestblockhash()) self.nodes[0].invalidateblock(self.nodes[0].getbestblockhash())
assert(tx4.hash not in self.nodes[0].getrawmempool()) assert tx4.hash not in self.nodes[0].getrawmempool()
assert(tx3.hash in self.nodes[0].getrawmempool()) assert tx3.hash in self.nodes[0].getrawmempool()
# Now mine 2 empty blocks to reorg out the current tip (labeled tip-1 in # Now mine 2 empty blocks to reorg out the current tip (labeled tip-1 in
# diagram above). # diagram above).
@ -319,8 +319,8 @@ class BIP68Test(BitcoinTestFramework):
cur_time += 1 cur_time += 1
mempool = self.nodes[0].getrawmempool() mempool = self.nodes[0].getrawmempool()
assert(tx3.hash not in mempool) assert tx3.hash not in mempool
assert(tx2.hash in mempool) assert tx2.hash in mempool
# Reset the chain and get rid of the mocktimed-blocks # Reset the chain and get rid of the mocktimed-blocks
self.nodes[0].setmocktime(0) self.nodes[0].setmocktime(0)
@ -332,7 +332,7 @@ class BIP68Test(BitcoinTestFramework):
# being run, then it's possible the test has activated the soft fork, and # being run, then it's possible the test has activated the soft fork, and
# this test should be moved to run earlier, or deleted. # this test should be moved to run earlier, or deleted.
def test_bip68_not_consensus(self): def test_bip68_not_consensus(self):
assert(get_bip9_status(self.nodes[0], 'csv')['status'] != 'active') assert get_bip9_status(self.nodes[0], 'csv')['status'] != 'active'
txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 2) txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 2)
tx1 = FromHex(CTransaction(), self.nodes[0].getrawtransaction(txid)) tx1 = FromHex(CTransaction(), self.nodes[0].getrawtransaction(txid))

View file

@ -773,7 +773,7 @@ class FullBlockTest(BitcoinTestFramework):
self.move_tip(57) self.move_tip(57)
b58 = self.next_block(58, spend=out[17]) b58 = self.next_block(58, spend=out[17])
tx = CTransaction() tx = CTransaction()
assert(len(out[17].vout) < 42) assert len(out[17].vout) < 42
tx.vin.append(CTxIn(COutPoint(out[17].sha256, 42), CScript([OP_TRUE]), 0xffffffff)) tx.vin.append(CTxIn(COutPoint(out[17].sha256, 42), CScript([OP_TRUE]), 0xffffffff))
tx.vout.append(CTxOut(0, b"")) tx.vout.append(CTxOut(0, b""))
tx.calc_sha256() tx.calc_sha256()
@ -824,7 +824,7 @@ class FullBlockTest(BitcoinTestFramework):
tx.nLockTime = 0xffffffff # this locktime is non-final tx.nLockTime = 0xffffffff # this locktime is non-final
tx.vin.append(CTxIn(COutPoint(out[18].sha256, 0))) # don't set nSequence tx.vin.append(CTxIn(COutPoint(out[18].sha256, 0))) # don't set nSequence
tx.vout.append(CTxOut(0, CScript([OP_TRUE]))) tx.vout.append(CTxOut(0, CScript([OP_TRUE])))
assert(tx.vin[0].nSequence < 0xffffffff) assert tx.vin[0].nSequence < 0xffffffff
tx.calc_sha256() tx.calc_sha256()
b62 = self.update_block(62, [tx]) b62 = self.update_block(62, [tx])
self.sync_blocks([b62], success=False, reject_reason='bad-txns-nonfinal') self.sync_blocks([b62], success=False, reject_reason='bad-txns-nonfinal')
@ -1143,8 +1143,8 @@ class FullBlockTest(BitcoinTestFramework):
# now check that tx78 and tx79 have been put back into the peer's mempool # now check that tx78 and tx79 have been put back into the peer's mempool
mempool = self.nodes[0].getrawmempool() mempool = self.nodes[0].getrawmempool()
assert_equal(len(mempool), 2) assert_equal(len(mempool), 2)
assert(tx78.hash in mempool) assert tx78.hash in mempool
assert(tx79.hash in mempool) assert tx79.hash in mempool
# Test invalid opcodes in dead execution paths. # Test invalid opcodes in dead execution paths.
# #

View file

@ -106,7 +106,7 @@ def send_generic_input_tx(node, coinbases, address):
def create_bip68txs(node, bip68inputs, txversion, address, locktime_delta=0): def create_bip68txs(node, bip68inputs, txversion, address, locktime_delta=0):
"""Returns a list of bip68 transactions with different bits set.""" """Returns a list of bip68 transactions with different bits set."""
txs = [] txs = []
assert(len(bip68inputs) >= 16) assert len(bip68inputs) >= 16
for i, (sdf, srhb, stf, srlb) in enumerate(product(*[[True, False]] * 4)): for i, (sdf, srhb, stf, srlb) in enumerate(product(*[[True, False]] * 4)):
locktime = relative_locktime(sdf, srhb, stf, srlb) locktime = relative_locktime(sdf, srhb, stf, srlb)
tx = create_transaction(node, bip68inputs[i], address, amount=Decimal("49.98")) tx = create_transaction(node, bip68inputs[i], address, amount=Decimal("49.98"))
@ -121,7 +121,7 @@ def create_bip68txs(node, bip68inputs, txversion, address, locktime_delta=0):
def create_bip112txs(node, bip112inputs, varyOP_CSV, txversion, address, locktime_delta=0): def create_bip112txs(node, bip112inputs, varyOP_CSV, txversion, address, locktime_delta=0):
"""Returns a list of bip68 transactions with different bits set.""" """Returns a list of bip68 transactions with different bits set."""
txs = [] txs = []
assert(len(bip112inputs) >= 16) assert len(bip112inputs) >= 16
for i, (sdf, srhb, stf, srlb) in enumerate(product(*[[True, False]] * 4)): for i, (sdf, srhb, stf, srlb) in enumerate(product(*[[True, False]] * 4)):
locktime = relative_locktime(sdf, srhb, stf, srlb) locktime = relative_locktime(sdf, srhb, stf, srlb)
tx = create_transaction(node, bip112inputs[i], address, amount=Decimal("49.98")) tx = create_transaction(node, bip112inputs[i], address, amount=Decimal("49.98"))

View file

@ -27,7 +27,7 @@ def trueDummy(tx):
newscript = [] newscript = []
for i in scriptSig: for i in scriptSig:
if (len(newscript) == 0): if (len(newscript) == 0):
assert(len(i) == 0) assert len(i) == 0
newscript.append(b'\x51') newscript.append(b'\x51')
else: else:
newscript.append(i) newscript.append(i)

View file

@ -95,7 +95,7 @@ class ProxyTest(BitcoinTestFramework):
# Test: outgoing IPv4 connection through node # Test: outgoing IPv4 connection through node
node.addnode("15.61.23.23:1234", "onetry") node.addnode("15.61.23.23:1234", "onetry")
cmd = proxies[0].queue.get() cmd = proxies[0].queue.get()
assert(isinstance(cmd, Socks5Command)) assert isinstance(cmd, Socks5Command)
# Note: bitcoind's SOCKS5 implementation only sends atyp DOMAINNAME, even if connecting directly to IPv4/IPv6 # Note: bitcoind's SOCKS5 implementation only sends atyp DOMAINNAME, even if connecting directly to IPv4/IPv6
assert_equal(cmd.atyp, AddressType.DOMAINNAME) assert_equal(cmd.atyp, AddressType.DOMAINNAME)
assert_equal(cmd.addr, b"15.61.23.23") assert_equal(cmd.addr, b"15.61.23.23")
@ -109,7 +109,7 @@ class ProxyTest(BitcoinTestFramework):
# Test: outgoing IPv6 connection through node # Test: outgoing IPv6 connection through node
node.addnode("[1233:3432:2434:2343:3234:2345:6546:4534]:5443", "onetry") node.addnode("[1233:3432:2434:2343:3234:2345:6546:4534]:5443", "onetry")
cmd = proxies[1].queue.get() cmd = proxies[1].queue.get()
assert(isinstance(cmd, Socks5Command)) assert isinstance(cmd, Socks5Command)
# Note: bitcoind's SOCKS5 implementation only sends atyp DOMAINNAME, even if connecting directly to IPv4/IPv6 # Note: bitcoind's SOCKS5 implementation only sends atyp DOMAINNAME, even if connecting directly to IPv4/IPv6
assert_equal(cmd.atyp, AddressType.DOMAINNAME) assert_equal(cmd.atyp, AddressType.DOMAINNAME)
assert_equal(cmd.addr, b"1233:3432:2434:2343:3234:2345:6546:4534") assert_equal(cmd.addr, b"1233:3432:2434:2343:3234:2345:6546:4534")
@ -123,7 +123,7 @@ class ProxyTest(BitcoinTestFramework):
# Test: outgoing onion connection through node # Test: outgoing onion connection through node
node.addnode("bitcoinostk4e4re.onion:8333", "onetry") node.addnode("bitcoinostk4e4re.onion:8333", "onetry")
cmd = proxies[2].queue.get() cmd = proxies[2].queue.get()
assert(isinstance(cmd, Socks5Command)) assert isinstance(cmd, Socks5Command)
assert_equal(cmd.atyp, AddressType.DOMAINNAME) assert_equal(cmd.atyp, AddressType.DOMAINNAME)
assert_equal(cmd.addr, b"bitcoinostk4e4re.onion") assert_equal(cmd.addr, b"bitcoinostk4e4re.onion")
assert_equal(cmd.port, 8333) assert_equal(cmd.port, 8333)
@ -135,7 +135,7 @@ class ProxyTest(BitcoinTestFramework):
# Test: outgoing DNS name connection through node # Test: outgoing DNS name connection through node
node.addnode("node.noumenon:8333", "onetry") node.addnode("node.noumenon:8333", "onetry")
cmd = proxies[3].queue.get() cmd = proxies[3].queue.get()
assert(isinstance(cmd, Socks5Command)) assert isinstance(cmd, Socks5Command)
assert_equal(cmd.atyp, AddressType.DOMAINNAME) assert_equal(cmd.atyp, AddressType.DOMAINNAME)
assert_equal(cmd.addr, b"node.noumenon") assert_equal(cmd.addr, b"node.noumenon")
assert_equal(cmd.port, 8333) assert_equal(cmd.port, 8333)

View file

@ -151,7 +151,7 @@ class PruneTest(BitcoinTestFramework):
self.nodes[1].invalidateblock(curhash) self.nodes[1].invalidateblock(curhash)
curhash = self.nodes[1].getblockhash(invalidheight - 1) curhash = self.nodes[1].getblockhash(invalidheight - 1)
assert(self.nodes[1].getblockcount() == invalidheight - 1) assert self.nodes[1].getblockcount() == invalidheight - 1
self.log.info("New best height: %d" % self.nodes[1].getblockcount()) self.log.info("New best height: %d" % self.nodes[1].getblockcount())
# Reboot node1 to clear those giant tx's from mempool # Reboot node1 to clear those giant tx's from mempool
@ -219,17 +219,17 @@ class PruneTest(BitcoinTestFramework):
blocks_to_mine = first_reorg_height + 1 - self.mainchainheight blocks_to_mine = first_reorg_height + 1 - self.mainchainheight
self.log.info("Rewind node 0 to prev main chain to mine longer chain to trigger redownload. Blocks needed: %d" % blocks_to_mine) self.log.info("Rewind node 0 to prev main chain to mine longer chain to trigger redownload. Blocks needed: %d" % blocks_to_mine)
self.nodes[0].invalidateblock(curchainhash) self.nodes[0].invalidateblock(curchainhash)
assert(self.nodes[0].getblockcount() == self.mainchainheight) assert self.nodes[0].getblockcount() == self.mainchainheight
assert(self.nodes[0].getbestblockhash() == self.mainchainhash2) assert self.nodes[0].getbestblockhash() == self.mainchainhash2
goalbesthash = self.nodes[0].generate(blocks_to_mine)[-1] goalbesthash = self.nodes[0].generate(blocks_to_mine)[-1]
goalbestheight = first_reorg_height + 1 goalbestheight = first_reorg_height + 1
self.log.info("Verify node 2 reorged back to the main chain, some blocks of which it had to redownload") self.log.info("Verify node 2 reorged back to the main chain, some blocks of which it had to redownload")
# Wait for Node 2 to reorg to proper height # Wait for Node 2 to reorg to proper height
wait_until(lambda: self.nodes[2].getblockcount() >= goalbestheight, timeout=900) wait_until(lambda: self.nodes[2].getblockcount() >= goalbestheight, timeout=900)
assert(self.nodes[2].getbestblockhash() == goalbesthash) assert self.nodes[2].getbestblockhash() == goalbesthash
# Verify we can now have the data for a block previously pruned # Verify we can now have the data for a block previously pruned
assert(self.nodes[2].getblock(self.forkhash)["height"] == self.forkheight) assert self.nodes[2].getblock(self.forkhash)["height"] == self.forkheight
def manual_test(self, node_number, use_timestamp): def manual_test(self, node_number, use_timestamp):
# at this point, node has 995 blocks and has not yet run in prune mode # at this point, node has 995 blocks and has not yet run in prune mode

View file

@ -56,7 +56,7 @@ def make_utxo(node, amount, confirmed=True, scriptPubKey=CScript([1])):
new_size = len(node.getrawmempool()) new_size = len(node.getrawmempool())
# Error out if we have something stuck in the mempool, as this # Error out if we have something stuck in the mempool, as this
# would likely be a bug. # would likely be a bug.
assert(new_size < mempool_size) assert new_size < mempool_size
mempool_size = new_size mempool_size = new_size
return COutPoint(int(txid, 16), 0) return COutPoint(int(txid, 16), 0)
@ -163,8 +163,8 @@ class ReplaceByFeeTest(BitcoinTestFramework):
mempool = self.nodes[0].getrawmempool() mempool = self.nodes[0].getrawmempool()
assert (tx1a_txid not in mempool) assert tx1a_txid not in mempool
assert (tx1b_txid in mempool) assert tx1b_txid in mempool
assert_equal(tx1b_hex, self.nodes[0].getrawtransaction(tx1b_txid)) assert_equal(tx1b_hex, self.nodes[0].getrawtransaction(tx1b_txid))
@ -211,7 +211,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
mempool = self.nodes[0].getrawmempool() mempool = self.nodes[0].getrawmempool()
for doublespent_txid in chain_txids: for doublespent_txid in chain_txids:
assert(doublespent_txid not in mempool) assert doublespent_txid not in mempool
def test_doublespend_tree(self): def test_doublespend_tree(self):
"""Doublespend of a big tree of transactions""" """Doublespend of a big tree of transactions"""
@ -236,7 +236,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
tx.vout = vout tx.vout = vout
tx_hex = txToHex(tx) tx_hex = txToHex(tx)
assert(len(tx.serialize()) < 100000) assert len(tx.serialize()) < 100000
txid = self.nodes[0].sendrawtransaction(tx_hex, True) txid = self.nodes[0].sendrawtransaction(tx_hex, True)
yield tx yield tx
_total_txs[0] += 1 _total_txs[0] += 1
@ -274,7 +274,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
for tx in tree_txs: for tx in tree_txs:
tx.rehash() tx.rehash()
assert (tx.hash not in mempool) assert tx.hash not in mempool
# Try again, but with more total transactions than the "max txs # Try again, but with more total transactions than the "max txs
# double-spent at once" anti-DoS limit. # double-spent at once" anti-DoS limit.
@ -529,7 +529,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
# Now tx1b should be able to replace tx1a # Now tx1b should be able to replace tx1a
tx1b_txid = self.nodes[0].sendrawtransaction(tx1b_hex, True) tx1b_txid = self.nodes[0].sendrawtransaction(tx1b_hex, True)
assert(tx1b_txid in self.nodes[0].getrawmempool()) assert tx1b_txid in self.nodes[0].getrawmempool()
# 2. Check that absolute fee checks use modified fee. # 2. Check that absolute fee checks use modified fee.
tx1_outpoint = make_utxo(self.nodes[0], int(1.1*COIN)) tx1_outpoint = make_utxo(self.nodes[0], int(1.1*COIN))
@ -556,7 +556,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
# tx2b should now be accepted # tx2b should now be accepted
tx2b_txid = self.nodes[0].sendrawtransaction(tx2b_hex, True) tx2b_txid = self.nodes[0].sendrawtransaction(tx2b_hex, True)
assert(tx2b_txid in self.nodes[0].getrawmempool()) assert tx2b_txid in self.nodes[0].getrawmempool()
def test_rpc(self): def test_rpc(self):
us0 = self.nodes[0].listunspent()[0] us0 = self.nodes[0].listunspent()[0]

View file

@ -93,17 +93,17 @@ class SegWitTest(BitcoinTestFramework):
self.log.info("Verify sigops are counted in GBT with pre-BIP141 rules before the fork") self.log.info("Verify sigops are counted in GBT with pre-BIP141 rules before the fork")
txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 1) txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 1)
tmpl = self.nodes[0].getblocktemplate({'rules': ['segwit']}) tmpl = self.nodes[0].getblocktemplate({'rules': ['segwit']})
assert(tmpl['sizelimit'] == 1000000) assert tmpl['sizelimit'] == 1000000
assert('weightlimit' not in tmpl) assert 'weightlimit' not in tmpl
assert(tmpl['sigoplimit'] == 20000) assert tmpl['sigoplimit'] == 20000
assert(tmpl['transactions'][0]['hash'] == txid) assert tmpl['transactions'][0]['hash'] == txid
assert(tmpl['transactions'][0]['sigops'] == 2) assert tmpl['transactions'][0]['sigops'] == 2
tmpl = self.nodes[0].getblocktemplate({'rules': ['segwit']}) tmpl = self.nodes[0].getblocktemplate({'rules': ['segwit']})
assert(tmpl['sizelimit'] == 1000000) assert tmpl['sizelimit'] == 1000000
assert('weightlimit' not in tmpl) assert 'weightlimit' not in tmpl
assert(tmpl['sigoplimit'] == 20000) assert tmpl['sigoplimit'] == 20000
assert(tmpl['transactions'][0]['hash'] == txid) assert tmpl['transactions'][0]['hash'] == txid
assert(tmpl['transactions'][0]['sigops'] == 2) assert tmpl['transactions'][0]['sigops'] == 2
self.nodes[0].generate(1) # block 162 self.nodes[0].generate(1) # block 162
balance_presetup = self.nodes[0].getbalance() balance_presetup = self.nodes[0].getbalance()
@ -172,16 +172,16 @@ class SegWitTest(BitcoinTestFramework):
self.fail_accept(self.nodes[0], "mandatory-script-verify-flag", p2sh_ids[NODE_0][WIT_V1][0], False, witness_script(True, self.pubkey[0])) self.fail_accept(self.nodes[0], "mandatory-script-verify-flag", p2sh_ids[NODE_0][WIT_V1][0], False, witness_script(True, self.pubkey[0]))
self.log.info("Verify block and transaction serialization rpcs return differing serializations depending on rpc serialization flag") self.log.info("Verify block and transaction serialization rpcs return differing serializations depending on rpc serialization flag")
assert(self.nodes[2].getblock(blockhash, False) != self.nodes[0].getblock(blockhash, False)) assert self.nodes[2].getblock(blockhash, False) != self.nodes[0].getblock(blockhash, False)
assert(self.nodes[1].getblock(blockhash, False) == self.nodes[2].getblock(blockhash, False)) assert self.nodes[1].getblock(blockhash, False) == self.nodes[2].getblock(blockhash, False)
for tx_id in segwit_tx_list: for tx_id in segwit_tx_list:
tx = FromHex(CTransaction(), self.nodes[2].gettransaction(tx_id)["hex"]) tx = FromHex(CTransaction(), self.nodes[2].gettransaction(tx_id)["hex"])
assert(self.nodes[2].getrawtransaction(tx_id, False, blockhash) != self.nodes[0].getrawtransaction(tx_id, False, blockhash)) assert self.nodes[2].getrawtransaction(tx_id, False, blockhash) != self.nodes[0].getrawtransaction(tx_id, False, blockhash)
assert(self.nodes[1].getrawtransaction(tx_id, False, blockhash) == self.nodes[2].getrawtransaction(tx_id, False, blockhash)) assert self.nodes[1].getrawtransaction(tx_id, False, blockhash) == self.nodes[2].getrawtransaction(tx_id, False, blockhash)
assert(self.nodes[0].getrawtransaction(tx_id, False, blockhash) != self.nodes[2].gettransaction(tx_id)["hex"]) assert self.nodes[0].getrawtransaction(tx_id, False, blockhash) != self.nodes[2].gettransaction(tx_id)["hex"]
assert(self.nodes[1].getrawtransaction(tx_id, False, blockhash) == self.nodes[2].gettransaction(tx_id)["hex"]) assert self.nodes[1].getrawtransaction(tx_id, False, blockhash) == self.nodes[2].gettransaction(tx_id)["hex"]
assert(self.nodes[0].getrawtransaction(tx_id, False, blockhash) == tx.serialize_without_witness().hex()) assert self.nodes[0].getrawtransaction(tx_id, False, blockhash) == tx.serialize_without_witness().hex()
self.log.info("Verify witness txs without witness data are invalid after the fork") self.log.info("Verify witness txs without witness data are invalid after the fork")
self.fail_accept(self.nodes[2], 'non-mandatory-script-verify-flag (Witness program hash mismatch) (code 64)', wit_ids[NODE_2][WIT_V0][2], sign=False) self.fail_accept(self.nodes[2], 'non-mandatory-script-verify-flag (Witness program hash mismatch) (code 64)', wit_ids[NODE_2][WIT_V0][2], sign=False)
@ -198,11 +198,11 @@ class SegWitTest(BitcoinTestFramework):
self.log.info("Verify sigops are counted in GBT with BIP141 rules after the fork") self.log.info("Verify sigops are counted in GBT with BIP141 rules after the fork")
txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 1) txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 1)
tmpl = self.nodes[0].getblocktemplate({'rules': ['segwit']}) tmpl = self.nodes[0].getblocktemplate({'rules': ['segwit']})
assert(tmpl['sizelimit'] >= 3999577) # actual maximum size is lower due to minimum mandatory non-witness data assert tmpl['sizelimit'] >= 3999577 # actual maximum size is lower due to minimum mandatory non-witness data
assert(tmpl['weightlimit'] == 4000000) assert tmpl['weightlimit'] == 4000000
assert(tmpl['sigoplimit'] == 80000) assert tmpl['sigoplimit'] == 80000
assert(tmpl['transactions'][0]['txid'] == txid) assert tmpl['transactions'][0]['txid'] == txid
assert(tmpl['transactions'][0]['sigops'] == 8) assert tmpl['transactions'][0]['sigops'] == 8
self.nodes[0].generate(1) # Mine a block to clear the gbt cache self.nodes[0].generate(1) # Mine a block to clear the gbt cache
@ -214,8 +214,8 @@ class SegWitTest(BitcoinTestFramework):
txid1 = send_to_witness(1, self.nodes[0], find_spendable_utxo(self.nodes[0], 50), self.pubkey[0], False, Decimal("49.996")) txid1 = send_to_witness(1, self.nodes[0], find_spendable_utxo(self.nodes[0], 50), self.pubkey[0], False, Decimal("49.996"))
hex_tx = self.nodes[0].gettransaction(txid)['hex'] hex_tx = self.nodes[0].gettransaction(txid)['hex']
tx = FromHex(CTransaction(), hex_tx) tx = FromHex(CTransaction(), hex_tx)
assert(tx.wit.is_null()) # This should not be a segwit input assert tx.wit.is_null() # This should not be a segwit input
assert(txid1 in self.nodes[0].getrawmempool()) assert txid1 in self.nodes[0].getrawmempool()
# Now create tx2, which will spend from txid1. # Now create tx2, which will spend from txid1.
tx = CTransaction() tx = CTransaction()
@ -224,7 +224,7 @@ class SegWitTest(BitcoinTestFramework):
tx2_hex = self.nodes[0].signrawtransactionwithwallet(ToHex(tx))['hex'] tx2_hex = self.nodes[0].signrawtransactionwithwallet(ToHex(tx))['hex']
txid2 = self.nodes[0].sendrawtransaction(tx2_hex) txid2 = self.nodes[0].sendrawtransaction(tx2_hex)
tx = FromHex(CTransaction(), tx2_hex) tx = FromHex(CTransaction(), tx2_hex)
assert(not tx.wit.is_null()) assert not tx.wit.is_null()
# Now create tx3, which will spend from txid2 # Now create tx3, which will spend from txid2
tx = CTransaction() tx = CTransaction()
@ -232,15 +232,15 @@ class SegWitTest(BitcoinTestFramework):
tx.vout.append(CTxOut(int(49.95 * COIN), CScript([OP_TRUE, OP_DROP] * 15 + [OP_TRUE]))) # Huge fee tx.vout.append(CTxOut(int(49.95 * COIN), CScript([OP_TRUE, OP_DROP] * 15 + [OP_TRUE]))) # Huge fee
tx.calc_sha256() tx.calc_sha256()
txid3 = self.nodes[0].sendrawtransaction(ToHex(tx)) txid3 = self.nodes[0].sendrawtransaction(ToHex(tx))
assert(tx.wit.is_null()) assert tx.wit.is_null()
assert(txid3 in self.nodes[0].getrawmempool()) assert txid3 in self.nodes[0].getrawmempool()
# Check that getblocktemplate includes all transactions. # Check that getblocktemplate includes all transactions.
template = self.nodes[0].getblocktemplate({"rules": ["segwit"]}) template = self.nodes[0].getblocktemplate({"rules": ["segwit"]})
template_txids = [t['txid'] for t in template['transactions']] template_txids = [t['txid'] for t in template['transactions']]
assert(txid1 in template_txids) assert txid1 in template_txids
assert(txid2 in template_txids) assert txid2 in template_txids
assert(txid3 in template_txids) assert txid3 in template_txids
# Check that wtxid is properly reported in mempool entry # Check that wtxid is properly reported in mempool entry
assert_equal(int(self.nodes[0].getmempoolentry(txid3)["wtxid"], 16), tx.calc_sha256(True)) assert_equal(int(self.nodes[0].getmempoolentry(txid3)["wtxid"], 16), tx.calc_sha256(True))

View file

@ -74,8 +74,8 @@ class VersionBitsWarningTest(BitcoinTestFramework):
node.generatetoaddress(VB_PERIOD - VB_THRESHOLD + 1, node_deterministic_address) node.generatetoaddress(VB_PERIOD - VB_THRESHOLD + 1, node_deterministic_address)
# Check that we're not getting any versionbit-related errors in get*info() # Check that we're not getting any versionbit-related errors in get*info()
assert(not VB_PATTERN.match(node.getmininginfo()["warnings"])) assert not VB_PATTERN.match(node.getmininginfo()["warnings"])
assert(not VB_PATTERN.match(node.getnetworkinfo()["warnings"])) assert not VB_PATTERN.match(node.getnetworkinfo()["warnings"])
# Build one period of blocks with VB_THRESHOLD blocks signaling some unknown bit # Build one period of blocks with VB_THRESHOLD blocks signaling some unknown bit
self.send_blocks_with_version(node.p2p, VB_THRESHOLD, VB_UNKNOWN_VERSION) self.send_blocks_with_version(node.p2p, VB_THRESHOLD, VB_UNKNOWN_VERSION)
@ -95,8 +95,8 @@ class VersionBitsWarningTest(BitcoinTestFramework):
# Generating one more block will be enough to generate an error. # Generating one more block will be enough to generate an error.
node.generatetoaddress(1, node_deterministic_address) node.generatetoaddress(1, node_deterministic_address)
# Check that get*info() shows the versionbits unknown rules warning # Check that get*info() shows the versionbits unknown rules warning
assert(WARN_UNKNOWN_RULES_ACTIVE in node.getmininginfo()["warnings"]) assert WARN_UNKNOWN_RULES_ACTIVE in node.getmininginfo()["warnings"]
assert(WARN_UNKNOWN_RULES_ACTIVE in node.getnetworkinfo()["warnings"]) assert WARN_UNKNOWN_RULES_ACTIVE in node.getnetworkinfo()["warnings"]
# Check that the alert file shows the versionbits unknown rules warning # Check that the alert file shows the versionbits unknown rules warning
wait_until(lambda: self.versionbits_in_alert_file(), timeout=60) wait_until(lambda: self.versionbits_in_alert_file(), timeout=60)

View file

@ -16,7 +16,7 @@ class TestBitcoinCli(BitcoinTestFramework):
"""Main test logic""" """Main test logic"""
cli_response = self.nodes[0].cli("-version").send_cli() cli_response = self.nodes[0].cli("-version").send_cli()
assert("Bitcoin Core RPC client version" in cli_response) assert "Bitcoin Core RPC client version" in cli_response
self.log.info("Compare responses from getwalletinfo RPC and `bitcoin-cli getwalletinfo`") self.log.info("Compare responses from getwalletinfo RPC and `bitcoin-cli getwalletinfo`")
if self.is_wallet_compiled(): if self.is_wallet_compiled():

View file

@ -30,14 +30,14 @@ class HTTPBasicsTest (BitcoinTestFramework):
conn.connect() conn.connect()
conn.request('POST', '/', '{"method": "getbestblockhash"}', headers) conn.request('POST', '/', '{"method": "getbestblockhash"}', headers)
out1 = conn.getresponse().read() out1 = conn.getresponse().read()
assert(b'"error":null' in out1) assert b'"error":null' in out1
assert(conn.sock is not None) #according to http/1.1 connection must still be open! assert conn.sock is not None #according to http/1.1 connection must still be open!
#send 2nd request without closing connection #send 2nd request without closing connection
conn.request('POST', '/', '{"method": "getchaintips"}', headers) conn.request('POST', '/', '{"method": "getchaintips"}', headers)
out1 = conn.getresponse().read() out1 = conn.getresponse().read()
assert(b'"error":null' in out1) #must also response with a correct json-rpc message assert b'"error":null' in out1 #must also response with a correct json-rpc message
assert(conn.sock is not None) #according to http/1.1 connection must still be open! assert conn.sock is not None #according to http/1.1 connection must still be open!
conn.close() conn.close()
#same should be if we add keep-alive because this should be the std. behaviour #same should be if we add keep-alive because this should be the std. behaviour
@ -47,14 +47,14 @@ class HTTPBasicsTest (BitcoinTestFramework):
conn.connect() conn.connect()
conn.request('POST', '/', '{"method": "getbestblockhash"}', headers) conn.request('POST', '/', '{"method": "getbestblockhash"}', headers)
out1 = conn.getresponse().read() out1 = conn.getresponse().read()
assert(b'"error":null' in out1) assert b'"error":null' in out1
assert(conn.sock is not None) #according to http/1.1 connection must still be open! assert conn.sock is not None #according to http/1.1 connection must still be open!
#send 2nd request without closing connection #send 2nd request without closing connection
conn.request('POST', '/', '{"method": "getchaintips"}', headers) conn.request('POST', '/', '{"method": "getchaintips"}', headers)
out1 = conn.getresponse().read() out1 = conn.getresponse().read()
assert(b'"error":null' in out1) #must also response with a correct json-rpc message assert b'"error":null' in out1 #must also response with a correct json-rpc message
assert(conn.sock is not None) #according to http/1.1 connection must still be open! assert conn.sock is not None #according to http/1.1 connection must still be open!
conn.close() conn.close()
#now do the same with "Connection: close" #now do the same with "Connection: close"
@ -64,8 +64,8 @@ class HTTPBasicsTest (BitcoinTestFramework):
conn.connect() conn.connect()
conn.request('POST', '/', '{"method": "getbestblockhash"}', headers) conn.request('POST', '/', '{"method": "getbestblockhash"}', headers)
out1 = conn.getresponse().read() out1 = conn.getresponse().read()
assert(b'"error":null' in out1) assert b'"error":null' in out1
assert(conn.sock is None) #now the connection must be closed after the response assert conn.sock is None #now the connection must be closed after the response
#node1 (2nd node) is running with disabled keep-alive option #node1 (2nd node) is running with disabled keep-alive option
urlNode1 = urllib.parse.urlparse(self.nodes[1].url) urlNode1 = urllib.parse.urlparse(self.nodes[1].url)
@ -76,7 +76,7 @@ class HTTPBasicsTest (BitcoinTestFramework):
conn.connect() conn.connect()
conn.request('POST', '/', '{"method": "getbestblockhash"}', headers) conn.request('POST', '/', '{"method": "getbestblockhash"}', headers)
out1 = conn.getresponse().read() out1 = conn.getresponse().read()
assert(b'"error":null' in out1) assert b'"error":null' in out1
#node2 (third node) is running with standard keep-alive parameters which means keep-alive is on #node2 (third node) is running with standard keep-alive parameters which means keep-alive is on
urlNode2 = urllib.parse.urlparse(self.nodes[2].url) urlNode2 = urllib.parse.urlparse(self.nodes[2].url)
@ -87,8 +87,8 @@ class HTTPBasicsTest (BitcoinTestFramework):
conn.connect() conn.connect()
conn.request('POST', '/', '{"method": "getbestblockhash"}', headers) conn.request('POST', '/', '{"method": "getbestblockhash"}', headers)
out1 = conn.getresponse().read() out1 = conn.getresponse().read()
assert(b'"error":null' in out1) assert b'"error":null' in out1
assert(conn.sock is not None) #connection must be closed because bitcoind should use keep-alive by default assert conn.sock is not None #connection must be closed because bitcoind should use keep-alive by default
# Check excessive request size # Check excessive request size
conn = http.client.HTTPConnection(urlNode2.hostname, urlNode2.port) conn = http.client.HTTPConnection(urlNode2.hostname, urlNode2.port)

View file

@ -47,9 +47,9 @@ class MempoolLimitTest(BitcoinTestFramework):
txids[i] = create_lots_of_big_transactions(self.nodes[0], txouts, utxos[30*i:30*i+30], 30, (i+1)*base_fee) txids[i] = create_lots_of_big_transactions(self.nodes[0], txouts, utxos[30*i:30*i+30], 30, (i+1)*base_fee)
self.log.info('The tx should be evicted by now') self.log.info('The tx should be evicted by now')
assert(txid not in self.nodes[0].getrawmempool()) assert txid not in self.nodes[0].getrawmempool()
txdata = self.nodes[0].gettransaction(txid) txdata = self.nodes[0].gettransaction(txid)
assert(txdata['confirmations'] == 0) #confirmation should still be 0 assert txdata['confirmations'] == 0 #confirmation should still be 0
self.log.info('Check that mempoolminfee is larger than minrelytxfee') self.log.info('Check that mempoolminfee is larger than minrelytxfee')
assert_equal(self.nodes[0].getmempoolinfo()['minrelaytxfee'], Decimal('0.00001000')) assert_equal(self.nodes[0].getmempoolinfo()['minrelaytxfee'], Decimal('0.00001000'))

View file

@ -33,7 +33,7 @@ class MempoolPackagesTest(BitcoinTestFramework):
signedtx = node.signrawtransactionwithwallet(rawtx) signedtx = node.signrawtransactionwithwallet(rawtx)
txid = node.sendrawtransaction(signedtx['hex']) txid = node.sendrawtransaction(signedtx['hex'])
fulltx = node.getrawtransaction(txid, 1) fulltx = node.getrawtransaction(txid, 1)
assert(len(fulltx['vout']) == num_outputs) # make sure we didn't generate a change output assert len(fulltx['vout']) == num_outputs # make sure we didn't generate a change output
return (txid, send_value) return (txid, send_value)
def run_test(self): def run_test(self):
@ -125,13 +125,13 @@ class MempoolPackagesTest(BitcoinTestFramework):
assert_equal(len(v_ancestors), len(chain)-1) assert_equal(len(v_ancestors), len(chain)-1)
for x in v_ancestors.keys(): for x in v_ancestors.keys():
assert_equal(mempool[x], v_ancestors[x]) assert_equal(mempool[x], v_ancestors[x])
assert(chain[-1] not in v_ancestors.keys()) assert chain[-1] not in v_ancestors.keys()
v_descendants = self.nodes[0].getmempooldescendants(chain[0], True) v_descendants = self.nodes[0].getmempooldescendants(chain[0], True)
assert_equal(len(v_descendants), len(chain)-1) assert_equal(len(v_descendants), len(chain)-1)
for x in v_descendants.keys(): for x in v_descendants.keys():
assert_equal(mempool[x], v_descendants[x]) assert_equal(mempool[x], v_descendants[x])
assert(chain[0] not in v_descendants.keys()) assert chain[0] not in v_descendants.keys()
# Check that ancestor modified fees includes fee deltas from # Check that ancestor modified fees includes fee deltas from
# prioritisetransaction # prioritisetransaction

View file

@ -45,7 +45,7 @@ class MempoolCoinbaseTest(BitcoinTestFramework):
assert_equal(set(self.nodes[0].getrawmempool()), set()) assert_equal(set(self.nodes[0].getrawmempool()), set())
for txid in spends1_id+spends2_id: for txid in spends1_id+spends2_id:
tx = self.nodes[0].gettransaction(txid) tx = self.nodes[0].gettransaction(txid)
assert(tx["confirmations"] > 0) assert tx["confirmations"] > 0
# Use invalidateblock to re-org back # Use invalidateblock to re-org back
for node in self.nodes: for node in self.nodes:
@ -55,7 +55,7 @@ class MempoolCoinbaseTest(BitcoinTestFramework):
assert_equal(set(self.nodes[0].getrawmempool()), set(spends1_id+spends2_id)) assert_equal(set(self.nodes[0].getrawmempool()), set(spends1_id+spends2_id))
for txid in spends1_id+spends2_id: for txid in spends1_id+spends2_id:
tx = self.nodes[0].gettransaction(txid) tx = self.nodes[0].gettransaction(txid)
assert(tx["confirmations"] == 0) assert tx["confirmations"] == 0
# Generate another block, they should all get mined # Generate another block, they should all get mined
self.nodes[0].generate(1) self.nodes[0].generate(1)
@ -63,7 +63,7 @@ class MempoolCoinbaseTest(BitcoinTestFramework):
assert_equal(set(self.nodes[0].getrawmempool()), set()) assert_equal(set(self.nodes[0].getrawmempool()), set())
for txid in spends1_id+spends2_id: for txid in spends1_id+spends2_id:
tx = self.nodes[0].gettransaction(txid) tx = self.nodes[0].gettransaction(txid)
assert(tx["confirmations"] > 0) assert tx["confirmations"] > 0
if __name__ == '__main__': if __name__ == '__main__':

View file

@ -38,27 +38,27 @@ class GetBlockTemplateLPTest(BitcoinTestFramework):
longpollid = template['longpollid'] longpollid = template['longpollid']
# longpollid should not change between successive invocations if nothing else happens # longpollid should not change between successive invocations if nothing else happens
template2 = self.nodes[0].getblocktemplate({'rules': ['segwit']}) template2 = self.nodes[0].getblocktemplate({'rules': ['segwit']})
assert(template2['longpollid'] == longpollid) assert template2['longpollid'] == longpollid
# Test 1: test that the longpolling wait if we do nothing # Test 1: test that the longpolling wait if we do nothing
thr = LongpollThread(self.nodes[0]) thr = LongpollThread(self.nodes[0])
thr.start() thr.start()
# check that thread still lives # check that thread still lives
thr.join(5) # wait 5 seconds or until thread exits thr.join(5) # wait 5 seconds or until thread exits
assert(thr.is_alive()) assert thr.is_alive()
# Test 2: test that longpoll will terminate if another node generates a block # Test 2: test that longpoll will terminate if another node generates a block
self.nodes[1].generate(1) # generate a block on another node self.nodes[1].generate(1) # generate a block on another node
# check that thread will exit now that new transaction entered mempool # check that thread will exit now that new transaction entered mempool
thr.join(5) # wait 5 seconds or until thread exits thr.join(5) # wait 5 seconds or until thread exits
assert(not thr.is_alive()) assert not thr.is_alive()
# Test 3: test that longpoll will terminate if we generate a block ourselves # Test 3: test that longpoll will terminate if we generate a block ourselves
thr = LongpollThread(self.nodes[0]) thr = LongpollThread(self.nodes[0])
thr.start() thr.start()
self.nodes[0].generate(1) # generate a block on another node self.nodes[0].generate(1) # generate a block on another node
thr.join(5) # wait 5 seconds or until thread exits thr.join(5) # wait 5 seconds or until thread exits
assert(not thr.is_alive()) assert not thr.is_alive()
# Test 4: test that introducing a new transaction into the mempool will terminate the longpoll # Test 4: test that introducing a new transaction into the mempool will terminate the longpoll
thr = LongpollThread(self.nodes[0]) thr = LongpollThread(self.nodes[0])
@ -69,7 +69,7 @@ class GetBlockTemplateLPTest(BitcoinTestFramework):
(txid, txhex, fee) = random_transaction(self.nodes, Decimal("1.1"), min_relay_fee, Decimal("0.001"), 20) (txid, txhex, fee) = random_transaction(self.nodes, Decimal("1.1"), min_relay_fee, Decimal("0.001"), 20)
# after one minute, every 10 seconds the mempool is probed, so in 80 seconds it should have returned # after one minute, every 10 seconds the mempool is probed, so in 80 seconds it should have returned
thr.join(60 + 20) thr.join(60 + 20)
assert(not thr.is_alive()) assert not thr.is_alive()
if __name__ == '__main__': if __name__ == '__main__':
GetBlockTemplateLPTest().main() GetBlockTemplateLPTest().main()

View file

@ -63,9 +63,9 @@ class PrioritiseTransactionTest(BitcoinTestFramework):
sizes = [0, 0, 0] sizes = [0, 0, 0]
for i in range(3): for i in range(3):
for j in txids[i]: for j in txids[i]:
assert(j in mempool) assert j in mempool
sizes[i] += mempool[j]['size'] sizes[i] += mempool[j]['size']
assert(sizes[i] > MAX_BLOCK_BASE_SIZE) # Fail => raise utxo_count assert sizes[i] > MAX_BLOCK_BASE_SIZE # Fail => raise utxo_count
# add a fee delta to something in the cheapest bucket and make sure it gets mined # add a fee delta to something in the cheapest bucket and make sure it gets mined
# also check that a different entry in the cheapest bucket is NOT mined # also check that a different entry in the cheapest bucket is NOT mined
@ -75,8 +75,8 @@ class PrioritiseTransactionTest(BitcoinTestFramework):
mempool = self.nodes[0].getrawmempool() mempool = self.nodes[0].getrawmempool()
self.log.info("Assert that prioritised transaction was mined") self.log.info("Assert that prioritised transaction was mined")
assert(txids[0][0] not in mempool) assert txids[0][0] not in mempool
assert(txids[0][1] in mempool) assert txids[0][1] in mempool
high_fee_tx = None high_fee_tx = None
for x in txids[2]: for x in txids[2]:
@ -84,7 +84,7 @@ class PrioritiseTransactionTest(BitcoinTestFramework):
high_fee_tx = x high_fee_tx = x
# Something high-fee should have been mined! # Something high-fee should have been mined!
assert(high_fee_tx is not None) assert high_fee_tx is not None
# Add a prioritisation before a tx is in the mempool (de-prioritising a # Add a prioritisation before a tx is in the mempool (de-prioritising a
# high-fee transaction so that it's now low fee). # high-fee transaction so that it's now low fee).
@ -95,7 +95,7 @@ class PrioritiseTransactionTest(BitcoinTestFramework):
# Check to make sure our high fee rate tx is back in the mempool # Check to make sure our high fee rate tx is back in the mempool
mempool = self.nodes[0].getrawmempool() mempool = self.nodes[0].getrawmempool()
assert(high_fee_tx in mempool) assert high_fee_tx in mempool
# Now verify the modified-high feerate transaction isn't mined before # Now verify the modified-high feerate transaction isn't mined before
# the other high fee transactions. Keep mining until our mempool has # the other high fee transactions. Keep mining until our mempool has
@ -107,14 +107,14 @@ class PrioritiseTransactionTest(BitcoinTestFramework):
# transactions should have been. # transactions should have been.
mempool = self.nodes[0].getrawmempool() mempool = self.nodes[0].getrawmempool()
self.log.info("Assert that de-prioritised transaction is still in mempool") self.log.info("Assert that de-prioritised transaction is still in mempool")
assert(high_fee_tx in mempool) assert high_fee_tx in mempool
for x in txids[2]: for x in txids[2]:
if (x != high_fee_tx): if (x != high_fee_tx):
assert(x not in mempool) assert x not in mempool
# Create a free transaction. Should be rejected. # Create a free transaction. Should be rejected.
utxo_list = self.nodes[0].listunspent() utxo_list = self.nodes[0].listunspent()
assert(len(utxo_list) > 0) assert len(utxo_list) > 0
utxo = utxo_list[0] utxo = utxo_list[0]
inputs = [] inputs = []
@ -127,7 +127,7 @@ class PrioritiseTransactionTest(BitcoinTestFramework):
# This will raise an exception due to min relay fee not being met # This will raise an exception due to min relay fee not being met
assert_raises_rpc_error(-26, "min relay fee not met", self.nodes[0].sendrawtransaction, tx_hex) assert_raises_rpc_error(-26, "min relay fee not met", self.nodes[0].sendrawtransaction, tx_hex)
assert(tx_id not in self.nodes[0].getrawmempool()) assert tx_id not in self.nodes[0].getrawmempool()
# This is a less than 1000-byte transaction, so just set the fee # This is a less than 1000-byte transaction, so just set the fee
# to be the minimum for a 1000-byte transaction and check that it is # to be the minimum for a 1000-byte transaction and check that it is
@ -136,7 +136,7 @@ class PrioritiseTransactionTest(BitcoinTestFramework):
self.log.info("Assert that prioritised free transaction is accepted to mempool") self.log.info("Assert that prioritised free transaction is accepted to mempool")
assert_equal(self.nodes[0].sendrawtransaction(tx_hex), tx_id) assert_equal(self.nodes[0].sendrawtransaction(tx_hex), tx_id)
assert(tx_id in self.nodes[0].getrawmempool()) assert tx_id in self.nodes[0].getrawmempool()
# Test that calling prioritisetransaction is sufficient to trigger # Test that calling prioritisetransaction is sufficient to trigger
# getblocktemplate to (eventually) return a new block. # getblocktemplate to (eventually) return a new block.
@ -147,7 +147,7 @@ class PrioritiseTransactionTest(BitcoinTestFramework):
self.nodes[0].setmocktime(mock_time+10) self.nodes[0].setmocktime(mock_time+10)
new_template = self.nodes[0].getblocktemplate({'rules': ['segwit']}) new_template = self.nodes[0].getblocktemplate({'rules': ['segwit']})
assert(template != new_template) assert template != new_template
if __name__ == '__main__': if __name__ == '__main__':
PrioritiseTransactionTest().main() PrioritiseTransactionTest().main()

View file

@ -120,7 +120,7 @@ class CompactBlocksTest(BitcoinTestFramework):
# Doesn't matter which node we use, just use node0. # Doesn't matter which node we use, just use node0.
block = self.build_block_on_tip(self.nodes[0]) block = self.build_block_on_tip(self.nodes[0])
self.test_node.send_and_ping(msg_block(block)) self.test_node.send_and_ping(msg_block(block))
assert(int(self.nodes[0].getbestblockhash(), 16) == block.sha256) assert int(self.nodes[0].getbestblockhash(), 16) == block.sha256
self.nodes[0].generate(100) self.nodes[0].generate(100)
total_value = block.vtx[0].vout[0].nValue total_value = block.vtx[0].vout[0].nValue
@ -167,7 +167,7 @@ class CompactBlocksTest(BitcoinTestFramework):
peer.clear_block_announcement() peer.clear_block_announcement()
block_hash = int(node.generate(1)[0], 16) block_hash = int(node.generate(1)[0], 16)
peer.wait_for_block_announcement(block_hash, timeout=30) peer.wait_for_block_announcement(block_hash, timeout=30)
assert(peer.block_announced) assert peer.block_announced
with mininode_lock: with mininode_lock:
assert predicate(peer), ( assert predicate(peer), (
@ -303,7 +303,7 @@ class CompactBlocksTest(BitcoinTestFramework):
# Now fetch and check the compact block # Now fetch and check the compact block
header_and_shortids = None header_and_shortids = None
with mininode_lock: with mininode_lock:
assert("cmpctblock" in test_node.last_message) assert "cmpctblock" in test_node.last_message
# Convert the on-the-wire representation to absolute indexes # Convert the on-the-wire representation to absolute indexes
header_and_shortids = HeaderAndShortIDs(test_node.last_message["cmpctblock"].header_and_shortids) header_and_shortids = HeaderAndShortIDs(test_node.last_message["cmpctblock"].header_and_shortids)
self.check_compactblock_construction_from_block(version, header_and_shortids, block_hash, block) self.check_compactblock_construction_from_block(version, header_and_shortids, block_hash, block)
@ -319,7 +319,7 @@ class CompactBlocksTest(BitcoinTestFramework):
# Now fetch and check the compact block # Now fetch and check the compact block
header_and_shortids = None header_and_shortids = None
with mininode_lock: with mininode_lock:
assert("cmpctblock" in test_node.last_message) assert "cmpctblock" in test_node.last_message
# Convert the on-the-wire representation to absolute indexes # Convert the on-the-wire representation to absolute indexes
header_and_shortids = HeaderAndShortIDs(test_node.last_message["cmpctblock"].header_and_shortids) header_and_shortids = HeaderAndShortIDs(test_node.last_message["cmpctblock"].header_and_shortids)
self.check_compactblock_construction_from_block(version, header_and_shortids, block_hash, block) self.check_compactblock_construction_from_block(version, header_and_shortids, block_hash, block)
@ -330,7 +330,7 @@ class CompactBlocksTest(BitcoinTestFramework):
assert_equal(header_and_shortids.header.sha256, block_hash) assert_equal(header_and_shortids.header.sha256, block_hash)
# Make sure the prefilled_txn appears to have included the coinbase # Make sure the prefilled_txn appears to have included the coinbase
assert(len(header_and_shortids.prefilled_txn) >= 1) assert len(header_and_shortids.prefilled_txn) >= 1
assert_equal(header_and_shortids.prefilled_txn[0].index, 0) assert_equal(header_and_shortids.prefilled_txn[0].index, 0)
# Check that all prefilled_txn entries match what's in the block. # Check that all prefilled_txn entries match what's in the block.
@ -345,7 +345,7 @@ class CompactBlocksTest(BitcoinTestFramework):
assert_equal(wtxid, block.vtx[entry.index].calc_sha256(True)) assert_equal(wtxid, block.vtx[entry.index].calc_sha256(True))
else: else:
# Shouldn't have received a witness # Shouldn't have received a witness
assert(entry.tx.wit.is_null()) assert entry.tx.wit.is_null()
# Check that the cmpctblock message announced all the transactions. # Check that the cmpctblock message announced all the transactions.
assert_equal(len(header_and_shortids.prefilled_txn) + len(header_and_shortids.shortids), len(block.vtx)) assert_equal(len(header_and_shortids.prefilled_txn) + len(header_and_shortids.shortids), len(block.vtx))
@ -407,7 +407,7 @@ class CompactBlocksTest(BitcoinTestFramework):
assert_equal(int(node.getbestblockhash(), 16), block.hashPrevBlock) assert_equal(int(node.getbestblockhash(), 16), block.hashPrevBlock)
# Expect a getblocktxn message. # Expect a getblocktxn message.
with mininode_lock: with mininode_lock:
assert("getblocktxn" in test_node.last_message) assert "getblocktxn" in test_node.last_message
absolute_indexes = test_node.last_message["getblocktxn"].block_txn_request.to_absolute() absolute_indexes = test_node.last_message["getblocktxn"].block_txn_request.to_absolute()
assert_equal(absolute_indexes, [0]) # should be a coinbase request assert_equal(absolute_indexes, [0]) # should be a coinbase request
@ -447,7 +447,7 @@ class CompactBlocksTest(BitcoinTestFramework):
msg = msg_cmpctblock(compact_block.to_p2p()) msg = msg_cmpctblock(compact_block.to_p2p())
peer.send_and_ping(msg) peer.send_and_ping(msg)
with mininode_lock: with mininode_lock:
assert("getblocktxn" in peer.last_message) assert "getblocktxn" in peer.last_message
absolute_indexes = peer.last_message["getblocktxn"].block_txn_request.to_absolute() absolute_indexes = peer.last_message["getblocktxn"].block_txn_request.to_absolute()
assert_equal(absolute_indexes, expected_result) assert_equal(absolute_indexes, expected_result)
@ -487,7 +487,7 @@ class CompactBlocksTest(BitcoinTestFramework):
block = self.build_block_with_transactions(node, utxo, 5) block = self.build_block_with_transactions(node, utxo, 5)
self.utxos.append([block.vtx[-1].sha256, 0, block.vtx[-1].vout[0].nValue]) self.utxos.append([block.vtx[-1].sha256, 0, block.vtx[-1].vout[0].nValue])
test_node.send_and_ping(msg_tx(block.vtx[1])) test_node.send_and_ping(msg_tx(block.vtx[1]))
assert(block.vtx[1].hash in node.getrawmempool()) assert block.vtx[1].hash in node.getrawmempool()
# Prefill 4 out of the 6 transactions, and verify that only the one # Prefill 4 out of the 6 transactions, and verify that only the one
# that was not in the mempool is requested. # that was not in the mempool is requested.
@ -508,7 +508,7 @@ class CompactBlocksTest(BitcoinTestFramework):
# Make sure all transactions were accepted. # Make sure all transactions were accepted.
mempool = node.getrawmempool() mempool = node.getrawmempool()
for tx in block.vtx[1:]: for tx in block.vtx[1:]:
assert(tx.hash in mempool) assert tx.hash in mempool
# Clear out last request. # Clear out last request.
with mininode_lock: with mininode_lock:
@ -519,7 +519,7 @@ class CompactBlocksTest(BitcoinTestFramework):
test_tip_after_message(node, test_node, msg_cmpctblock(comp_block.to_p2p()), block.sha256) test_tip_after_message(node, test_node, msg_cmpctblock(comp_block.to_p2p()), block.sha256)
with mininode_lock: with mininode_lock:
# Shouldn't have gotten a request for any transaction # Shouldn't have gotten a request for any transaction
assert("getblocktxn" not in test_node.last_message) assert "getblocktxn" not in test_node.last_message
# Incorrectly responding to a getblocktxn shouldn't cause the block to be # Incorrectly responding to a getblocktxn shouldn't cause the block to be
# permanently failed. # permanently failed.
@ -537,7 +537,7 @@ class CompactBlocksTest(BitcoinTestFramework):
# Make sure all transactions were accepted. # Make sure all transactions were accepted.
mempool = node.getrawmempool() mempool = node.getrawmempool()
for tx in block.vtx[1:6]: for tx in block.vtx[1:6]:
assert(tx.hash in mempool) assert tx.hash in mempool
# Send compact block # Send compact block
comp_block = HeaderAndShortIDs() comp_block = HeaderAndShortIDs()
@ -545,7 +545,7 @@ class CompactBlocksTest(BitcoinTestFramework):
test_node.send_and_ping(msg_cmpctblock(comp_block.to_p2p())) test_node.send_and_ping(msg_cmpctblock(comp_block.to_p2p()))
absolute_indexes = [] absolute_indexes = []
with mininode_lock: with mininode_lock:
assert("getblocktxn" in test_node.last_message) assert "getblocktxn" in test_node.last_message
absolute_indexes = test_node.last_message["getblocktxn"].block_txn_request.to_absolute() absolute_indexes = test_node.last_message["getblocktxn"].block_txn_request.to_absolute()
assert_equal(absolute_indexes, [6, 7, 8, 9, 10]) assert_equal(absolute_indexes, [6, 7, 8, 9, 10])
@ -569,7 +569,7 @@ class CompactBlocksTest(BitcoinTestFramework):
# We should receive a getdata request # We should receive a getdata request
wait_until(lambda: "getdata" in test_node.last_message, timeout=10, lock=mininode_lock) wait_until(lambda: "getdata" in test_node.last_message, timeout=10, lock=mininode_lock)
assert_equal(len(test_node.last_message["getdata"].inv), 1) assert_equal(len(test_node.last_message["getdata"].inv), 1)
assert(test_node.last_message["getdata"].inv[0].type == 2 or test_node.last_message["getdata"].inv[0].type == 2 | MSG_WITNESS_FLAG) assert test_node.last_message["getdata"].inv[0].type == 2 or test_node.last_message["getdata"].inv[0].type == 2 | MSG_WITNESS_FLAG
assert_equal(test_node.last_message["getdata"].inv[0].hash, block.sha256) assert_equal(test_node.last_message["getdata"].inv[0].hash, block.sha256)
# Deliver the block # Deliver the block
@ -606,7 +606,7 @@ class CompactBlocksTest(BitcoinTestFramework):
assert_equal(tx.sha256, block.vtx[index].sha256) assert_equal(tx.sha256, block.vtx[index].sha256)
if version == 1: if version == 1:
# Witnesses should have been stripped # Witnesses should have been stripped
assert(tx.wit.is_null()) assert tx.wit.is_null()
else: else:
# Check that the witness matches # Check that the witness matches
assert_equal(tx.calc_sha256(True), block.vtx[index].calc_sha256(True)) assert_equal(tx.calc_sha256(True), block.vtx[index].calc_sha256(True))
@ -669,7 +669,7 @@ class CompactBlocksTest(BitcoinTestFramework):
assert_equal(x["status"], "headers-only") assert_equal(x["status"], "headers-only")
found = True found = True
break break
assert(found) assert found
# Requesting this block via getblocktxn should silently fail # Requesting this block via getblocktxn should silently fail
# (to avoid fingerprinting attacks). # (to avoid fingerprinting attacks).
@ -707,7 +707,7 @@ class CompactBlocksTest(BitcoinTestFramework):
# Test that we don't get disconnected if we relay a compact block with valid header, # Test that we don't get disconnected if we relay a compact block with valid header,
# but invalid transactions. # but invalid transactions.
def test_invalid_tx_in_compactblock(self, node, test_node, use_segwit): def test_invalid_tx_in_compactblock(self, node, test_node, use_segwit):
assert(len(self.utxos)) assert len(self.utxos)
utxo = self.utxos[0] utxo = self.utxos[0]
block = self.build_block_with_transactions(node, utxo, 5) block = self.build_block_with_transactions(node, utxo, 5)
@ -728,7 +728,7 @@ class CompactBlocksTest(BitcoinTestFramework):
test_node.send_and_ping(msg) test_node.send_and_ping(msg)
# Check that the tip didn't advance # Check that the tip didn't advance
assert(int(node.getbestblockhash(), 16) is not block.sha256) assert int(node.getbestblockhash(), 16) is not block.sha256
test_node.sync_with_ping() test_node.sync_with_ping()
# Helper for enabling cb announcements # Helper for enabling cb announcements
@ -743,7 +743,7 @@ class CompactBlocksTest(BitcoinTestFramework):
peer.send_and_ping(msg) peer.send_and_ping(msg)
def test_compactblock_reconstruction_multiple_peers(self, node, stalling_peer, delivery_peer): def test_compactblock_reconstruction_multiple_peers(self, node, stalling_peer, delivery_peer):
assert(len(self.utxos)) assert len(self.utxos)
def announce_cmpct_block(node, peer): def announce_cmpct_block(node, peer):
utxo = self.utxos.pop(0) utxo = self.utxos.pop(0)
@ -764,7 +764,7 @@ class CompactBlocksTest(BitcoinTestFramework):
delivery_peer.sync_with_ping() delivery_peer.sync_with_ping()
mempool = node.getrawmempool() mempool = node.getrawmempool()
for tx in block.vtx[1:]: for tx in block.vtx[1:]:
assert(tx.hash in mempool) assert tx.hash in mempool
delivery_peer.send_and_ping(msg_cmpctblock(cmpct_block.to_p2p())) delivery_peer.send_and_ping(msg_cmpctblock(cmpct_block.to_p2p()))
assert_equal(int(node.getbestblockhash(), 16), block.sha256) assert_equal(int(node.getbestblockhash(), 16), block.sha256)
@ -783,7 +783,7 @@ class CompactBlocksTest(BitcoinTestFramework):
cmpct_block.use_witness = True cmpct_block.use_witness = True
delivery_peer.send_and_ping(msg_cmpctblock(cmpct_block.to_p2p())) delivery_peer.send_and_ping(msg_cmpctblock(cmpct_block.to_p2p()))
assert(int(node.getbestblockhash(), 16) != block.sha256) assert int(node.getbestblockhash(), 16) != block.sha256
msg = msg_blocktxn() msg = msg_blocktxn()
msg.block_transactions.blockhash = block.sha256 msg.block_transactions.blockhash = block.sha256
@ -882,7 +882,7 @@ class CompactBlocksTest(BitcoinTestFramework):
# Need to manually sync node0 and node1, because post-segwit activation, # Need to manually sync node0 and node1, because post-segwit activation,
# node1 will not download blocks from node0. # node1 will not download blocks from node0.
self.log.info("Syncing nodes...") self.log.info("Syncing nodes...")
assert(self.nodes[0].getbestblockhash() != self.nodes[1].getbestblockhash()) assert self.nodes[0].getbestblockhash() != self.nodes[1].getbestblockhash()
while (self.nodes[0].getblockcount() > self.nodes[1].getblockcount()): while (self.nodes[0].getblockcount() > self.nodes[1].getblockcount()):
block_hash = self.nodes[0].getblockhash(self.nodes[1].getblockcount() + 1) block_hash = self.nodes[0].getblockhash(self.nodes[1].getblockcount() + 1)
self.nodes[1].submitblock(self.nodes[0].getblock(block_hash, False)) self.nodes[1].submitblock(self.nodes[0].getblock(block_hash, False))

View file

@ -57,7 +57,7 @@ class FeeFilterTest(BitcoinTestFramework):
# Test that invs are received for all txs at feerate of 20 sat/byte # Test that invs are received for all txs at feerate of 20 sat/byte
node1.settxfee(Decimal("0.00020000")) node1.settxfee(Decimal("0.00020000"))
txids = [node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)] txids = [node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)]
assert(allInvsMatch(txids, self.nodes[0].p2p)) assert allInvsMatch(txids, self.nodes[0].p2p)
self.nodes[0].p2p.clear_invs() self.nodes[0].p2p.clear_invs()
# Set a filter of 15 sat/byte # Set a filter of 15 sat/byte
@ -65,7 +65,7 @@ class FeeFilterTest(BitcoinTestFramework):
# Test that txs are still being received (paying 20 sat/byte) # Test that txs are still being received (paying 20 sat/byte)
txids = [node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)] txids = [node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)]
assert(allInvsMatch(txids, self.nodes[0].p2p)) assert allInvsMatch(txids, self.nodes[0].p2p)
self.nodes[0].p2p.clear_invs() self.nodes[0].p2p.clear_invs()
# Change tx fee rate to 10 sat/byte and test they are no longer received # Change tx fee rate to 10 sat/byte and test they are no longer received
@ -82,13 +82,13 @@ class FeeFilterTest(BitcoinTestFramework):
# as well. # as well.
node0.settxfee(Decimal("0.00020000")) node0.settxfee(Decimal("0.00020000"))
txids = [node0.sendtoaddress(node0.getnewaddress(), 1)] txids = [node0.sendtoaddress(node0.getnewaddress(), 1)]
assert(allInvsMatch(txids, self.nodes[0].p2p)) assert allInvsMatch(txids, self.nodes[0].p2p)
self.nodes[0].p2p.clear_invs() self.nodes[0].p2p.clear_invs()
# Remove fee filter and check that txs are received again # Remove fee filter and check that txs are received again
self.nodes[0].p2p.send_and_ping(msg_feefilter(0)) self.nodes[0].p2p.send_and_ping(msg_feefilter(0))
txids = [node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)] txids = [node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)]
assert(allInvsMatch(txids, self.nodes[0].p2p)) assert allInvsMatch(txids, self.nodes[0].p2p)
self.nodes[0].p2p.clear_invs() self.nodes[0].p2p.clear_invs()
if __name__ == '__main__': if __name__ == '__main__':

View file

@ -117,9 +117,9 @@ class P2PLeakTest(BitcoinTestFramework):
wait_until(lambda: len(self.nodes[0].getpeerinfo()) == 0) wait_until(lambda: len(self.nodes[0].getpeerinfo()) == 0)
# Make sure no unexpected messages came in # Make sure no unexpected messages came in
assert(no_version_bannode.unexpected_msg == False) assert no_version_bannode.unexpected_msg == False
assert(no_version_idlenode.unexpected_msg == False) assert no_version_idlenode.unexpected_msg == False
assert(no_verack_idlenode.unexpected_msg == False) assert no_verack_idlenode.unexpected_msg == False
if __name__ == '__main__': if __name__ == '__main__':

View file

@ -315,7 +315,7 @@ class SegWitTest(BitcoinTestFramework):
self.test_node.send_message(msg_witness_tx(tx)) self.test_node.send_message(msg_witness_tx(tx))
self.test_node.sync_with_ping() # make sure the tx was processed self.test_node.sync_with_ping() # make sure the tx was processed
assert(tx.hash in self.nodes[0].getrawmempool()) assert tx.hash in self.nodes[0].getrawmempool()
# Save this transaction for later # Save this transaction for later
self.utxo.append(UTXO(tx.sha256, 0, 49 * 100000000)) self.utxo.append(UTXO(tx.sha256, 0, 49 * 100000000))
self.nodes[0].generate(1) self.nodes[0].generate(1)
@ -333,7 +333,7 @@ class SegWitTest(BitcoinTestFramework):
# Verify the hash with witness differs from the txid # Verify the hash with witness differs from the txid
# (otherwise our testing framework must be broken!) # (otherwise our testing framework must be broken!)
tx.rehash() tx.rehash()
assert(tx.sha256 != tx.calc_sha256(with_witness=True)) assert tx.sha256 != tx.calc_sha256(with_witness=True)
# Construct a segwit-signaling block that includes the transaction. # Construct a segwit-signaling block that includes the transaction.
block = self.build_next_block(version=(VB_TOP_BITS | (1 << VB_WITNESS_BIT))) block = self.build_next_block(version=(VB_TOP_BITS | (1 << VB_WITNESS_BIT)))
@ -369,20 +369,20 @@ class SegWitTest(BitcoinTestFramework):
block1.solve() block1.solve()
self.test_node.announce_block_and_wait_for_getdata(block1, use_header=False) self.test_node.announce_block_and_wait_for_getdata(block1, use_header=False)
assert(self.test_node.last_message["getdata"].inv[0].type == blocktype) assert self.test_node.last_message["getdata"].inv[0].type == blocktype
test_witness_block(self.nodes[0], self.test_node, block1, True) test_witness_block(self.nodes[0], self.test_node, block1, True)
block2 = self.build_next_block(version=4) block2 = self.build_next_block(version=4)
block2.solve() block2.solve()
self.test_node.announce_block_and_wait_for_getdata(block2, use_header=True) self.test_node.announce_block_and_wait_for_getdata(block2, use_header=True)
assert(self.test_node.last_message["getdata"].inv[0].type == blocktype) assert self.test_node.last_message["getdata"].inv[0].type == blocktype
test_witness_block(self.nodes[0], self.test_node, block2, True) test_witness_block(self.nodes[0], self.test_node, block2, True)
block3 = self.build_next_block(version=(VB_TOP_BITS | (1 << 15))) block3 = self.build_next_block(version=(VB_TOP_BITS | (1 << 15)))
block3.solve() block3.solve()
self.test_node.announce_block_and_wait_for_getdata(block3, use_header=True) self.test_node.announce_block_and_wait_for_getdata(block3, use_header=True)
assert(self.test_node.last_message["getdata"].inv[0].type == blocktype) assert self.test_node.last_message["getdata"].inv[0].type == blocktype
test_witness_block(self.nodes[0], self.test_node, block3, True) test_witness_block(self.nodes[0], self.test_node, block3, True)
# Check that we can getdata for witness blocks or regular blocks, # Check that we can getdata for witness blocks or regular blocks,
@ -411,8 +411,8 @@ class SegWitTest(BitcoinTestFramework):
block = self.build_next_block() block = self.build_next_block()
self.update_witness_block_with_transactions(block, []) self.update_witness_block_with_transactions(block, [])
# This gives us a witness commitment. # This gives us a witness commitment.
assert(len(block.vtx[0].wit.vtxinwit) == 1) assert len(block.vtx[0].wit.vtxinwit) == 1
assert(len(block.vtx[0].wit.vtxinwit[0].scriptWitness.stack) == 1) assert len(block.vtx[0].wit.vtxinwit[0].scriptWitness.stack) == 1
test_witness_block(self.nodes[0], self.test_node, block, accepted=True) test_witness_block(self.nodes[0], self.test_node, block, accepted=True)
# Now try to retrieve it... # Now try to retrieve it...
rpc_block = self.nodes[0].getblock(block.hash, False) rpc_block = self.nodes[0].getblock(block.hash, False)
@ -446,7 +446,7 @@ class SegWitTest(BitcoinTestFramework):
msg.headers = [CBlockHeader(block4)] msg.headers = [CBlockHeader(block4)]
self.old_node.send_message(msg) self.old_node.send_message(msg)
self.old_node.announce_tx_and_wait_for_getdata(block4.vtx[0]) self.old_node.announce_tx_and_wait_for_getdata(block4.vtx[0])
assert(block4.sha256 not in self.old_node.getdataset) assert block4.sha256 not in self.old_node.getdataset
@subtest @subtest
def test_v0_outputs_arent_spendable(self): def test_v0_outputs_arent_spendable(self):
@ -535,7 +535,7 @@ class SegWitTest(BitcoinTestFramework):
"""Mine enough blocks for segwit's vb state to be 'started'.""" """Mine enough blocks for segwit's vb state to be 'started'."""
height = self.nodes[0].getblockcount() height = self.nodes[0].getblockcount()
# Will need to rewrite the tests here if we are past the first period # Will need to rewrite the tests here if we are past the first period
assert(height < VB_PERIOD - 1) assert height < VB_PERIOD - 1
# Advance to end of period, status should now be 'started' # Advance to end of period, status should now be 'started'
self.nodes[0].generate(VB_PERIOD - height - 1) self.nodes[0].generate(VB_PERIOD - height - 1)
assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], 'started') assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], 'started')
@ -552,12 +552,12 @@ class SegWitTest(BitcoinTestFramework):
# If this is a non-segwit node, we should not get a witness # If this is a non-segwit node, we should not get a witness
# commitment, nor a version bit signalling segwit. # commitment, nor a version bit signalling segwit.
assert_equal(block_version & (1 << VB_WITNESS_BIT), 0) assert_equal(block_version & (1 << VB_WITNESS_BIT), 0)
assert('default_witness_commitment' not in gbt_results) assert 'default_witness_commitment' not in gbt_results
else: else:
# For segwit-aware nodes, check the version bit and the witness # For segwit-aware nodes, check the version bit and the witness
# commitment are correct. # commitment are correct.
assert(block_version & (1 << VB_WITNESS_BIT) != 0) assert block_version & (1 << VB_WITNESS_BIT) != 0
assert('default_witness_commitment' in gbt_results) assert 'default_witness_commitment' in gbt_results
witness_commitment = gbt_results['default_witness_commitment'] witness_commitment = gbt_results['default_witness_commitment']
# Check that default_witness_commitment is present. # Check that default_witness_commitment is present.
@ -573,7 +573,7 @@ class SegWitTest(BitcoinTestFramework):
# Advance to end of period, and verify lock-in happens at the end # Advance to end of period, and verify lock-in happens at the end
self.nodes[0].generate(VB_PERIOD - 1) self.nodes[0].generate(VB_PERIOD - 1)
height = self.nodes[0].getblockcount() height = self.nodes[0].getblockcount()
assert((height % VB_PERIOD) == VB_PERIOD - 2) assert (height % VB_PERIOD) == VB_PERIOD - 2
assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], 'started') assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], 'started')
self.nodes[0].generate(1) self.nodes[0].generate(1)
assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], 'locked_in') assert_equal(get_bip9_status(self.nodes[0], 'segwit')['status'], 'locked_in')
@ -598,7 +598,7 @@ class SegWitTest(BitcoinTestFramework):
# Verify that if a peer doesn't set nServices to include NODE_WITNESS, # Verify that if a peer doesn't set nServices to include NODE_WITNESS,
# the getdata is just for the non-witness portion. # the getdata is just for the non-witness portion.
self.old_node.announce_tx_and_wait_for_getdata(tx) self.old_node.announce_tx_and_wait_for_getdata(tx)
assert(self.old_node.last_message["getdata"].inv[0].type == 1) assert self.old_node.last_message["getdata"].inv[0].type == 1
# Since we haven't delivered the tx yet, inv'ing the same tx from # Since we haven't delivered the tx yet, inv'ing the same tx from
# a witness transaction ought not result in a getdata. # a witness transaction ought not result in a getdata.
@ -790,7 +790,7 @@ class SegWitTest(BitcoinTestFramework):
block.solve() block.solve()
# Test the test -- witness serialization should be different # Test the test -- witness serialization should be different
assert(msg_witness_block(block).serialize() != msg_block(block).serialize()) assert msg_witness_block(block).serialize() != msg_block(block).serialize()
# This empty block should be valid. # This empty block should be valid.
test_witness_block(self.nodes[0], self.test_node, block, accepted=True) test_witness_block(self.nodes[0], self.test_node, block, accepted=True)
@ -801,7 +801,7 @@ class SegWitTest(BitcoinTestFramework):
block_2.solve() block_2.solve()
# The commitment should have changed! # The commitment should have changed!
assert(block_2.vtx[0].vout[-1] != block.vtx[0].vout[-1]) assert block_2.vtx[0].vout[-1] != block.vtx[0].vout[-1]
# This should also be valid. # This should also be valid.
test_witness_block(self.nodes[0], self.test_node, block_2, accepted=True) test_witness_block(self.nodes[0], self.test_node, block_2, accepted=True)
@ -848,7 +848,7 @@ class SegWitTest(BitcoinTestFramework):
block_3.vtx[0].rehash() block_3.vtx[0].rehash()
block_3.hashMerkleRoot = block_3.calc_merkle_root() block_3.hashMerkleRoot = block_3.calc_merkle_root()
block_3.rehash() block_3.rehash()
assert(len(block_3.vtx[0].vout) == 4) # 3 OP_returns assert len(block_3.vtx[0].vout) == 4 # 3 OP_returns
block_3.solve() block_3.solve()
test_witness_block(self.nodes[0], self.test_node, block_3, accepted=True) test_witness_block(self.nodes[0], self.test_node, block_3, accepted=True)
@ -879,19 +879,19 @@ class SegWitTest(BitcoinTestFramework):
block.solve() block.solve()
block.vtx[0].wit.vtxinwit[0].scriptWitness.stack.append(b'a' * 5000000) block.vtx[0].wit.vtxinwit[0].scriptWitness.stack.append(b'a' * 5000000)
assert(get_virtual_size(block) > MAX_BLOCK_BASE_SIZE) assert get_virtual_size(block) > MAX_BLOCK_BASE_SIZE
# We can't send over the p2p network, because this is too big to relay # We can't send over the p2p network, because this is too big to relay
# TODO: repeat this test with a block that can be relayed # TODO: repeat this test with a block that can be relayed
self.nodes[0].submitblock(block.serialize(True).hex()) self.nodes[0].submitblock(block.serialize(True).hex())
assert(self.nodes[0].getbestblockhash() != block.hash) assert self.nodes[0].getbestblockhash() != block.hash
block.vtx[0].wit.vtxinwit[0].scriptWitness.stack.pop() block.vtx[0].wit.vtxinwit[0].scriptWitness.stack.pop()
assert(get_virtual_size(block) < MAX_BLOCK_BASE_SIZE) assert get_virtual_size(block) < MAX_BLOCK_BASE_SIZE
self.nodes[0].submitblock(block.serialize(True).hex()) self.nodes[0].submitblock(block.serialize(True).hex())
assert(self.nodes[0].getbestblockhash() == block.hash) assert self.nodes[0].getbestblockhash() == block.hash
# Now make sure that malleating the witness reserved value doesn't # Now make sure that malleating the witness reserved value doesn't
# result in a block permanently marked bad. # result in a block permanently marked bad.
@ -916,7 +916,7 @@ class SegWitTest(BitcoinTestFramework):
# Test that witness-bearing blocks are limited at ceil(base + wit/4) <= 1MB. # Test that witness-bearing blocks are limited at ceil(base + wit/4) <= 1MB.
block = self.build_next_block() block = self.build_next_block()
assert(len(self.utxo) > 0) assert len(self.utxo) > 0
# Create a P2WSH transaction. # Create a P2WSH transaction.
# The witness program will be a bunch of OP_2DROP's, followed by OP_TRUE. # The witness program will be a bunch of OP_2DROP's, followed by OP_TRUE.
@ -938,7 +938,7 @@ class SegWitTest(BitcoinTestFramework):
for i in range(NUM_OUTPUTS): for i in range(NUM_OUTPUTS):
parent_tx.vout.append(CTxOut(child_value, script_pubkey)) parent_tx.vout.append(CTxOut(child_value, script_pubkey))
parent_tx.vout[0].nValue -= 50000 parent_tx.vout[0].nValue -= 50000
assert(parent_tx.vout[0].nValue > 0) assert parent_tx.vout[0].nValue > 0
parent_tx.rehash() parent_tx.rehash()
child_tx = CTransaction() child_tx = CTransaction()
@ -968,7 +968,7 @@ class SegWitTest(BitcoinTestFramework):
assert_equal(vsize, MAX_BLOCK_BASE_SIZE + 1) assert_equal(vsize, MAX_BLOCK_BASE_SIZE + 1)
# Make sure that our test case would exceed the old max-network-message # Make sure that our test case would exceed the old max-network-message
# limit # limit
assert(len(block.serialize(True)) > 2 * 1024 * 1024) assert len(block.serialize(True)) > 2 * 1024 * 1024
test_witness_block(self.nodes[0], self.test_node, block, accepted=False) test_witness_block(self.nodes[0], self.test_node, block, accepted=False)
@ -978,7 +978,7 @@ class SegWitTest(BitcoinTestFramework):
block.vtx[0].vout.pop() block.vtx[0].vout.pop()
add_witness_commitment(block) add_witness_commitment(block)
block.solve() block.solve()
assert(get_virtual_size(block) == MAX_BLOCK_BASE_SIZE) assert get_virtual_size(block) == MAX_BLOCK_BASE_SIZE
test_witness_block(self.nodes[0], self.test_node, block, accepted=True) test_witness_block(self.nodes[0], self.test_node, block, accepted=True)
@ -997,7 +997,7 @@ class SegWitTest(BitcoinTestFramework):
block.vtx[0].wit = CTxWitness() # drop the nonce block.vtx[0].wit = CTxWitness() # drop the nonce
block.solve() block.solve()
self.nodes[0].submitblock(block.serialize(True).hex()) self.nodes[0].submitblock(block.serialize(True).hex())
assert(self.nodes[0].getbestblockhash() != block.hash) assert self.nodes[0].getbestblockhash() != block.hash
# Now redo commitment with the standard nonce, but let bitcoind fill it in. # Now redo commitment with the standard nonce, but let bitcoind fill it in.
add_witness_commitment(block, nonce=0) add_witness_commitment(block, nonce=0)
@ -1020,7 +1020,7 @@ class SegWitTest(BitcoinTestFramework):
self.nodes[0].submitblock(block_2.serialize(True).hex()) self.nodes[0].submitblock(block_2.serialize(True).hex())
# Tip should not advance! # Tip should not advance!
assert(self.nodes[0].getbestblockhash() != block_2.hash) assert self.nodes[0].getbestblockhash() != block_2.hash
@subtest @subtest
def test_extra_witness_data(self): def test_extra_witness_data(self):
@ -1140,7 +1140,7 @@ class SegWitTest(BitcoinTestFramework):
# This program is 19 max pushes (9937 bytes), then 64 more opcode-bytes. # This program is 19 max pushes (9937 bytes), then 64 more opcode-bytes.
long_witness_program = CScript([b'a' * 520] * 19 + [OP_DROP] * 63 + [OP_TRUE]) long_witness_program = CScript([b'a' * 520] * 19 + [OP_DROP] * 63 + [OP_TRUE])
assert(len(long_witness_program) == MAX_PROGRAM_LENGTH + 1) assert len(long_witness_program) == MAX_PROGRAM_LENGTH + 1
long_witness_hash = sha256(long_witness_program) long_witness_hash = sha256(long_witness_program)
long_script_pubkey = CScript([OP_0, long_witness_hash]) long_script_pubkey = CScript([OP_0, long_witness_hash])
@ -1164,7 +1164,7 @@ class SegWitTest(BitcoinTestFramework):
# Try again with one less byte in the witness program # Try again with one less byte in the witness program
witness_program = CScript([b'a' * 520] * 19 + [OP_DROP] * 62 + [OP_TRUE]) witness_program = CScript([b'a' * 520] * 19 + [OP_DROP] * 62 + [OP_TRUE])
assert(len(witness_program) == MAX_PROGRAM_LENGTH) assert len(witness_program) == MAX_PROGRAM_LENGTH
witness_hash = sha256(witness_program) witness_hash = sha256(witness_program)
script_pubkey = CScript([OP_0, witness_hash]) script_pubkey = CScript([OP_0, witness_hash])
@ -1195,7 +1195,7 @@ class SegWitTest(BitcoinTestFramework):
for i in range(10): for i in range(10):
tx.vout.append(CTxOut(int(value / 10), script_pubkey)) tx.vout.append(CTxOut(int(value / 10), script_pubkey))
tx.vout[0].nValue -= 1000 tx.vout[0].nValue -= 1000
assert(tx.vout[0].nValue >= 0) assert tx.vout[0].nValue >= 0
block = self.build_next_block() block = self.build_next_block()
self.update_witness_block_with_transactions(block, [tx]) self.update_witness_block_with_transactions(block, [tx])
@ -1346,7 +1346,7 @@ class SegWitTest(BitcoinTestFramework):
assert_equal(raw_tx["weight"], weight) assert_equal(raw_tx["weight"], weight)
assert_equal(len(raw_tx["vin"][0]["txinwitness"]), 1) assert_equal(len(raw_tx["vin"][0]["txinwitness"]), 1)
assert_equal(raw_tx["vin"][0]["txinwitness"][0], witness_program.hex()) assert_equal(raw_tx["vin"][0]["txinwitness"][0], witness_program.hex())
assert(vsize != raw_tx["size"]) assert vsize != raw_tx["size"]
# Cleanup: mine the transactions and update utxo for next test # Cleanup: mine the transactions and update utxo for next test
self.nodes[0].generate(1) self.nodes[0].generate(1)
@ -1396,7 +1396,7 @@ class SegWitTest(BitcoinTestFramework):
self.nodes[0].generate(1) # Mine all the transactions self.nodes[0].generate(1) # Mine all the transactions
sync_blocks(self.nodes) sync_blocks(self.nodes)
assert(len(self.nodes[0].getrawmempool()) == 0) assert len(self.nodes[0].getrawmempool()) == 0
# Finally, verify that version 0 -> version 1 transactions # Finally, verify that version 0 -> version 1 transactions
# are non-standard # are non-standard
@ -1665,7 +1665,7 @@ class SegWitTest(BitcoinTestFramework):
# Create a slight bias for producing more utxos # Create a slight bias for producing more utxos
num_outputs = random.randint(1, 11) num_outputs = random.randint(1, 11)
random.shuffle(temp_utxos) random.shuffle(temp_utxos)
assert(len(temp_utxos) > num_inputs) assert len(temp_utxos) > num_inputs
tx = CTransaction() tx = CTransaction()
total_value = 0 total_value = 0
for i in range(num_inputs): for i in range(num_inputs):
@ -1926,7 +1926,7 @@ class SegWitTest(BitcoinTestFramework):
sync_blocks(self.nodes) sync_blocks(self.nodes)
# Make sure that this peer thinks segwit has activated. # Make sure that this peer thinks segwit has activated.
assert(get_bip9_status(self.nodes[2], 'segwit')['status'] == "active") assert get_bip9_status(self.nodes[2], 'segwit')['status'] == "active"
# Make sure this peer's blocks match those of node0. # Make sure this peer's blocks match those of node0.
height = self.nodes[2].getblockcount() height = self.nodes[2].getblockcount()
@ -1953,7 +1953,7 @@ class SegWitTest(BitcoinTestFramework):
extra_sigops_available = MAX_SIGOP_COST % sigops_per_script extra_sigops_available = MAX_SIGOP_COST % sigops_per_script
# We chose the number of checkmultisigs/checksigs to make this work: # We chose the number of checkmultisigs/checksigs to make this work:
assert(extra_sigops_available < 100) # steer clear of MAX_OPS_PER_SCRIPT assert extra_sigops_available < 100 # steer clear of MAX_OPS_PER_SCRIPT
# This script, when spent with the first # This script, when spent with the first
# N(=MAX_SIGOP_COST//sigops_per_script) outputs of our transaction, # N(=MAX_SIGOP_COST//sigops_per_script) outputs of our transaction,

View file

@ -114,7 +114,7 @@ class AcceptBlockTest(BitcoinTestFramework):
if x['hash'] == block_h1f.hash: if x['hash'] == block_h1f.hash:
assert_equal(x['status'], "headers-only") assert_equal(x['status'], "headers-only")
tip_entry_found = True tip_entry_found = True
assert(tip_entry_found) assert tip_entry_found
assert_raises_rpc_error(-1, "Block not found on disk", self.nodes[0].getblock, block_h1f.hash) assert_raises_rpc_error(-1, "Block not found on disk", self.nodes[0].getblock, block_h1f.hash)
# 4. Send another two block that build on the fork. # 4. Send another two block that build on the fork.
@ -131,7 +131,7 @@ class AcceptBlockTest(BitcoinTestFramework):
if x['hash'] == block_h2f.hash: if x['hash'] == block_h2f.hash:
assert_equal(x['status'], "headers-only") assert_equal(x['status'], "headers-only")
tip_entry_found = True tip_entry_found = True
assert(tip_entry_found) assert tip_entry_found
# But this block should be accepted by node since it has equal work. # But this block should be accepted by node since it has equal work.
self.nodes[0].getblock(block_h2f.hash) self.nodes[0].getblock(block_h2f.hash)
@ -150,7 +150,7 @@ class AcceptBlockTest(BitcoinTestFramework):
if x['hash'] == block_h3.hash: if x['hash'] == block_h3.hash:
assert_equal(x['status'], "headers-only") assert_equal(x['status'], "headers-only")
tip_entry_found = True tip_entry_found = True
assert(tip_entry_found) assert tip_entry_found
self.nodes[0].getblock(block_h3.hash) self.nodes[0].getblock(block_h3.hash)
# But this block should be accepted by node since it has more work. # But this block should be accepted by node since it has more work.
@ -263,7 +263,7 @@ class AcceptBlockTest(BitcoinTestFramework):
if x['hash'] == block_292.hash: if x['hash'] == block_292.hash:
assert_equal(x['status'], "headers-only") assert_equal(x['status'], "headers-only")
tip_entry_found = True tip_entry_found = True
assert(tip_entry_found) assert tip_entry_found
assert_raises_rpc_error(-1, "Block not found on disk", self.nodes[0].getblock, block_292.hash) assert_raises_rpc_error(-1, "Block not found on disk", self.nodes[0].getblock, block_292.hash)
test_node.send_message(msg_block(block_289f)) test_node.send_message(msg_block(block_289f))

View file

@ -172,9 +172,9 @@ class BlockchainTest(BitcoinTestFramework):
assert_equal(chaintxstats['txcount'], 2) assert_equal(chaintxstats['txcount'], 2)
assert_equal(chaintxstats['window_final_block_hash'], b1_hash) assert_equal(chaintxstats['window_final_block_hash'], b1_hash)
assert_equal(chaintxstats['window_block_count'], 0) assert_equal(chaintxstats['window_block_count'], 0)
assert('window_tx_count' not in chaintxstats) assert 'window_tx_count' not in chaintxstats
assert('window_interval' not in chaintxstats) assert 'window_interval' not in chaintxstats
assert('txrate' not in chaintxstats) assert 'txrate' not in chaintxstats
def _test_gettxoutsetinfo(self): def _test_gettxoutsetinfo(self):
node = self.nodes[0] node = self.nodes[0]

View file

@ -94,7 +94,7 @@ class RawTransactionsTest(BitcoinTestFramework):
rawtxfund = self.nodes[2].fundrawtransaction(rawtx) rawtxfund = self.nodes[2].fundrawtransaction(rawtx)
fee = rawtxfund['fee'] fee = rawtxfund['fee']
dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex'])
assert(len(dec_tx['vin']) > 0) #test that we have enough inputs assert len(dec_tx['vin']) > 0 #test that we have enough inputs
############################## ##############################
# simple test with two coins # # simple test with two coins #
@ -107,7 +107,7 @@ class RawTransactionsTest(BitcoinTestFramework):
rawtxfund = self.nodes[2].fundrawtransaction(rawtx) rawtxfund = self.nodes[2].fundrawtransaction(rawtx)
fee = rawtxfund['fee'] fee = rawtxfund['fee']
dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex'])
assert(len(dec_tx['vin']) > 0) #test if we have enough inputs assert len(dec_tx['vin']) > 0 #test if we have enough inputs
############################## ##############################
# simple test with two coins # # simple test with two coins #
@ -120,7 +120,7 @@ class RawTransactionsTest(BitcoinTestFramework):
rawtxfund = self.nodes[2].fundrawtransaction(rawtx) rawtxfund = self.nodes[2].fundrawtransaction(rawtx)
fee = rawtxfund['fee'] fee = rawtxfund['fee']
dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex'])
assert(len(dec_tx['vin']) > 0) assert len(dec_tx['vin']) > 0
assert_equal(dec_tx['vin'][0]['scriptSig']['hex'], '') assert_equal(dec_tx['vin'][0]['scriptSig']['hex'], '')
@ -139,7 +139,7 @@ class RawTransactionsTest(BitcoinTestFramework):
for out in dec_tx['vout']: for out in dec_tx['vout']:
totalOut += out['value'] totalOut += out['value']
assert(len(dec_tx['vin']) > 0) assert len(dec_tx['vin']) > 0
assert_equal(dec_tx['vin'][0]['scriptSig']['hex'], '') assert_equal(dec_tx['vin'][0]['scriptSig']['hex'], '')
@ -363,7 +363,7 @@ class RawTransactionsTest(BitcoinTestFramework):
#compare fee #compare fee
feeDelta = Decimal(fundedTx['fee']) - Decimal(signedFee) feeDelta = Decimal(fundedTx['fee']) - Decimal(signedFee)
assert(feeDelta >= 0 and feeDelta <= feeTolerance) assert feeDelta >= 0 and feeDelta <= feeTolerance
############################################################ ############################################################
############################################################ ############################################################
@ -378,7 +378,7 @@ class RawTransactionsTest(BitcoinTestFramework):
#compare fee #compare fee
feeDelta = Decimal(fundedTx['fee']) - Decimal(signedFee) feeDelta = Decimal(fundedTx['fee']) - Decimal(signedFee)
assert(feeDelta >= 0 and feeDelta <= feeTolerance) assert feeDelta >= 0 and feeDelta <= feeTolerance
############################################################ ############################################################
@ -405,7 +405,7 @@ class RawTransactionsTest(BitcoinTestFramework):
#compare fee #compare fee
feeDelta = Decimal(fundedTx['fee']) - Decimal(signedFee) feeDelta = Decimal(fundedTx['fee']) - Decimal(signedFee)
assert(feeDelta >= 0 and feeDelta <= feeTolerance) assert feeDelta >= 0 and feeDelta <= feeTolerance
############################################################ ############################################################
@ -438,7 +438,7 @@ class RawTransactionsTest(BitcoinTestFramework):
#compare fee #compare fee
feeDelta = Decimal(fundedTx['fee']) - Decimal(signedFee) feeDelta = Decimal(fundedTx['fee']) - Decimal(signedFee)
assert(feeDelta >= 0 and feeDelta <= feeTolerance) assert feeDelta >= 0 and feeDelta <= feeTolerance
############################################################ ############################################################
@ -558,7 +558,7 @@ class RawTransactionsTest(BitcoinTestFramework):
#compare fee #compare fee
feeDelta = Decimal(fundedTx['fee']) - Decimal(signedFee) feeDelta = Decimal(fundedTx['fee']) - Decimal(signedFee)
assert(feeDelta >= 0 and feeDelta <= feeTolerance*19) #~19 inputs assert feeDelta >= 0 and feeDelta <= feeTolerance*19 #~19 inputs
############################################# #############################################
@ -620,7 +620,7 @@ class RawTransactionsTest(BitcoinTestFramework):
assert_equal(len(res_dec["vin"]), 1) assert_equal(len(res_dec["vin"]), 1)
assert_equal(res_dec["vin"][0]["txid"], watchonly_txid) assert_equal(res_dec["vin"][0]["txid"], watchonly_txid)
assert("fee" in result.keys()) assert "fee" in result.keys()
assert_greater_than(result["changepos"], -1) assert_greater_than(result["changepos"], -1)
############################################################### ###############################################################
@ -635,16 +635,16 @@ class RawTransactionsTest(BitcoinTestFramework):
result = self.nodes[3].fundrawtransaction(rawtx, True) result = self.nodes[3].fundrawtransaction(rawtx, True)
res_dec = self.nodes[0].decoderawtransaction(result["hex"]) res_dec = self.nodes[0].decoderawtransaction(result["hex"])
assert_equal(len(res_dec["vin"]), 2) assert_equal(len(res_dec["vin"]), 2)
assert(res_dec["vin"][0]["txid"] == watchonly_txid or res_dec["vin"][1]["txid"] == watchonly_txid) assert res_dec["vin"][0]["txid"] == watchonly_txid or res_dec["vin"][1]["txid"] == watchonly_txid
assert_greater_than(result["fee"], 0) assert_greater_than(result["fee"], 0)
assert_greater_than(result["changepos"], -1) assert_greater_than(result["changepos"], -1)
assert_equal(result["fee"] + res_dec["vout"][result["changepos"]]["value"], watchonly_amount / 10) assert_equal(result["fee"] + res_dec["vout"][result["changepos"]]["value"], watchonly_amount / 10)
signedtx = self.nodes[3].signrawtransactionwithwallet(result["hex"]) signedtx = self.nodes[3].signrawtransactionwithwallet(result["hex"])
assert(not signedtx["complete"]) assert not signedtx["complete"]
signedtx = self.nodes[0].signrawtransactionwithwallet(signedtx["hex"]) signedtx = self.nodes[0].signrawtransactionwithwallet(signedtx["hex"])
assert(signedtx["complete"]) assert signedtx["complete"]
self.nodes[0].sendrawtransaction(signedtx["hex"]) self.nodes[0].sendrawtransaction(signedtx["hex"])
self.nodes[0].generate(1) self.nodes[0].generate(1)
self.sync_all() self.sync_all()
@ -676,10 +676,10 @@ class RawTransactionsTest(BitcoinTestFramework):
for out in res_dec['vout']: for out in res_dec['vout']:
if out['value'] > 1.0: if out['value'] > 1.0:
changeaddress += out['scriptPubKey']['addresses'][0] changeaddress += out['scriptPubKey']['addresses'][0]
assert(changeaddress != "") assert changeaddress != ""
nextaddr = self.nodes[3].getnewaddress() nextaddr = self.nodes[3].getnewaddress()
# Now the change address key should be removed from the keypool # Now the change address key should be removed from the keypool
assert(changeaddress != nextaddr) assert changeaddress != nextaddr
###################################### ######################################
# Test subtractFeeFromOutputs option # # Test subtractFeeFromOutputs option #

View file

@ -17,7 +17,7 @@ class NamedArgumentTest(BitcoinTestFramework):
def run_test(self): def run_test(self):
node = self.nodes[0] node = self.nodes[0]
h = node.help(command='getblockchaininfo') h = node.help(command='getblockchaininfo')
assert(h.startswith('getblockchaininfo\n')) assert h.startswith('getblockchaininfo\n')
assert_raises_rpc_error(-8, 'Unknown named parameter', node.help, random='getblockchaininfo') assert_raises_rpc_error(-8, 'Unknown named parameter', node.help, random='getblockchaininfo')

View file

@ -16,7 +16,7 @@ def unidirectional_node_sync_via_rpc(node_src, node_dest):
blockhash = node_src.getbestblockhash() blockhash = node_src.getbestblockhash()
while True: while True:
try: try:
assert(len(node_dest.getblock(blockhash, False)) > 0) assert len(node_dest.getblock(blockhash, False)) > 0
break break
except: except:
blocks_to_copy.append(blockhash) blocks_to_copy.append(blockhash)
@ -24,7 +24,7 @@ def unidirectional_node_sync_via_rpc(node_src, node_dest):
blocks_to_copy.reverse() blocks_to_copy.reverse()
for blockhash in blocks_to_copy: for blockhash in blocks_to_copy:
blockdata = node_src.getblock(blockhash, False) blockdata = node_src.getblock(blockhash, False)
assert(node_dest.submitblock(blockdata) in (None, 'inconclusive')) assert node_dest.submitblock(blockdata) in (None, 'inconclusive')
def node_sync_via_rpc(nodes): def node_sync_via_rpc(nodes):
for node_src in nodes: for node_src in nodes:
@ -57,7 +57,7 @@ class PreciousTest(BitcoinTestFramework):
self.log.info("Mine competing blocks E-F-G on Node 1") self.log.info("Mine competing blocks E-F-G on Node 1")
hashG = self.nodes[1].generatetoaddress(3, gen_address(1))[-1] hashG = self.nodes[1].generatetoaddress(3, gen_address(1))[-1]
assert_equal(self.nodes[1].getblockcount(), 5) assert_equal(self.nodes[1].getblockcount(), 5)
assert(hashC != hashG) assert hashC != hashG
self.log.info("Connect nodes and check no reorg occurs") self.log.info("Connect nodes and check no reorg occurs")
# Submit competing blocks via RPC so any reorg should occur before we proceed (no way to wait on inaction for p2p sync) # Submit competing blocks via RPC so any reorg should occur before we proceed (no way to wait on inaction for p2p sync)
node_sync_via_rpc(self.nodes[0:2]) node_sync_via_rpc(self.nodes[0:2])

View file

@ -47,11 +47,11 @@ class PSBTTest(BitcoinTestFramework):
utxos = online_node.listunspent(addresses=[offline_addr]) utxos = online_node.listunspent(addresses=[offline_addr])
raw = online_node.createrawtransaction([{"txid":utxos[0]["txid"], "vout":utxos[0]["vout"]}],[{online_addr:0.9999}]) raw = online_node.createrawtransaction([{"txid":utxos[0]["txid"], "vout":utxos[0]["vout"]}],[{online_addr:0.9999}])
psbt = online_node.walletprocesspsbt(online_node.converttopsbt(raw))["psbt"] psbt = online_node.walletprocesspsbt(online_node.converttopsbt(raw))["psbt"]
assert("non_witness_utxo" in mining_node.decodepsbt(psbt)["inputs"][0]) assert "non_witness_utxo" in mining_node.decodepsbt(psbt)["inputs"][0]
# Have the offline node sign the PSBT (which will update the UTXO to segwit) # Have the offline node sign the PSBT (which will update the UTXO to segwit)
signed_psbt = offline_node.walletprocesspsbt(psbt)["psbt"] signed_psbt = offline_node.walletprocesspsbt(psbt)["psbt"]
assert("witness_utxo" in mining_node.decodepsbt(signed_psbt)["inputs"][0]) assert "witness_utxo" in mining_node.decodepsbt(signed_psbt)["inputs"][0]
# Make sure we can mine the resulting transaction # Make sure we can mine the resulting transaction
txid = mining_node.sendrawtransaction(mining_node.finalizepsbt(signed_psbt)["hex"]) txid = mining_node.sendrawtransaction(mining_node.finalizepsbt(signed_psbt)["hex"])

View file

@ -25,18 +25,18 @@ class SignMessagesTest(BitcoinTestFramework):
expected_signature = 'INbVnW4e6PeRmsv2Qgu8NuopvrVjkcxob+sX8OcZG0SALhWybUjzMLPdAsXI46YZGb0KQTRii+wWIQzRpG/U+S0=' expected_signature = 'INbVnW4e6PeRmsv2Qgu8NuopvrVjkcxob+sX8OcZG0SALhWybUjzMLPdAsXI46YZGb0KQTRii+wWIQzRpG/U+S0='
signature = self.nodes[0].signmessagewithprivkey(priv_key, message) signature = self.nodes[0].signmessagewithprivkey(priv_key, message)
assert_equal(expected_signature, signature) assert_equal(expected_signature, signature)
assert(self.nodes[0].verifymessage(address, signature, message)) assert self.nodes[0].verifymessage(address, signature, message)
self.log.info('test signing with an address with wallet') self.log.info('test signing with an address with wallet')
address = self.nodes[0].getnewaddress() address = self.nodes[0].getnewaddress()
signature = self.nodes[0].signmessage(address, message) signature = self.nodes[0].signmessage(address, message)
assert(self.nodes[0].verifymessage(address, signature, message)) assert self.nodes[0].verifymessage(address, signature, message)
self.log.info('test verifying with another address should not work') self.log.info('test verifying with another address should not work')
other_address = self.nodes[0].getnewaddress() other_address = self.nodes[0].getnewaddress()
other_signature = self.nodes[0].signmessage(other_address, message) other_signature = self.nodes[0].signmessage(other_address, message)
assert(not self.nodes[0].verifymessage(other_address, signature, message)) assert not self.nodes[0].verifymessage(other_address, signature, message)
assert(not self.nodes[0].verifymessage(address, other_signature, message)) assert not self.nodes[0].verifymessage(address, other_signature, message)
if __name__ == '__main__': if __name__ == '__main__':
SignMessagesTest().main() SignMessagesTest().main()

View file

@ -23,7 +23,7 @@ class UptimeTest(BitcoinTestFramework):
def _test_uptime(self): def _test_uptime(self):
wait_time = 10 wait_time = 10
self.nodes[0].setmocktime(int(time.time() + wait_time)) self.nodes[0].setmocktime(int(time.time() + wait_time))
assert(self.nodes[0].uptime() >= wait_time) assert self.nodes[0].uptime() >= wait_time
if __name__ == '__main__': if __name__ == '__main__':

View file

@ -32,12 +32,12 @@ def byte_to_base58(b, version):
# TODO: def base58_decode # TODO: def base58_decode
def keyhash_to_p2pkh(hash, main = False): def keyhash_to_p2pkh(hash, main = False):
assert (len(hash) == 20) assert len(hash) == 20
version = 0 if main else 111 version = 0 if main else 111
return byte_to_base58(hash, version) return byte_to_base58(hash, version)
def scripthash_to_p2sh(hash, main = False): def scripthash_to_p2sh(hash, main = False):
assert (len(hash) == 20) assert len(hash) == 20
version = 5 if main else 196 version = 5 if main else 196
return byte_to_base58(hash, version) return byte_to_base58(hash, version)
@ -80,11 +80,11 @@ def check_key(key):
key = hex_str_to_bytes(key) # Assuming this is hex string key = hex_str_to_bytes(key) # Assuming this is hex string
if (type(key) is bytes and (len(key) == 33 or len(key) == 65)): if (type(key) is bytes and (len(key) == 33 or len(key) == 65)):
return key return key
assert(False) assert False
def check_script(script): def check_script(script):
if (type(script) is str): if (type(script) is str):
script = hex_str_to_bytes(script) # Assuming this is hex string script = hex_str_to_bytes(script) # Assuming this is hex string
if (type(script) is bytes or type(script) is CScript): if (type(script) is bytes or type(script) is CScript):
return script return script
assert(False) assert False

View file

@ -131,7 +131,7 @@ def create_tx_with_script(prevtx, n, script_sig=b"", *, amount, script_pub_key=C
Can optionally pass scriptPubKey and scriptSig, default is anyone-can-spend output. Can optionally pass scriptPubKey and scriptSig, default is anyone-can-spend output.
""" """
tx = CTransaction() tx = CTransaction()
assert(n < len(prevtx.vout)) assert n < len(prevtx.vout)
tx.vin.append(CTxIn(COutPoint(prevtx.sha256, n), script_sig, 0xffffffff)) tx.vin.append(CTxIn(COutPoint(prevtx.sha256, n), script_sig, 0xffffffff))
tx.vout.append(CTxOut(amount, script_pub_key)) tx.vout.append(CTxOut(amount, script_pub_key))
tx.calc_sha256() tx.calc_sha256()
@ -214,7 +214,7 @@ def send_to_witness(use_p2wsh, node, utxo, pubkey, encode_p2sh, amount, sign=Tru
tx_to_witness = create_witness_tx(node, use_p2wsh, utxo, pubkey, encode_p2sh, amount) tx_to_witness = create_witness_tx(node, use_p2wsh, utxo, pubkey, encode_p2sh, amount)
if (sign): if (sign):
signed = node.signrawtransactionwithwallet(tx_to_witness) signed = node.signrawtransactionwithwallet(tx_to_witness)
assert("errors" not in signed or len(["errors"]) == 0) assert "errors" not in signed or len(["errors"]) == 0
return node.sendrawtransaction(signed["hex"]) return node.sendrawtransaction(signed["hex"])
else: else:
if (insert_redeem_script): if (insert_redeem_script):

View file

@ -129,13 +129,13 @@ def addr_to_hex(addr):
if i == 0 or i == (len(addr)-1): # skip empty component at beginning or end if i == 0 or i == (len(addr)-1): # skip empty component at beginning or end
continue continue
x += 1 # :: skips to suffix x += 1 # :: skips to suffix
assert(x < 2) assert x < 2
else: # two bytes per component else: # two bytes per component
val = int(comp, 16) val = int(comp, 16)
sub[x].append(val >> 8) sub[x].append(val >> 8)
sub[x].append(val & 0xff) sub[x].append(val & 0xff)
nullbytes = 16 - len(sub[0]) - len(sub[1]) nullbytes = 16 - len(sub[0]) - len(sub[1])
assert((x == 0 and nullbytes == 0) or (x == 1 and nullbytes > 0)) assert (x == 0 and nullbytes == 0) or (x == 1 and nullbytes > 0)
addr = sub[0] + ([0] * nullbytes) + sub[1] addr = sub[0] + ([0] * nullbytes) + sub[1]
else: else:
raise ValueError('Could not parse address %s' % addr) raise ValueError('Could not parse address %s' % addr)

View file

@ -144,7 +144,7 @@ class Socks5Server():
thread.start() thread.start()
def start(self): def start(self):
assert(not self.running) assert not self.running
self.running = True self.running = True
self.thread = threading.Thread(None, self.run) self.thread = threading.Thread(None, self.run)
self.thread.daemon = True self.thread.daemon = True

View file

@ -264,7 +264,7 @@ def get_rpc_proxy(url, node_number, timeout=None, coveragedir=None):
return coverage.AuthServiceProxyWrapper(proxy, coverage_logfile) return coverage.AuthServiceProxyWrapper(proxy, coverage_logfile)
def p2p_port(n): def p2p_port(n):
assert(n <= MAX_NODES) assert n <= MAX_NODES
return PORT_MIN + n + (MAX_NODES * PortSeed.n) % (PORT_RANGE - 1 - MAX_NODES) return PORT_MIN + n + (MAX_NODES * PortSeed.n) % (PORT_RANGE - 1 - MAX_NODES)
def rpc_port(n): def rpc_port(n):
@ -422,7 +422,7 @@ def gather_inputs(from_node, amount_needed, confirmations_required=1):
""" """
Return a random set of unspent txouts that are enough to pay amount_needed Return a random set of unspent txouts that are enough to pay amount_needed
""" """
assert(confirmations_required >= 0) assert confirmations_required >= 0
utxo = from_node.listunspent(confirmations_required) utxo = from_node.listunspent(confirmations_required)
random.shuffle(utxo) random.shuffle(utxo)
inputs = [] inputs = []
@ -500,7 +500,7 @@ def create_confirmed_utxos(fee, node, count):
node.generate(1) node.generate(1)
utxos = node.listunspent() utxos = node.listunspent()
assert(len(utxos) >= count) assert len(utxos) >= count
return utxos return utxos
# Create large OP_RETURN txouts that can be appended to a transaction # Create large OP_RETURN txouts that can be appended to a transaction

View file

@ -102,62 +102,62 @@ class AddressTypeTest(BitcoinTestFramework):
def test_address(self, node, address, multisig, typ): def test_address(self, node, address, multisig, typ):
"""Run sanity checks on an address.""" """Run sanity checks on an address."""
info = self.nodes[node].getaddressinfo(address) info = self.nodes[node].getaddressinfo(address)
assert(self.nodes[node].validateaddress(address)['isvalid']) assert self.nodes[node].validateaddress(address)['isvalid']
assert_equal(info.get('solvable'), True) assert_equal(info.get('solvable'), True)
if not multisig and typ == 'legacy': if not multisig and typ == 'legacy':
# P2PKH # P2PKH
assert(not info['isscript']) assert not info['isscript']
assert(not info['iswitness']) assert not info['iswitness']
assert('pubkey' in info) assert 'pubkey' in info
elif not multisig and typ == 'p2sh-segwit': elif not multisig and typ == 'p2sh-segwit':
# P2SH-P2WPKH # P2SH-P2WPKH
assert(info['isscript']) assert info['isscript']
assert(not info['iswitness']) assert not info['iswitness']
assert_equal(info['script'], 'witness_v0_keyhash') assert_equal(info['script'], 'witness_v0_keyhash')
assert('pubkey' in info) assert 'pubkey' in info
elif not multisig and typ == 'bech32': elif not multisig and typ == 'bech32':
# P2WPKH # P2WPKH
assert(not info['isscript']) assert not info['isscript']
assert(info['iswitness']) assert info['iswitness']
assert_equal(info['witness_version'], 0) assert_equal(info['witness_version'], 0)
assert_equal(len(info['witness_program']), 40) assert_equal(len(info['witness_program']), 40)
assert('pubkey' in info) assert 'pubkey' in info
elif typ == 'legacy': elif typ == 'legacy':
# P2SH-multisig # P2SH-multisig
assert(info['isscript']) assert info['isscript']
assert_equal(info['script'], 'multisig') assert_equal(info['script'], 'multisig')
assert(not info['iswitness']) assert not info['iswitness']
assert('pubkeys' in info) assert 'pubkeys' in info
elif typ == 'p2sh-segwit': elif typ == 'p2sh-segwit':
# P2SH-P2WSH-multisig # P2SH-P2WSH-multisig
assert(info['isscript']) assert info['isscript']
assert_equal(info['script'], 'witness_v0_scripthash') assert_equal(info['script'], 'witness_v0_scripthash')
assert(not info['iswitness']) assert not info['iswitness']
assert(info['embedded']['isscript']) assert info['embedded']['isscript']
assert_equal(info['embedded']['script'], 'multisig') assert_equal(info['embedded']['script'], 'multisig')
assert(info['embedded']['iswitness']) assert info['embedded']['iswitness']
assert_equal(info['embedded']['witness_version'], 0) assert_equal(info['embedded']['witness_version'], 0)
assert_equal(len(info['embedded']['witness_program']), 64) assert_equal(len(info['embedded']['witness_program']), 64)
assert('pubkeys' in info['embedded']) assert 'pubkeys' in info['embedded']
elif typ == 'bech32': elif typ == 'bech32':
# P2WSH-multisig # P2WSH-multisig
assert(info['isscript']) assert info['isscript']
assert_equal(info['script'], 'multisig') assert_equal(info['script'], 'multisig')
assert(info['iswitness']) assert info['iswitness']
assert_equal(info['witness_version'], 0) assert_equal(info['witness_version'], 0)
assert_equal(len(info['witness_program']), 64) assert_equal(len(info['witness_program']), 64)
assert('pubkeys' in info) assert 'pubkeys' in info
else: else:
# Unknown type # Unknown type
assert(False) assert False
def test_desc(self, node, address, multisig, typ, utxo): def test_desc(self, node, address, multisig, typ, utxo):
"""Run sanity checks on a descriptor reported by getaddressinfo.""" """Run sanity checks on a descriptor reported by getaddressinfo."""
info = self.nodes[node].getaddressinfo(address) info = self.nodes[node].getaddressinfo(address)
assert('desc' in info) assert 'desc' in info
assert_equal(info['desc'], utxo['desc']) assert_equal(info['desc'], utxo['desc'])
assert(self.nodes[node].validateaddress(address)['isvalid']) assert self.nodes[node].validateaddress(address)['isvalid']
# Use a ridiculously roundabout way to find the key origin info through # Use a ridiculously roundabout way to find the key origin info through
# the PSBT logic. However, this does test consistency between the PSBT reported # the PSBT logic. However, this does test consistency between the PSBT reported
@ -172,11 +172,11 @@ class AddressTypeTest(BitcoinTestFramework):
key_descs[deriv['pubkey']] = '[' + deriv['master_fingerprint'] + deriv['path'][1:] + ']' + deriv['pubkey'] key_descs[deriv['pubkey']] = '[' + deriv['master_fingerprint'] + deriv['path'][1:] + ']' + deriv['pubkey']
# Verify the descriptor checksum against the Python implementation # Verify the descriptor checksum against the Python implementation
assert(descsum_check(info['desc'])) assert descsum_check(info['desc'])
# Verify that stripping the checksum and recreating it using Python roundtrips # Verify that stripping the checksum and recreating it using Python roundtrips
assert(info['desc'] == descsum_create(info['desc'][:-9])) assert info['desc'] == descsum_create(info['desc'][:-9])
# Verify that stripping the checksum and feeding it to getdescriptorinfo roundtrips # Verify that stripping the checksum and feeding it to getdescriptorinfo roundtrips
assert(info['desc'] == self.nodes[0].getdescriptorinfo(info['desc'][:-9])['descriptor']) assert info['desc'] == self.nodes[0].getdescriptorinfo(info['desc'][:-9])['descriptor']
if not multisig and typ == 'legacy': if not multisig and typ == 'legacy':
# P2PKH # P2PKH
@ -198,7 +198,7 @@ class AddressTypeTest(BitcoinTestFramework):
assert_equal(info['desc'], descsum_create("wsh(multi(2,%s,%s))" % (key_descs[info['pubkeys'][0]], key_descs[info['pubkeys'][1]]))) assert_equal(info['desc'], descsum_create("wsh(multi(2,%s,%s))" % (key_descs[info['pubkeys'][0]], key_descs[info['pubkeys'][1]])))
else: else:
# Unknown type # Unknown type
assert(False) assert False
def test_change_output_type(self, node_sender, destinations, expected_type): def test_change_output_type(self, node_sender, destinations, expected_type):
txid = self.nodes[node_sender].sendmany(dummy="", amounts=dict.fromkeys(destinations, 0.001)) txid = self.nodes[node_sender].sendmany(dummy="", amounts=dict.fromkeys(destinations, 0.001))

View file

@ -40,8 +40,8 @@ class CreateWalletTest(BitcoinTestFramework):
privkey = w0.dumpprivkey(addr) privkey = w0.dumpprivkey(addr)
assert_raises_rpc_error(-4, 'Cannot import private keys to a wallet with private keys disabled', w1.importprivkey, privkey) assert_raises_rpc_error(-4, 'Cannot import private keys to a wallet with private keys disabled', w1.importprivkey, privkey)
result = w1.importmulti([{'scriptPubKey': {'address': addr}, 'timestamp': 'now', 'keys': [privkey]}]) result = w1.importmulti([{'scriptPubKey': {'address': addr}, 'timestamp': 'now', 'keys': [privkey]}])
assert(not result[0]['success']) assert not result[0]['success']
assert('warning' not in result[0]) assert 'warning' not in result[0]
assert_equal(result[0]['error']['code'], -4) assert_equal(result[0]['error']['code'], -4)
assert_equal(result[0]['error']['message'], 'Cannot import private keys to a wallet with private keys disabled') assert_equal(result[0]['error']['message'], 'Cannot import private keys to a wallet with private keys disabled')

View file

@ -21,9 +21,9 @@ class DisableWalletTest (BitcoinTestFramework):
# Make sure wallet is really disabled # Make sure wallet is really disabled
assert_raises_rpc_error(-32601, 'Method not found', self.nodes[0].getwalletinfo) assert_raises_rpc_error(-32601, 'Method not found', self.nodes[0].getwalletinfo)
x = self.nodes[0].validateaddress('3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy') x = self.nodes[0].validateaddress('3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy')
assert(x['isvalid'] == False) assert x['isvalid'] == False
x = self.nodes[0].validateaddress('mneYUmWYsuk7kySiURxCi3AGxrAqZxLgPZ') x = self.nodes[0].validateaddress('mneYUmWYsuk7kySiURxCi3AGxrAqZxLgPZ')
assert(x['isvalid'] == True) assert x['isvalid'] == True
# Checking mining to an address without a wallet. Generating to a valid address should succeed # Checking mining to an address without a wallet. Generating to a valid address should succeed
# but generating to an invalid address will fail. # but generating to an invalid address will fail.

View file

@ -46,10 +46,10 @@ def read_dump(file_name, addrs, script_addrs, hd_master_addr_old):
keypath = None keypath = None
if keytype == "inactivehdseed=1": if keytype == "inactivehdseed=1":
# ensure the old master is still available # ensure the old master is still available
assert (hd_master_addr_old == addr) assert hd_master_addr_old == addr
elif keytype == "hdseed=1": elif keytype == "hdseed=1":
# ensure we have generated a new hd master key # ensure we have generated a new hd master key
assert (hd_master_addr_old != addr) assert hd_master_addr_old != addr
hd_master_addr_ret = addr hd_master_addr_ret = addr
elif keytype == "script=1": elif keytype == "script=1":
# scripts don't have keypaths # scripts don't have keypaths

View file

@ -21,7 +21,7 @@ class KeyPoolTest(BitcoinTestFramework):
addr_before_encrypting = nodes[0].getnewaddress() addr_before_encrypting = nodes[0].getnewaddress()
addr_before_encrypting_data = nodes[0].getaddressinfo(addr_before_encrypting) addr_before_encrypting_data = nodes[0].getaddressinfo(addr_before_encrypting)
wallet_info_old = nodes[0].getwalletinfo() wallet_info_old = nodes[0].getwalletinfo()
assert(addr_before_encrypting_data['hdseedid'] == wallet_info_old['hdseedid']) assert addr_before_encrypting_data['hdseedid'] == wallet_info_old['hdseedid']
# Encrypt wallet and wait to terminate # Encrypt wallet and wait to terminate
nodes[0].encryptwallet('test') nodes[0].encryptwallet('test')
@ -29,8 +29,8 @@ class KeyPoolTest(BitcoinTestFramework):
addr = nodes[0].getnewaddress() addr = nodes[0].getnewaddress()
addr_data = nodes[0].getaddressinfo(addr) addr_data = nodes[0].getaddressinfo(addr)
wallet_info = nodes[0].getwalletinfo() wallet_info = nodes[0].getwalletinfo()
assert(addr_before_encrypting_data['hdseedid'] != wallet_info['hdseedid']) assert addr_before_encrypting_data['hdseedid'] != wallet_info['hdseedid']
assert(addr_data['hdseedid'] == wallet_info['hdseedid']) assert addr_data['hdseedid'] == wallet_info['hdseedid']
assert_raises_rpc_error(-12, "Error: Keypool ran out, please call keypoolrefill first", nodes[0].getnewaddress) assert_raises_rpc_error(-12, "Error: Keypool ran out, please call keypoolrefill first", nodes[0].getnewaddress)
# put six (plus 2) new keys in the keypool (100% external-, +100% internal-keys, 1 in min) # put six (plus 2) new keys in the keypool (100% external-, +100% internal-keys, 1 in min)
@ -59,7 +59,7 @@ class KeyPoolTest(BitcoinTestFramework):
addr.add(nodes[0].getnewaddress()) addr.add(nodes[0].getnewaddress())
addr.add(nodes[0].getnewaddress()) addr.add(nodes[0].getnewaddress())
addr.add(nodes[0].getnewaddress()) addr.add(nodes[0].getnewaddress())
assert(len(addr) == 6) assert len(addr) == 6
# the next one should fail # the next one should fail
assert_raises_rpc_error(-12, "Error: Keypool ran out, please call keypoolrefill first", nodes[0].getnewaddress) assert_raises_rpc_error(-12, "Error: Keypool ran out, please call keypoolrefill first", nodes[0].getnewaddress)

View file

@ -55,11 +55,11 @@ class KeypoolRestoreTest(BitcoinTestFramework):
# Make sure we're creating the outputs we expect # Make sure we're creating the outputs we expect
address_details = self.nodes[idx].validateaddress(addr_extpool) address_details = self.nodes[idx].validateaddress(addr_extpool)
if i == 0: if i == 0:
assert(not address_details["isscript"] and not address_details["iswitness"]) assert not address_details["isscript"] and not address_details["iswitness"]
elif i == 1: elif i == 1:
assert(address_details["isscript"] and not address_details["iswitness"]) assert address_details["isscript"] and not address_details["iswitness"]
else: else:
assert(not address_details["isscript"] and address_details["iswitness"]) assert not address_details["isscript"] and address_details["iswitness"]
self.log.info("Send funds to wallet") self.log.info("Send funds to wallet")

View file

@ -125,7 +125,7 @@ class ListTransactionsTest(BitcoinTestFramework):
# 1. Chain a few transactions that don't opt-in. # 1. Chain a few transactions that don't opt-in.
txid_1 = self.nodes[0].sendtoaddress(self.nodes[1].getnewaddress(), 1) txid_1 = self.nodes[0].sendtoaddress(self.nodes[1].getnewaddress(), 1)
assert(not is_opt_in(self.nodes[0], txid_1)) assert not is_opt_in(self.nodes[0], txid_1)
assert_array_result(self.nodes[0].listtransactions(), {"txid": txid_1}, {"bip125-replaceable": "no"}) assert_array_result(self.nodes[0].listtransactions(), {"txid": txid_1}, {"bip125-replaceable": "no"})
sync_mempools(self.nodes) sync_mempools(self.nodes)
assert_array_result(self.nodes[1].listtransactions(), {"txid": txid_1}, {"bip125-replaceable": "no"}) assert_array_result(self.nodes[1].listtransactions(), {"txid": txid_1}, {"bip125-replaceable": "no"})
@ -145,7 +145,7 @@ class ListTransactionsTest(BitcoinTestFramework):
txid_2 = self.nodes[1].sendrawtransaction(tx2_signed) txid_2 = self.nodes[1].sendrawtransaction(tx2_signed)
# ...and check the result # ...and check the result
assert(not is_opt_in(self.nodes[1], txid_2)) assert not is_opt_in(self.nodes[1], txid_2)
assert_array_result(self.nodes[1].listtransactions(), {"txid": txid_2}, {"bip125-replaceable": "no"}) assert_array_result(self.nodes[1].listtransactions(), {"txid": txid_2}, {"bip125-replaceable": "no"})
sync_mempools(self.nodes) sync_mempools(self.nodes)
assert_array_result(self.nodes[0].listtransactions(), {"txid": txid_2}, {"bip125-replaceable": "no"}) assert_array_result(self.nodes[0].listtransactions(), {"txid": txid_2}, {"bip125-replaceable": "no"})
@ -161,7 +161,7 @@ class ListTransactionsTest(BitcoinTestFramework):
tx3_signed = self.nodes[0].signrawtransactionwithwallet(tx3)['hex'] tx3_signed = self.nodes[0].signrawtransactionwithwallet(tx3)['hex']
txid_3 = self.nodes[0].sendrawtransaction(tx3_signed) txid_3 = self.nodes[0].sendrawtransaction(tx3_signed)
assert(is_opt_in(self.nodes[0], txid_3)) assert is_opt_in(self.nodes[0], txid_3)
assert_array_result(self.nodes[0].listtransactions(), {"txid": txid_3}, {"bip125-replaceable": "yes"}) assert_array_result(self.nodes[0].listtransactions(), {"txid": txid_3}, {"bip125-replaceable": "yes"})
sync_mempools(self.nodes) sync_mempools(self.nodes)
assert_array_result(self.nodes[1].listtransactions(), {"txid": txid_3}, {"bip125-replaceable": "yes"}) assert_array_result(self.nodes[1].listtransactions(), {"txid": txid_3}, {"bip125-replaceable": "yes"})
@ -175,7 +175,7 @@ class ListTransactionsTest(BitcoinTestFramework):
tx4_signed = self.nodes[1].signrawtransactionwithwallet(tx4)["hex"] tx4_signed = self.nodes[1].signrawtransactionwithwallet(tx4)["hex"]
txid_4 = self.nodes[1].sendrawtransaction(tx4_signed) txid_4 = self.nodes[1].sendrawtransaction(tx4_signed)
assert(not is_opt_in(self.nodes[1], txid_4)) assert not is_opt_in(self.nodes[1], txid_4)
assert_array_result(self.nodes[1].listtransactions(), {"txid": txid_4}, {"bip125-replaceable": "yes"}) assert_array_result(self.nodes[1].listtransactions(), {"txid": txid_4}, {"bip125-replaceable": "yes"})
sync_mempools(self.nodes) sync_mempools(self.nodes)
assert_array_result(self.nodes[0].listtransactions(), {"txid": txid_4}, {"bip125-replaceable": "yes"}) assert_array_result(self.nodes[0].listtransactions(), {"txid": txid_4}, {"bip125-replaceable": "yes"})
@ -186,7 +186,7 @@ class ListTransactionsTest(BitcoinTestFramework):
tx3_b = tx3_b.serialize().hex() tx3_b = tx3_b.serialize().hex()
tx3_b_signed = self.nodes[0].signrawtransactionwithwallet(tx3_b)['hex'] tx3_b_signed = self.nodes[0].signrawtransactionwithwallet(tx3_b)['hex']
txid_3b = self.nodes[0].sendrawtransaction(tx3_b_signed, True) txid_3b = self.nodes[0].sendrawtransaction(tx3_b_signed, True)
assert(is_opt_in(self.nodes[0], txid_3b)) assert is_opt_in(self.nodes[0], txid_3b)
assert_array_result(self.nodes[0].listtransactions(), {"txid": txid_4}, {"bip125-replaceable": "unknown"}) assert_array_result(self.nodes[0].listtransactions(), {"txid": txid_4}, {"bip125-replaceable": "unknown"})
sync_mempools(self.nodes) sync_mempools(self.nodes)
@ -202,7 +202,7 @@ class ListTransactionsTest(BitcoinTestFramework):
# After mining a transaction, it's no longer BIP125-replaceable # After mining a transaction, it's no longer BIP125-replaceable
self.nodes[0].generate(1) self.nodes[0].generate(1)
assert(txid_3b not in self.nodes[0].getrawmempool()) assert txid_3b not in self.nodes[0].getrawmempool()
assert_equal(self.nodes[0].gettransaction(txid_3b)["bip125-replaceable"], "no") assert_equal(self.nodes[0].gettransaction(txid_3b)["bip125-replaceable"], "no")
assert_equal(self.nodes[0].gettransaction(txid_4)["bip125-replaceable"], "unknown") assert_equal(self.nodes[0].gettransaction(txid_4)["bip125-replaceable"], "unknown")

View file

@ -39,7 +39,7 @@ def parse_function_calls(function_name, source_code):
>>> len(parse_function_calls("foo", "#define FOO foo();")) >>> len(parse_function_calls("foo", "#define FOO foo();"))
0 0
""" """
assert(type(function_name) is str and type(source_code) is str and function_name) assert type(function_name) is str and type(source_code) is str and function_name
lines = [re.sub("// .*", " ", line).strip() lines = [re.sub("// .*", " ", line).strip()
for line in source_code.split("\n") for line in source_code.split("\n")
if not line.strip().startswith("#")] if not line.strip().startswith("#")]
@ -53,7 +53,7 @@ def normalize(s):
>>> normalize(" /* nothing */ foo\tfoo /* bar */ foo ") >>> normalize(" /* nothing */ foo\tfoo /* bar */ foo ")
'foo foo foo' 'foo foo foo'
""" """
assert(type(s) is str) assert type(s) is str
s = s.replace("\n", " ") s = s.replace("\n", " ")
s = s.replace("\t", " ") s = s.replace("\t", " ")
s = re.sub("/\*.*?\*/", " ", s) s = re.sub("/\*.*?\*/", " ", s)
@ -77,7 +77,7 @@ def escape(s):
>>> escape(r'foo \\t foo \\n foo \\\\ foo \\ foo \\"bar\\"') >>> escape(r'foo \\t foo \\n foo \\\\ foo \\ foo \\"bar\\"')
'foo [escaped-tab] foo [escaped-newline] foo \\\\\\\\ foo \\\\ foo [escaped-quote]bar[escaped-quote]' 'foo [escaped-tab] foo [escaped-newline] foo \\\\\\\\ foo \\\\ foo [escaped-quote]bar[escaped-quote]'
""" """
assert(type(s) is str) assert type(s) is str
for raw_value, escaped_value in ESCAPE_MAP.items(): for raw_value, escaped_value in ESCAPE_MAP.items():
s = s.replace(raw_value, escaped_value) s = s.replace(raw_value, escaped_value)
return s return s
@ -92,7 +92,7 @@ def unescape(s):
>>> unescape("foo [escaped-tab] foo [escaped-newline] foo \\\\\\\\ foo \\\\ foo [escaped-quote]bar[escaped-quote]") >>> unescape("foo [escaped-tab] foo [escaped-newline] foo \\\\\\\\ foo \\\\ foo [escaped-quote]bar[escaped-quote]")
'foo \\\\t foo \\\\n foo \\\\\\\\ foo \\\\ foo \\\\"bar\\\\"' 'foo \\\\t foo \\\\n foo \\\\\\\\ foo \\\\ foo \\\\"bar\\\\"'
""" """
assert(type(s) is str) assert type(s) is str
for raw_value, escaped_value in ESCAPE_MAP.items(): for raw_value, escaped_value in ESCAPE_MAP.items():
s = s.replace(escaped_value, raw_value) s = s.replace(escaped_value, raw_value)
return s return s
@ -151,10 +151,10 @@ def parse_function_call_and_arguments(function_name, function_call):
>>> parse_function_call_and_arguments("strprintf", 'strprintf("%s (%d)", foo>foo<1,2>(1,2),err)'); >>> parse_function_call_and_arguments("strprintf", 'strprintf("%s (%d)", foo>foo<1,2>(1,2),err)');
['strprintf(', '"%s (%d)",', ' foo>foo<1,2>(1,2),', 'err', ')'] ['strprintf(', '"%s (%d)",', ' foo>foo<1,2>(1,2),', 'err', ')']
""" """
assert(type(function_name) is str and type(function_call) is str and function_name) assert type(function_name) is str and type(function_call) is str and function_name
remaining = normalize(escape(function_call)) remaining = normalize(escape(function_call))
expected_function_call = "{}(".format(function_name) expected_function_call = "{}(".format(function_name)
assert(remaining.startswith(expected_function_call)) assert remaining.startswith(expected_function_call)
parts = [expected_function_call] parts = [expected_function_call]
remaining = remaining[len(expected_function_call):] remaining = remaining[len(expected_function_call):]
open_parentheses = 1 open_parentheses = 1
@ -213,7 +213,7 @@ def parse_string_content(argument):
>>> parse_string_content('1 2 3') >>> parse_string_content('1 2 3')
'' ''
""" """
assert(type(argument) is str) assert type(argument) is str
string_content = "" string_content = ""
in_string = False in_string = False
for char in normalize(escape(argument)): for char in normalize(escape(argument)):
@ -240,7 +240,7 @@ def count_format_specifiers(format_string):
>>> count_format_specifiers("foo %d bar %i foo %% foo %*d foo") >>> count_format_specifiers("foo %d bar %i foo %% foo %*d foo")
4 4
""" """
assert(type(format_string) is str) assert type(format_string) is str
format_string = format_string.replace('%%', 'X') format_string = format_string.replace('%%', 'X')
n = 0 n = 0
in_specifier = False in_specifier = False