mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-22 06:52:36 +01:00
Merge #14365: tests: Add Python dead code linter (vulture) to Travis
c82190cdb6
tests: Add Python dead code linter (vulture) (practicalswift)590a57fdec
tests: Remove unused testing code (practicalswift) Pull request description: Add Python dead code linter (`vulture`) to Travis. Rationale for allowing dead code only after explicit opt-in (via `--ignore-names`): * Less is more :-) * Unused code is by definition "untested" * Unused code can be an indication of bugs/logical errors. By making the contributor aware of newly introduced unused code it gives him/her an opportunity to investigate if the unused code they introduce is malignant or benign :-) * Unused code is hard to spot for humans and is thus often missed during manual review * [YAGNI](https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it) Based on #14312 to make linter job pass. Tree-SHA512: 4c581df7c34986e226e4ade479e0d3c549daf38f4a4dc4564b25564d63e773a1830ba55d1289c771b1fa325483e8855b82b56e61859fe8e4b7dfa54034b093b6
This commit is contained in:
commit
d26d15c6c8
8 changed files with 26 additions and 14 deletions
|
@ -8,3 +8,4 @@ export LC_ALL=C
|
||||||
|
|
||||||
travis_retry pip install codespell==1.13.0
|
travis_retry pip install codespell==1.13.0
|
||||||
travis_retry pip install flake8==3.5.0
|
travis_retry pip install flake8==3.5.0
|
||||||
|
travis_retry pip install vulture==0.29
|
||||||
|
|
|
@ -25,7 +25,6 @@ CLTV_HEIGHT = 1351
|
||||||
|
|
||||||
# Reject codes that we might receive in this test
|
# Reject codes that we might receive in this test
|
||||||
REJECT_INVALID = 16
|
REJECT_INVALID = 16
|
||||||
REJECT_OBSOLETE = 17
|
|
||||||
REJECT_NONSTANDARD = 64
|
REJECT_NONSTANDARD = 64
|
||||||
|
|
||||||
def cltv_invalidate(tx):
|
def cltv_invalidate(tx):
|
||||||
|
|
|
@ -22,7 +22,6 @@ DERSIG_HEIGHT = 1251
|
||||||
|
|
||||||
# Reject codes that we might receive in this test
|
# Reject codes that we might receive in this test
|
||||||
REJECT_INVALID = 16
|
REJECT_INVALID = 16
|
||||||
REJECT_OBSOLETE = 17
|
|
||||||
REJECT_NONSTANDARD = 64
|
REJECT_NONSTANDARD = 64
|
||||||
|
|
||||||
# A canonical signature consists of:
|
# A canonical signature consists of:
|
||||||
|
|
|
@ -35,7 +35,6 @@ MY_VERSION = 70014 # past bip-31 for ping/pong
|
||||||
MY_SUBVERSION = b"/python-mininode-tester:0.0.3/"
|
MY_SUBVERSION = b"/python-mininode-tester:0.0.3/"
|
||||||
MY_RELAY = 1 # from version 70001 onwards, fRelay should be appended to version messages (BIP37)
|
MY_RELAY = 1 # from version 70001 onwards, fRelay should be appended to version messages (BIP37)
|
||||||
|
|
||||||
MAX_INV_SZ = 50000
|
|
||||||
MAX_LOCATOR_SZ = 101
|
MAX_LOCATOR_SZ = 101
|
||||||
MAX_BLOCK_BASE_SIZE = 1000000
|
MAX_BLOCK_BASE_SIZE = 1000000
|
||||||
|
|
||||||
|
@ -58,9 +57,6 @@ MSG_TYPE_MASK = 0xffffffff >> 2
|
||||||
def sha256(s):
|
def sha256(s):
|
||||||
return hashlib.new('sha256', s).digest()
|
return hashlib.new('sha256', s).digest()
|
||||||
|
|
||||||
def ripemd160(s):
|
|
||||||
return hashlib.new('ripemd160', s).digest()
|
|
||||||
|
|
||||||
def hash256(s):
|
def hash256(s):
|
||||||
return sha256(sha256(s))
|
return sha256(sha256(s))
|
||||||
|
|
||||||
|
@ -887,13 +883,12 @@ class BlockTransactions:
|
||||||
|
|
||||||
|
|
||||||
class CPartialMerkleTree:
|
class CPartialMerkleTree:
|
||||||
__slots__ = ("fBad", "nTransactions", "vBits", "vHash")
|
__slots__ = ("nTransactions", "vBits", "vHash")
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.nTransactions = 0
|
self.nTransactions = 0
|
||||||
self.vHash = []
|
self.vHash = []
|
||||||
self.vBits = []
|
self.vBits = []
|
||||||
self.fBad = False
|
|
||||||
|
|
||||||
def deserialize(self, f):
|
def deserialize(self, f):
|
||||||
self.nTransactions = struct.unpack("<i", f.read(4))[0]
|
self.nTransactions = struct.unpack("<i", f.read(4))[0]
|
||||||
|
|
|
@ -349,7 +349,7 @@ class P2PInterface(P2PConnection):
|
||||||
self.send_message(msg_pong(message.nonce))
|
self.send_message(msg_pong(message.nonce))
|
||||||
|
|
||||||
def on_verack(self, message):
|
def on_verack(self, message):
|
||||||
self.verack_received = True
|
pass
|
||||||
|
|
||||||
def on_version(self, message):
|
def on_version(self, message):
|
||||||
assert message.nVersion >= MIN_VERSION_SUPPORTED, "Version {} received. Test framework only supports versions greater than {}".format(message.nVersion, MIN_VERSION_SUPPORTED)
|
assert message.nVersion >= MIN_VERSION_SUPPORTED, "Version {} received. Test framework only supports versions greater than {}".format(message.nVersion, MIN_VERSION_SUPPORTED)
|
||||||
|
|
|
@ -54,10 +54,9 @@ class Socks5Command():
|
||||||
return 'Socks5Command(%s,%s,%s,%s,%s,%s)' % (self.cmd, self.atyp, self.addr, self.port, self.username, self.password)
|
return 'Socks5Command(%s,%s,%s,%s,%s,%s)' % (self.cmd, self.atyp, self.addr, self.port, self.username, self.password)
|
||||||
|
|
||||||
class Socks5Connection():
|
class Socks5Connection():
|
||||||
def __init__(self, serv, conn, peer):
|
def __init__(self, serv, conn):
|
||||||
self.serv = serv
|
self.serv = serv
|
||||||
self.conn = conn
|
self.conn = conn
|
||||||
self.peer = peer
|
|
||||||
|
|
||||||
def handle(self):
|
def handle(self):
|
||||||
"""Handle socks5 request according to RFC192."""
|
"""Handle socks5 request according to RFC192."""
|
||||||
|
@ -137,9 +136,9 @@ class Socks5Server():
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
while self.running:
|
while self.running:
|
||||||
(sockconn, peer) = self.s.accept()
|
(sockconn, _) = self.s.accept()
|
||||||
if self.running:
|
if self.running:
|
||||||
conn = Socks5Connection(self, sockconn, peer)
|
conn = Socks5Connection(self, sockconn)
|
||||||
thread = threading.Thread(None, conn.handle)
|
thread = threading.Thread(None, conn.handle)
|
||||||
thread.daemon = True
|
thread.daemon = True
|
||||||
thread.start()
|
thread.start()
|
||||||
|
|
|
@ -635,7 +635,7 @@ class RPCCoverage():
|
||||||
with open(coverage_ref_filename, 'r', encoding="utf8") as coverage_ref_file:
|
with open(coverage_ref_filename, 'r', encoding="utf8") as coverage_ref_file:
|
||||||
all_cmds.update([line.strip() for line in coverage_ref_file.readlines()])
|
all_cmds.update([line.strip() for line in coverage_ref_file.readlines()])
|
||||||
|
|
||||||
for root, dirs, files in os.walk(self.dir):
|
for root, _, files in os.walk(self.dir):
|
||||||
for filename in files:
|
for filename in files:
|
||||||
if filename.startswith(coverage_file_prefix):
|
if filename.startswith(coverage_file_prefix):
|
||||||
coverage_filenames.add(os.path.join(root, filename))
|
coverage_filenames.add(os.path.join(root, filename))
|
||||||
|
|
19
test/lint/lint-python-dead-code.sh
Executable file
19
test/lint/lint-python-dead-code.sh
Executable file
|
@ -0,0 +1,19 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright (c) 2018 The Bitcoin Core developers
|
||||||
|
# Distributed under the MIT software license, see the accompanying
|
||||||
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
#
|
||||||
|
# Find dead Python code.
|
||||||
|
|
||||||
|
export LC_ALL=C
|
||||||
|
|
||||||
|
if ! command -v vulture > /dev/null; then
|
||||||
|
echo "Skipping Python dead code linting since vulture is not installed. Install by running \"pip3 install vulture\""
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
vulture \
|
||||||
|
--min-confidence 60 \
|
||||||
|
--ignore-names "argtypes,connection_lost,connection_made,converter,data_received,daemon,errcheck,get_ecdh_key,get_privkey,is_compressed,is_fullyvalid,msg_generic,on_*,optionxform,restype,set_privkey" \
|
||||||
|
$(git ls-files -- "*.py" ":(exclude)contrib/")
|
Loading…
Add table
Reference in a new issue