예제 #1
0
def make_tester_speed_table(tester_speeds, output):
    make_resource("tester_speed.tex.jinja2",
                  output + ".tex",
                  testers=sorted(tester_speeds.keys()),
                  speeds=tester_speeds)
    with open(output + ".json", 'w') as f:
        json.dump(tester_speeds, f)
예제 #2
0
def stats_pages_table(stats,
                      table_tex_file="pages_score.tex",
                      csv_file="page_scores.csv"):
    scores = {}
    averages = {}
    for tester, tester_stats in stats["testers"].items():
        for page_name, page_stats in tester_stats["pages"].items():
            if page_name not in scores.keys():
                scores[page_name] = {}
            scores[page_name][tester] = page_stats["mutation_score"]
    for page_name, page_scores in scores.items():
        total = 0
        for tester, score in page_scores.items():
            total += score
        averages[page_name] = total / len(page_scores)
    make_resource("page_score.tex.jinja2",
                  table_tex_file,
                  pages=sorted(scores.keys()),
                  testers=sorted(stats["testers"].keys()),
                  scores=scores,
                  averages=averages)
    if csv_file is not None:
        testers_list = stats["testers"].keys()
        with open(csv_file, 'w', newline='') as f:
            writer = csv.writer(f)
            writer.writerow([".PageName"] +
                            [tester for tester in testers_list])
            for page, page_scores in scores.items():
                writer.writerow(
                    [page] + [page_scores[tester] for tester in testers_list])
예제 #3
0
def pages_table(pages_desc_file, pages_tex_file="pages.tex"):
    page_descriptions = {}
    with open(pages_desc_file) as f:
        page_descriptions = json.load(f)
    for page in page_descriptions.keys():
        if page_descriptions[page][-1] == '\n':
            page_descriptions[page] = page_descriptions[page][:-1]
    make_resource("pages.tex.jinja2",
                  pages_tex_file,
                  pages=sorted(page_descriptions.keys()),
                  page_descriptions=page_descriptions)
예제 #4
0
def page_mutations_table(report_object, table_tex_file="page_operators.tex"):
    pages = {}
    page_names = []
    for _, page in report_object.items():
        initial_page = page["parent"]
        if initial_page not in pages.keys():
            pages[initial_page] = {}
            page_names.append(initial_page)
        for operator in page["mutations"]:
            if operator not in pages[initial_page].keys():
                pages[initial_page][operator] = 0
            pages[initial_page][operator] += 1
    make_resource("page_operators.tex.jinja2",
                  table_tex_file,
                  page_names=page_names,
                  pages=pages)
예제 #5
0
def stats_operator_table(stats, table_tex_file="operator_score.tex"):
    scores = {}
    averages = {}
    for tester, tester_stats in stats["testers"].items():
        for operator, operator_stats in tester_stats["operators"].items():
            if operator not in scores.keys():
                scores[operator] = {}
            scores[operator][tester] = operator_stats["mutation_score"]
    for operator, operator_scores in scores.items():
        total = 0
        for tester, score in operator_scores.items():
            total += score
        averages[operator] = total / len(operator_scores)
    make_resource("operator_score.tex.jinja2",
                  table_tex_file,
                  operators=sorted(scores.keys()),
                  testers=sorted(stats["testers"].keys()),
                  scores=scores,
                  averages=averages)
예제 #6
0
def stats_mutation_table(stats, table_tex_file="tester_score.tex"):
    make_resource("tester_score.tex.jinja2",
                  table_tex_file,
                  testers=sorted(stats["testers"].keys()),
                  stats=stats["testers"])