Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tests: Handle ImportError explicitly, improve comparisons against None #14903

Merged
merged 4 commits into from Dec 13, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion contrib/devtools/clang-format-diff.py
Expand Up @@ -109,7 +109,7 @@ def main():
match = re.search('^\+\+\+\ (.*?/){%s}(\S*)' % args.p, line)
if match:
filename = match.group(2)
if filename == None:
if filename is None:
continue

if args.regex is not None:
Expand Down
2 changes: 1 addition & 1 deletion contrib/devtools/copyright_header.py
Expand Up @@ -491,7 +491,7 @@ def get_git_change_year_range(filename):

def file_already_has_core_copyright(file_lines):
index, _ = get_updatable_copyright_line(file_lines)
return index != None
return index is not None

################################################################################
# insert header execution
Expand Down
2 changes: 1 addition & 1 deletion contrib/devtools/github-merge.py
Expand Up @@ -25,7 +25,7 @@
import codecs
try:
from urllib.request import Request,urlopen
except:
except ImportError:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This exception handling is a vestige from when github-merge.py supported Python 2 and Python 3. We only support Python 3 now so we should be able to remove it entirely and just import from urllib.request.

from urllib2 import Request,urlopen

# External tools (can be overridden using environment)
Expand Down
2 changes: 1 addition & 1 deletion contrib/devtools/update-translations.py
Expand Up @@ -125,7 +125,7 @@ def escape_cdata(text):
return text

