Merge #16973: test: Fix combine_logs.py for AppVeyor build

d478a472eb test: Fix combine_logs.py for AppVeyor build (Martin Zumsande)

Pull request description:

  Fixes #16894

  This fixes the problem of AppVeyor builds not showing `debug.log` if a functional test fails, because the windows separator `\` doesn't work together with the regex in `combine_logs.py`.

  A fix was already attempted in  #16896, however, that PR became inactive and was marked "up for grabs", plus it's a really small change.

  As suggested by jamesob, this PR uses `pathlib`: For the glob and to convert the path to a posix-style string, it leaves the regex as is (in contrast to #16896 which adjusted the regex).

  I tested this locally on Windows and Ubuntu.

Top commit has no ACKs.

Tree-SHA512: 603b4359b6009b6da874c30f69759acda03730ee5747898a0fe957a5fc37ee9ba07858c6aa2169bf4c40521f37e47138e8314d698652ea2760fa0a3f76b890bd
This commit is contained in:
MarcoFalke 2019-10-10 13:18:54 -04:00
commit d5a770b70d
No known key found for this signature in database
GPG Key ID: D2EA4850E7528B25

View File

@ -8,7 +8,6 @@ If no argument is provided, the most recent test directory will be used."""
import argparse import argparse
from collections import defaultdict, namedtuple from collections import defaultdict, namedtuple
import glob
import heapq import heapq
import itertools import itertools
import os import os
@ -78,10 +77,11 @@ def read_logs(tmp_dir):
for each of the input log files.""" for each of the input log files."""
# Find out what the folder is called that holds the debug.log file # Find out what the folder is called that holds the debug.log file
chain = glob.glob("{}/node0/*/debug.log".format(tmp_dir)) glob = pathlib.Path(tmp_dir).glob('node0/**/debug.log')
if chain: path = next(glob, None)
chain = chain[0] # pick the first one if more than one chain was found (should never happen) if path:
chain = re.search(r'node0/(.+?)/debug\.log$', chain).group(1) # extract the chain name assert next(glob, None) is None # more than one debug.log, should never happen
chain = re.search(r'node0/(.+?)/debug\.log$', path.as_posix()).group(1) # extract the chain name
else: else:
chain = 'regtest' # fallback to regtest (should only happen when none exists) chain = 'regtest' # fallback to regtest (should only happen when none exists)