forked from bears-bugs/bears-benchmark
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmetadata_generator.py
79 lines (70 loc) · 2.68 KB
/
metadata_generator.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import os
from os.path import join
from pprint import pprint
import shutil
import urllib.request
import json
from pprint import pprint
result = []
id = 0
original_data_file = open("scripts/data/bug_id_and_branch.json", "r")
original_data = json.load(original_data_file)
original_data_file.close()
for project in original_data:
id += 1
metadata_link = (
"https://github.com/bears-bugs/bears-benchmark/raw/{}/bears.json".format(
project["bugBranch"]
)
)
metadata = {}
with urllib.request.urlopen(metadata_link) as f:
metadata = json.load(f)
pprint(metadata)
# Failing_mod_path format:
# /root/workspace/{repo_name}/{buggy_build_id}/{failing-module}
failing_module_path = metadata["tests"].get("failingModule", "")
repo_name = metadata.get("commits", {}).get("buggyBuild", {}).get("repoName", "")
buggy_build_id = metadata["builds"]["buggyBuild"]["id"]
failing_mod = failing_module_path.replace("/root/workspace/", "").replace(str(repo_name) + "/", "").replace(str(buggy_build_id), "")
if failing_mod.startswith("/"):
failing_mod = failing_mod[1:]
result.append(
{
"id": id,
"subject": "-".join(project["bugBranch"].split("-")[0:2]),
"bug_id": project["bugBranch"],
"bug_commit": metadata["commits"]["buggyBuild"]["sha"],
"repository": metadata["commits"]["buggyBuild"]["repoName"],
"branch": project["bugBranch"],
"failing_module": failing_mod,
"source_file": "",
"source_directory": "src/main/java",
"class_directory": "target/classes",
"test_directory": "src/test/java",
"test_class_directory": "target/test-classes",
"language": "java",
"build_script": "build_subject",
"config_script": "config_subject",
"clean_script": "clean_subject",
"test_script": "test_subject",
"bug_type": "Test Failure",
"java_version": 8,
"line_numbers": [],
"dependencies": [],
"passing_test_identifiers": [],
"failing_test_identifiers": list(
map(
lambda failure: failure["testClass"],
metadata["tests"]["failureDetails"],
)
),
"test_timeout": 5,
"count_neg": metadata["tests"]["overallMetrics"]["numberFailing"]
+ metadata["tests"]["overallMetrics"]["numberErroring"],
"count_pos": metadata["tests"]["overallMetrics"]["numberPassing"],
}
)
x = open("meta-data.json", "w")
x.write(json.dumps(result, indent=4))
x.close()