def contains_bitcoin_addr(text, errors):
if text != None and ADDRESS_REGEXP.search(text) != None:
if text is not None and ADDRESS_REGEXP.search(text) is not None:
errors.append('Translation "%s" contains a bitcoin address. This will be removed.' % (text))
return True
return False
Expand Down
12 changes: 6 additions & 6 deletions test/functional/interface_http.py
Expand Up @@ -31,13 +31,13 @@ def run_test(self):
conn.request('POST', '/', '{"method": "getbestblockhash"}', headers)
out1 = conn.getresponse().read()
assert(b'"error":null' in out1)
assert(conn.sock!=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
conn.request('POST', '/', '{"method": "getchaintips"}', headers)
out1 = conn.getresponse().read()
assert(b'"error":null' in out1) #must also response with a correct json-rpc message
assert(conn.sock!=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()

#same should be if we add keep-alive because this should be the std. behaviour
Expand All @@ -48,13 +48,13 @@ def run_test(self):
conn.request('POST', '/', '{"method": "getbestblockhash"}', headers)
out1 = conn.getresponse().read()
assert(b'"error":null' in out1)
assert(conn.sock!=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
conn.request('POST', '/', '{"method": "getchaintips"}', headers)
out1 = conn.getresponse().read()
assert(b'"error":null' in out1) #must also response with a correct json-rpc message
assert(conn.sock!=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()

#now do the same with "Connection: close"
Expand All @@ -65,7 +65,7 @@ def run_test(self):
conn.request('POST', '/', '{"method": "getbestblockhash"}', headers)
out1 = conn.getresponse().read()
assert(b'"error":null' in out1)
assert(conn.sock==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
urlNode1 = urllib.parse.urlparse(self.nodes[1].url)
Expand All @@ -88,7 +88,7 @@ def run_test(self):
conn.request('POST', '/', '{"method": "getbestblockhash"}', headers)
out1 = conn.getresponse().read()
assert(b'"error":null' in out1)
assert(conn.sock!=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
conn = http.client.HTTPConnection(urlNode2.hostname, urlNode2.port)
Expand Down
2 changes: 1 addition & 1 deletion test/functional/mining_prioritisetransaction.py
Expand Up @@ -84,7 +84,7 @@ def run_test(self):
high_fee_tx = x

# Something high-fee should have been mined!
assert(high_fee_tx != None)
assert(high_fee_tx is not None)

# Add a prioritisation before a tx is in the mempool (de-prioritising a
# high-fee transaction so that it's now low fee).
Expand Down
8 changes: 4 additions & 4 deletions test/functional/test_framework/messages.py
Expand Up @@ -764,7 +764,7 @@ def __init__(self, p2pheaders_and_shortids = None):
self.prefilled_txn = []
self.use_witness = False

if p2pheaders_and_shortids != None:
if p2pheaders_and_shortids is not None:
self.header = p2pheaders_and_shortids.header
self.nonce = p2pheaders_and_shortids.nonce
self.shortids = p2pheaders_and_shortids.shortids
Expand Down Expand Up @@ -822,7 +822,7 @@ class BlockTransactionsRequest:

def __init__(self, blockhash=0, indexes = None):
self.blockhash = blockhash
self.indexes = indexes if indexes != None else []
self.indexes = indexes if indexes is not None else []

def deserialize(self, f):
self.blockhash = deser_uint256(f)
Expand Down Expand Up @@ -863,7 +863,7 @@ class BlockTransactions:

def __init__(self, blockhash=0, transactions = None):
self.blockhash = blockhash
self.transactions = transactions if transactions != None else []
self.transactions = transactions if transactions is not None else []

def deserialize(self, f):
self.blockhash = deser_uint256(f)
Expand Down Expand Up @@ -1052,7 +1052,7 @@ class msg_getdata:
command = b"getdata"

def __init__(self, inv=None):
self.inv = inv if inv != None else []
self.inv = inv if inv is not None else []

def deserialize(self, f):
self.inv = deser_vector(f, CInv)
Expand Down
2 changes: 1 addition & 1 deletion test/functional/test_framework/test_node.py
Expand Up @@ -68,7 +68,7 @@ def __init__(self, i, datadir, *, rpchost, timewait, bitcoind, bitcoin_cli, mock
self.rpc_timeout = timewait
self.binary = bitcoind
self.coverage_dir = coverage_dir
if extra_conf != None:
if extra_conf is not None:
append_config(datadir, extra_conf)
# Most callers will just need to add extra args to the standard list below.
# For those callers that need more flexibility, they can just set the args property directly.
Expand Down
3 changes: 2 additions & 1 deletion test/lint/lint-python.sh
Expand Up @@ -36,6 +36,7 @@ export LC_ALL=C
# E701 multiple statements on one line (colon)
# E702 multiple statements on one line (semicolon)
# E703 statement ends with a semicolon
# E711 comparison to None should be 'if cond is None:'
# E714 test for object identity should be "is not"
# E721 do not compare types, use "isinstance()"
# E741 do not use variables named "l", "O", or "I"
Expand Down Expand Up @@ -87,4 +88,4 @@ elif PYTHONWARNINGS="ignore" flake8 --version | grep -q "Python 2"; then
exit 0
fi

PYTHONWARNINGS="ignore" flake8 --ignore=B,C,E,F,I,N,W --select=E101,E112,E113,E115,E116,E125,E129,E131,E133,E223,E224,E242,E266,E271,E272,E273,E274,E275,E304,E306,E401,E402,E502,E701,E702,E703,E714,E721,E741,E742,E743,E901,E902,F401,F402,F403,F404,F405,F406,F407,F601,F602,F621,F622,F631,F701,F702,F703,F704,F705,F706,F707,F811,F812,F821,F822,F823,F831,F841,W191,W291,W292,W293,W504,W601,W602,W603,W604,W605,W606 "${@:-.}"
PYTHONWARNINGS="ignore" flake8 --ignore=B,C,E,F,I,N,W --select=E101,E112,E113,E115,E116,E125,E129,E131,E133,E223,E224,E242,E266,E271,E272,E273,E274,E275,E304,E306,E401,E402,E502,E701,E702,E703,E711,E714,E721,E741,E742,E743,E901,E902,F401,F402,F403,F404,F405,F406,F407,F601,F602,F621,F622,F631,F701,F702,F703,F704,F705,F706,F707,F811,F812,F821,F822,F823,F831,F841,W191,W291,W292,W293,W504,W601,W602,W603,W604,W605,W606 "${@:-.}"