mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-13 08:53:20 +00:00
ICU-21750 Output tail end of the uconfig variation test run in case of failure
to allow easier identification of build or test failures.
This commit is contained in:
parent
c37ca411fc
commit
d4d29fbee3
1 changed files with 37 additions and 12 deletions
|
@ -39,7 +39,6 @@ def RunCmd(command):
|
|||
stdout and exit code of command execution.
|
||||
"""
|
||||
|
||||
command += ' >> uconfig_test.log 2>&1'
|
||||
print(command)
|
||||
p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT, close_fds=True)
|
||||
|
@ -77,8 +76,10 @@ def ExtractUConfigNoXXX(uconfig_file):
|
|||
print('No definition for flag %s found!\n' % uconfig_no_flag)
|
||||
sys.exit(1)
|
||||
|
||||
test_results = {f: {'unit_test': False, 'hdr_test': False} for f in uconfig_no_flags_all}
|
||||
test_results['all_flags'] = {'unit_test': False, 'hdr_test' : False}
|
||||
test_results = {f: {'unit_test': False, 'hdr_test': False, 'u_log_tail': '', 'h_log_tail': ''}
|
||||
for f in uconfig_no_flags_all}
|
||||
test_results['all_flags'] = {'unit_test': False, 'hdr_test' : False, 'u_log_tail': '',
|
||||
'h_log_tail': ''}
|
||||
|
||||
return uconfig_no_flags_all, test_results
|
||||
|
||||
|
@ -102,27 +103,33 @@ def RunUnitTests(uconfig_no_list, test_results):
|
|||
"""
|
||||
|
||||
for uconfig_no in uconfig_no_list:
|
||||
_, exit_code = RunCmd(
|
||||
conf_log, exit_code = RunCmd(
|
||||
'./runConfigureICU Linux CPPFLAGS=\"-D%s=1"' % uconfig_no)
|
||||
if exit_code != 0:
|
||||
print('ICU4C configuration for flag %s failed' % uconfig_no)
|
||||
print('Last 25 lines:\n%s\n' % '\n'.join(conf_log.decode('utf-8').splitlines()[-25:]))
|
||||
sys.exit(1)
|
||||
print('Running unit tests with %s set to 1.' % uconfig_no)
|
||||
_, exit_code = RunCmd('make -j2 check')
|
||||
run_log, exit_code = RunCmd('make -j2 check')
|
||||
test_results[uconfig_no]['unit_test'] = (exit_code == 0)
|
||||
test_results[uconfig_no]['u_log_tail'] = \
|
||||
'\n'.join(run_log.decode('utf-8').splitlines()[-50:])
|
||||
RunCmd('make clean')
|
||||
|
||||
# Configure ICU with all UCONFIG_NO_XXX flags set to 1 and execute
|
||||
# the ICU4C unit tests.
|
||||
all_unit_test_config_no = BuildAllFlags(uconfig_no_list)
|
||||
_, exit_code = RunCmd(
|
||||
conf_log, exit_code = RunCmd(
|
||||
'CPPFLAGS=\"%s\" ./runConfigureICU Linux' % all_unit_test_config_no)
|
||||
if exit_code != 0:
|
||||
print('ICU configuration with all flags set failed')
|
||||
print('Last 25 lines:\n%s\n' % '\n'.join(conf_log.decode('utf-8').splitlines()[-25:]))
|
||||
sys.exit(1)
|
||||
print('Running unit tests with all flags set to 1.')
|
||||
_, exit_code = RunCmd('make -j2 check')
|
||||
run_log, exit_code = RunCmd('make -j2 check')
|
||||
test_results['all_flags']['unit_test'] = (exit_code == 0)
|
||||
test_results['all_flags']['u_log_tail'] = \
|
||||
'\n'.join(run_log.decode('utf-8').splitlines()[-50:])
|
||||
RunCmd('make clean')
|
||||
|
||||
return test_results
|
||||
|
@ -140,28 +147,33 @@ def RunHeaderTests(uconfig_no_list, test_results):
|
|||
|
||||
# Header tests needs different setup.
|
||||
RunCmd('mkdir /tmp/icu_cnfg')
|
||||
out, exit_code = RunCmd('./runConfigureICU Linux --prefix=/tmp/icu_cnfg')
|
||||
conf_log, exit_code = RunCmd('./runConfigureICU Linux --prefix=/tmp/icu_cnfg')
|
||||
if exit_code != 0:
|
||||
print('ICU4C configuration for header test failed!')
|
||||
print(out)
|
||||
print('Last 25 lines:\n%s\n' % '\n'.join(conf_log.decode('utf-8').splitlines()[-25:]))
|
||||
sys.exit(1)
|
||||
|
||||
_, exit_code = RunCmd('make -j2 install')
|
||||
inst_log, exit_code = RunCmd('make -j2 install')
|
||||
if exit_code != 0:
|
||||
print('make install failed!')
|
||||
print('Last 25 lines:\n%s\n' % '\n'.join(inst_log.decode('utf-8').splitlines()[-25:]))
|
||||
sys.exit(1)
|
||||
|
||||
for uconfig_no in uconfig_no_list:
|
||||
print('Running header tests with %s set to 1.' % uconfig_no)
|
||||
_, exit_code = RunCmd(
|
||||
run_log, exit_code = RunCmd(
|
||||
'PATH=/tmp/icu_cnfg/bin:$PATH make -C test/hdrtst UCONFIG_NO=\"-D%s=1\" check' % uconfig_no)
|
||||
test_results[uconfig_no]['hdr_test'] = (exit_code == 0)
|
||||
test_results[uconfig_no]['h_log_tail'] = \
|
||||
'\n'.join(run_log.decode('utf-8').splitlines()[-50:])
|
||||
|
||||
all_hdr_test_flags = BuildAllFlags(uconfig_no_list)
|
||||
print('Running header tests with all flags set to 1.')
|
||||
_, exit_code = RunCmd(
|
||||
run_log, exit_code = RunCmd(
|
||||
'PATH=/tmp/icu_cnfg/bin:$PATH make -C test/hdrtst UCONFIG_NO=\"%s\" check' % all_hdr_test_flags)
|
||||
test_results['all_flags']['hdr_test'] = (exit_code == 0)
|
||||
test_results['all_flags']['h_log_tail'] = \
|
||||
'\n'.join(run_log.decode('utf-8').splitlines()[-50:])
|
||||
|
||||
return test_results
|
||||
|
||||
|
@ -200,16 +212,29 @@ def main():
|
|||
if run_unit and (uconfig_no not in excluded_unit_test_flags):
|
||||
if not test_results[uconfig_no]['unit_test']:
|
||||
outcome = 1
|
||||
print('\n============================================================\n')
|
||||
print('%s: unit tests fail' % uconfig_no)
|
||||
print('Last 50 lines from log file:\n%s\n' % test_results[uconfig_no]['u_log_tail'])
|
||||
print('\n============================================================\n')
|
||||
if run_hdr and not test_results[uconfig_no]['hdr_test']:
|
||||
outcome = 1
|
||||
print('\n============================================================\n')
|
||||
print('%s: header tests fails' % uconfig_no)
|
||||
print('Last 50 lines from log file:\n%s\n' % test_results[uconfig_no]['h_log_tail'])
|
||||
print('\n============================================================\n')
|
||||
|
||||
if run_unit and not test_results['all_flags']['unit_test']:
|
||||
outcome = 1
|
||||
print('\n============================================================\n')
|
||||
print('all flags to 1: unit tests fail!')
|
||||
print('Last 50 lines from log file:\n%s\n' % test_results['all_flags']['u_log_tail'])
|
||||
print('\n============================================================\n')
|
||||
if run_hdr and not test_results['all_flags']['hdr_test']:
|
||||
outcome = 1
|
||||
print('\n============================================================\n')
|
||||
print('all flags to 1: header tests fail!')
|
||||
print('Last 50 lines from log file: %s\n ' % test_results['all_flags']['h_log_tail'])
|
||||
print('\n============================================================\n')
|
||||
if outcome == 0:
|
||||
print('Tests pass for all uconfig variations!')
|
||||
sys.exit(outcome)
|
||||
|
|
Loading…
Add table
Reference in a new issue