def load_correct_outputs(self): assert self._correct_outputs is None # Copy the buggy source into our current dir. We need to be in the same dir # as we compiled to run gcov, and if we try to keep the buggy version in # its own directory, we'll have to call chdir() over and over working_runnable = compile_working_version(self._project) # FIXME: make get_tests lazily get the tests test_lines = get_tests(self._project.test_file) self._correct_outputs = [] for i, test in enumerate(test_lines): if i % 500 == 0: print("Running correct version on test {0}".format(i)) expected_output = get_output(working_runnable + " " + test, True) self._correct_outputs.append(expected_output)
def get_buggy_version_results(self): buggy_program = compile_buggy_version(self._project) test_lines = get_tests(self._project.test_file) passcount = 0 run_to_result = {} for i, test in enumerate(test_lines): if i % 500 == 0: print("Running buggy version test {0}".format(i)) prog_output = get_output(buggy_program + " " + test, True) passed = prog_output == self._correct_outputs[i] if passed: passcount += 1 spectrum = gcov_helper.get_trace(self._project.main_src_file) gcov_helper.reset_gcov_counts(self._project.main_src_file) run_to_result[i] = RunResult(passed=passed, spectrum=spectrum) print("Passed {0}/{1}".format(passcount, len(test_lines))) return run_to_result
def _run_gcov(filename): _ = get_output(["gcov", filename])
def make_feature_file(spectra_file, out_feature_file): commandio.get_output(["feature-extractor/feature-extractor", spectra_file, out_feature_file, "pairwise"]) assert os.path.exists(out_feature_file)