mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-09 10:43:19 -05:00
Merge bitcoin/bitcoin#24993: test, contrib, refactor: use with
when opening a file
027aab663a
test, contrib, refactor: use `with` when opening a file (brunoerg) Pull request description: When manipulating a file in Python without using `with()`, you have to close the file manually, so this PR does it in `get_block_hashes` (`contrib/linearize/linearize-data.py`). Edit: this PR does it for all occurances that previously weren't using `with`. ACKs for top commit: laanwj: Code review ACK027aab663a
Tree-SHA512: 879400968e0013e8678ec16f1fe5d0963a73c1e0d442ca34802d885214f0783d2e9a9b500fc6be7c3b93560a367b6a3d685eee24d2f9ce53fddf064ea6feecf8
This commit is contained in:
commit
0047d9b89b
7 changed files with 54 additions and 47 deletions
|
@ -320,15 +320,13 @@ def get_most_recent_git_change_year(filename):
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
def read_file_lines(filename):
|
def read_file_lines(filename):
|
||||||
f = open(filename, 'r', encoding="utf8")
|
with open(filename, 'r', encoding="utf8") as f:
|
||||||
file_lines = f.readlines()
|
file_lines = f.readlines()
|
||||||
f.close()
|
|
||||||
return file_lines
|
return file_lines
|
||||||
|
|
||||||
def write_file_lines(filename, file_lines):
|
def write_file_lines(filename, file_lines):
|
||||||
f = open(filename, 'w', encoding="utf8")
|
with open(filename, 'w', encoding="utf8") as f:
|
||||||
f.write(''.join(file_lines))
|
f.write(''.join(file_lines))
|
||||||
f.close()
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# update header years execution
|
# update header years execution
|
||||||
|
|
|
@ -34,12 +34,12 @@ def get_blk_dt(blk_hdr):
|
||||||
# When getting the list of block hashes, undo any byte reversals.
|
# When getting the list of block hashes, undo any byte reversals.
|
||||||
def get_block_hashes(settings):
|
def get_block_hashes(settings):
|
||||||
blkindex = []
|
blkindex = []
|
||||||
f = open(settings['hashlist'], "r", encoding="utf8")
|
with open(settings['hashlist'], "r", encoding="utf8") as f:
|
||||||
for line in f:
|
for line in f:
|
||||||
line = line.rstrip()
|
line = line.rstrip()
|
||||||
if settings['rev_hash_bytes'] == 'true':
|
if settings['rev_hash_bytes'] == 'true':
|
||||||
line = bytes.fromhex(line)[::-1].hex()
|
line = bytes.fromhex(line)[::-1].hex()
|
||||||
blkindex.append(line)
|
blkindex.append(line)
|
||||||
|
|
||||||
print("Read " + str(len(blkindex)) + " hashes")
|
print("Read " + str(len(blkindex)) + " hashes")
|
||||||
|
|
||||||
|
@ -249,19 +249,18 @@ if __name__ == '__main__':
|
||||||
print("Usage: linearize-data.py CONFIG-FILE")
|
print("Usage: linearize-data.py CONFIG-FILE")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
f = open(sys.argv[1], encoding="utf8")
|
with open(sys.argv[1], encoding="utf8") as f:
|
||||||
for line in f:
|
for line in f:
|
||||||
# skip comment lines
|
# skip comment lines
|
||||||
m = re.search(r'^\s*#', line)
|
m = re.search(r'^\s*#', line)
|
||||||
if m:
|
if m:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# parse key=value lines
|
# parse key=value lines
|
||||||
m = re.search(r'^(\w+)\s*=\s*(\S.*)$', line)
|
m = re.search(r'^(\w+)\s*=\s*(\S.*)$', line)
|
||||||
if m is None:
|
if m is None:
|
||||||
continue
|
continue
|
||||||
settings[m.group(1)] = m.group(2)
|
settings[m.group(1)] = m.group(2)
|
||||||
f.close()
|
|
||||||
|
|
||||||
# Force hash byte format setting to be lowercase to make comparisons easier.
|
# Force hash byte format setting to be lowercase to make comparisons easier.
|
||||||
# Also place upfront in case any settings need to know about it.
|
# Also place upfront in case any settings need to know about it.
|
||||||
|
|
|
@ -98,19 +98,18 @@ if __name__ == '__main__':
|
||||||
print("Usage: linearize-hashes.py CONFIG-FILE")
|
print("Usage: linearize-hashes.py CONFIG-FILE")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
f = open(sys.argv[1], encoding="utf8")
|
with open(sys.argv[1], encoding="utf8") as f:
|
||||||
for line in f:
|
for line in f:
|
||||||
# skip comment lines
|
# skip comment lines
|
||||||
m = re.search(r'^\s*#', line)
|
m = re.search(r'^\s*#', line)
|
||||||
if m:
|
if m:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# parse key=value lines
|
# parse key=value lines
|
||||||
m = re.search(r'^(\w+)\s*=\s*(\S.*)$', line)
|
m = re.search(r'^(\w+)\s*=\s*(\S.*)$', line)
|
||||||
if m is None:
|
if m is None:
|
||||||
continue
|
continue
|
||||||
settings[m.group(1)] = m.group(2)
|
settings[m.group(1)] = m.group(2)
|
||||||
f.close()
|
|
||||||
|
|
||||||
if 'host' not in settings:
|
if 'host' not in settings:
|
||||||
settings['host'] = '127.0.0.1'
|
settings['host'] = '127.0.0.1'
|
||||||
|
|
|
@ -82,11 +82,16 @@ def main():
|
||||||
# get directory of this program and read data files
|
# get directory of this program and read data files
|
||||||
dirname = os.path.dirname(os.path.abspath(__file__))
|
dirname = os.path.dirname(os.path.abspath(__file__))
|
||||||
print("Using verify-commits data from " + dirname)
|
print("Using verify-commits data from " + dirname)
|
||||||
verified_root = open(dirname + "/trusted-git-root", "r", encoding="utf8").read().splitlines()[0]
|
with open(dirname + "/trusted-git-root", "r", encoding="utf8") as f:
|
||||||
verified_sha512_root = open(dirname + "/trusted-sha512-root-commit", "r", encoding="utf8").read().splitlines()[0]
|
verified_root = f.read().splitlines()[0]
|
||||||
revsig_allowed = open(dirname + "/allow-revsig-commits", "r", encoding="utf-8").read().splitlines()
|
with open(dirname + "/trusted-sha512-root-commit", "r", encoding="utf8") as f:
|
||||||
unclean_merge_allowed = open(dirname + "/allow-unclean-merge-commits", "r", encoding="utf-8").read().splitlines()
|
verified_sha512_root = f.read().splitlines()[0]
|
||||||
incorrect_sha512_allowed = open(dirname + "/allow-incorrect-sha512-commits", "r", encoding="utf-8").read().splitlines()
|
with open(dirname + "/allow-revsig-commits", "r", encoding="utf8") as f:
|
||||||
|
revsig_allowed = f.read().splitlines()
|
||||||
|
with open(dirname + "/allow-unclean-merge-commit", "r", encoding="utf8") as f:
|
||||||
|
unclean_merge_allowed = f.read().splitlines()
|
||||||
|
with open(dirname + "/allow-incorrect-sha512-commits", "r", encoding="utf8") as f:
|
||||||
|
incorrect_sha512_allowed = f.read().splitlines()
|
||||||
|
|
||||||
# Set commit and branch and set variables
|
# Set commit and branch and set variables
|
||||||
current_commit = args.commit
|
current_commit = args.commit
|
||||||
|
|
|
@ -247,7 +247,8 @@ class ConfArgsTest(BitcoinTestFramework):
|
||||||
conf_file = os.path.join(default_data_dir, "bitcoin.conf")
|
conf_file = os.path.join(default_data_dir, "bitcoin.conf")
|
||||||
|
|
||||||
# datadir needs to be set before [chain] section
|
# datadir needs to be set before [chain] section
|
||||||
conf_file_contents = open(conf_file, encoding='utf8').read()
|
with open(conf_file, encoding='utf8') as f:
|
||||||
|
conf_file_contents = f.read()
|
||||||
with open(conf_file, 'w', encoding='utf8') as f:
|
with open(conf_file, 'w', encoding='utf8') as f:
|
||||||
f.write(f"datadir={new_data_dir}\n")
|
f.write(f"datadir={new_data_dir}\n")
|
||||||
f.write(conf_file_contents)
|
f.write(conf_file_contents)
|
||||||
|
|
|
@ -58,7 +58,8 @@ class VersionBitsWarningTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def versionbits_in_alert_file(self):
|
def versionbits_in_alert_file(self):
|
||||||
"""Test that the versionbits warning has been written to the alert file."""
|
"""Test that the versionbits warning has been written to the alert file."""
|
||||||
alert_text = open(self.alert_filename, 'r', encoding='utf8').read()
|
with open(self.alert_filename, 'r', encoding='utf8') as f:
|
||||||
|
alert_text = f.read()
|
||||||
return VB_PATTERN.search(alert_text) is not None
|
return VB_PATTERN.search(alert_text) is not None
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
|
|
|
@ -22,7 +22,8 @@ import sys
|
||||||
def main():
|
def main():
|
||||||
config = configparser.ConfigParser()
|
config = configparser.ConfigParser()
|
||||||
config.optionxform = str
|
config.optionxform = str
|
||||||
config.read_file(open(os.path.join(os.path.dirname(__file__), "../config.ini"), encoding="utf8"))
|
with open(os.path.join(os.path.dirname(__file__), "../config.ini"), encoding="utf8") as f:
|
||||||
|
config.read_file(f)
|
||||||
env_conf = dict(config.items('environment'))
|
env_conf = dict(config.items('environment'))
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description=__doc__)
|
parser = argparse.ArgumentParser(description=__doc__)
|
||||||
|
@ -43,7 +44,8 @@ def main():
|
||||||
def bctester(testDir, input_basename, buildenv):
|
def bctester(testDir, input_basename, buildenv):
|
||||||
""" Loads and parses the input file, runs all tests and reports results"""
|
""" Loads and parses the input file, runs all tests and reports results"""
|
||||||
input_filename = os.path.join(testDir, input_basename)
|
input_filename = os.path.join(testDir, input_basename)
|
||||||
raw_data = open(input_filename, encoding="utf8").read()
|
with open(input_filename, encoding="utf8") as f:
|
||||||
|
raw_data = f.read()
|
||||||
input_data = json.loads(raw_data)
|
input_data = json.loads(raw_data)
|
||||||
|
|
||||||
failed_testcases = []
|
failed_testcases = []
|
||||||
|
@ -80,7 +82,8 @@ def bctest(testDir, testObj, buildenv):
|
||||||
inputData = None
|
inputData = None
|
||||||
if "input" in testObj:
|
if "input" in testObj:
|
||||||
filename = os.path.join(testDir, testObj["input"])
|
filename = os.path.join(testDir, testObj["input"])
|
||||||
inputData = open(filename, encoding="utf8").read()
|
with open(filename, encoding="utf8") as f:
|
||||||
|
inputData = f.read()
|
||||||
stdinCfg = subprocess.PIPE
|
stdinCfg = subprocess.PIPE
|
||||||
|
|
||||||
# Read the expected output data (if there is any)
|
# Read the expected output data (if there is any)
|
||||||
|
@ -91,7 +94,8 @@ def bctest(testDir, testObj, buildenv):
|
||||||
outputFn = testObj['output_cmp']
|
outputFn = testObj['output_cmp']
|
||||||
outputType = os.path.splitext(outputFn)[1][1:] # output type from file extension (determines how to compare)
|
outputType = os.path.splitext(outputFn)[1][1:] # output type from file extension (determines how to compare)
|
||||||
try:
|
try:
|
||||||
outputData = open(os.path.join(testDir, outputFn), encoding="utf8").read()
|
with open(os.path.join(testDir, outputFn), encoding="utf8") as f:
|
||||||
|
outputData = f.read()
|
||||||
except:
|
except:
|
||||||
logging.error("Output file " + outputFn + " cannot be opened")
|
logging.error("Output file " + outputFn + " cannot be opened")
|
||||||
raise
|
raise
|
||||||
|
|
Loading…
Add table
Reference in a new issue