def run_test_on_file(filename, verbose=False): """ Runs a test on the given input filename. Return True if all test runs succeeded. """ success = True testlog.info("Test file '%s'" % filename) for option in [ '-e', '-s', '-r', '-x.text', '-p.shstrtab', '--debug-dump=info', '--debug-dump=decodedline', '--debug-dump=frames', '--debug-dump=frames-interp']: if verbose: testlog.info("..option='%s'" % option) # stdouts will be a 2-element list: output of readelf and output # of scripts/readelf.py stdouts = [] for exe_path in ['readelf', 'scripts/readelf.py']: args = [option, filename] if verbose: testlog.info("....executing: '%s %s'" % ( exe_path, ' '.join(args))) rc, stdout = run_exe(exe_path, args) if rc != 0: testlog.error("@@ aborting - '%s' returned '%s'" % (exe_path, rc)) return False stdouts.append(stdout) if verbose: testlog.info('....comparing output...') rc, errmsg = compare_output(*stdouts) if rc: if verbose: testlog.info('.......................SUCCESS') else: success = False testlog.info('.......................FAIL') testlog.info('....for option "%s"' % option) testlog.info('@@ ' + errmsg) dump_output_to_temp_files(testlog, *stdouts) return success
def run_example_and_compare(example_path): testlog.info("Example '%s'" % example_path) reference_path = reference_output_path(example_path) ref_str = '' try: with open(reference_path) as ref_f: ref_str = ref_f.read() except (IOError, OSError) as e: testlog.info('.......ERROR - reference output cannot be read! - %s' % e) return False rc, example_out = run_exe(example_path, ['./examples/sample_exe64.elf']) if rc != 0: testlog.info('.......ERROR - example returned error code %s' % rc) return False # Comparison is done as lists of lines, to avoid EOL problems if example_out.split() == ref_str.split(): return True else: testlog.info('.......FAIL comparison') dump_output_to_temp_files(testlog, example_out) return False
def run_test_on_file(filename, verbose=False): """ Runs a test on the given input filename. Return True if all test runs succeeded. """ success = True testlog.info("Test file '%s'" % filename) for option in [ '-e', '-s', '-r', '-x.text', '-p.shstrtab', '--debug-dump=info', '--debug-dump=decodedline', '--debug-dump=frames', '--debug-dump=frames-interp' ]: if verbose: testlog.info("..option='%s'" % option) # stdouts will be a 2-element list: output of readelf and output # of scripts/readelf.py stdouts = [] for exe_path in ['readelf', 'scripts/readelf.py']: args = [option, filename] if verbose: testlog.info("....executing: '%s %s'" % (exe_path, ' '.join(args))) rc, stdout = run_exe(exe_path, args) if rc != 0: testlog.error("@@ aborting - '%s' returned '%s'" % (exe_path, rc)) return False stdouts.append(stdout) if verbose: testlog.info('....comparing output...') rc, errmsg = compare_output(*stdouts) if rc: if verbose: testlog.info('.......................SUCCESS') else: success = False testlog.info('.......................FAIL') testlog.info('....for option "%s"' % option) testlog.info('@@ ' + errmsg) dump_output_to_temp_files(testlog, *stdouts) return success