Skip to content

Commit d246ce0

Browse files
committed
Remove buildSrc from gitignore
1 parent a27d091 commit d246ce0

File tree

3 files changed

+155
-1
lines changed

3 files changed

+155
-1
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
#occupational hazards
2020
/projects/
2121
/repo/
22-
/buildSrc/
2322
/out/
2423
/src/generated-sources/
2524
/logs/
@@ -31,3 +30,4 @@
3130
/out.log
3231
gradle.properties
3332
/**/logs/
33+
/test_results.html

buildSrc/build.gradle

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
plugins {
2+
id 'groovy'
3+
}
4+
5+
repositories {
6+
mavenCentral()
7+
maven { url 'https://jitpack.io' }
8+
}
9+
10+
java.toolchain.languageVersion = JavaLanguageVersion.of(17)
11+
12+
dependencies {
13+
implementation 'com.github.Steppschuh:Java-Markdown-Generator:1.3.2'
14+
}
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
import groovy.xml.DOMBuilder
2+
import groovy.xml.dom.DOMCategory
3+
import org.gradle.api.DefaultTask
4+
import org.gradle.api.file.DirectoryProperty
5+
import org.gradle.api.file.RegularFileProperty
6+
import org.gradle.api.tasks.InputDirectory
7+
import org.gradle.api.tasks.OutputFile
8+
import org.gradle.api.tasks.TaskAction
9+
10+
abstract class AggregateTest extends DefaultTask {
11+
@InputDirectory
12+
abstract DirectoryProperty getInput()
13+
14+
@OutputFile
15+
abstract RegularFileProperty getOutput()
16+
17+
@TaskAction
18+
void exec() throws IOException {
19+
final javas = [:] as TreeMap
20+
final results = [:] as TreeMap
21+
22+
for (def java : input.asFile.get().listFiles()) {
23+
for (def test : java.listFiles()) {
24+
if (!test.name.startsWith('TEST-') || !test.name.endsWith('.xml'))
25+
continue
26+
27+
def dirName = test.parentFile.name
28+
def (javaName, javaVersion) = dirName.split('-')
29+
javas.computeIfAbsent(javaName, { [] as SortedSet }).add(javaVersion)
30+
31+
def data = DOMBuilder.parse(new StringReader(test.text)).documentElement
32+
use(DOMCategory) {
33+
def suite = data['@name']
34+
suite = suite.substring(suite.lastIndexOf('.') + 1)
35+
def byTest = results.computeIfAbsent(suite, { [:] })
36+
for (def testcase : data.testcase) {
37+
def name = testcase['@name']
38+
if (name.startsWith('repetition '))
39+
continue
40+
def byJava = byTest.computeIfAbsent(name, { [:] })
41+
def byVersion = byJava.computeIfAbsent(javaName, { [:] })
42+
byVersion.put(javaVersion, testcase.failure.isEmpty())
43+
}
44+
}
45+
test.delete()
46+
}
47+
if (java.listFiles().length == 0)
48+
java.deleteDir()
49+
}
50+
51+
def buffer = new StringBuilder()
52+
buffer.append("""
53+
<html>
54+
<style>
55+
.tooltip-text {
56+
visibility: hidden;
57+
position: absolute;
58+
z-index: 1;
59+
width: 100px;
60+
color: white;
61+
font-size: 12px;
62+
background-color: #192733;
63+
border-radius: 10px;
64+
padding: 10px 15px 10px 15px;
65+
top: -40px;
66+
left: -50%;
67+
}
68+
69+
.hover-text:hover .tooltip-text {
70+
visibility: visible;
71+
}
72+
73+
.success {
74+
background-color: #008000;
75+
}
76+
77+
.failure {
78+
background-color: #b60808;
79+
}
80+
81+
.hover-text {
82+
font-size: 16px;
83+
position: relative;
84+
display: inline;
85+
font-family: monospace;
86+
text-align: center;
87+
}
88+
89+
table, th, td {
90+
border: 1px solid black;
91+
border-collapse: collapse;
92+
}
93+
94+
th, td {
95+
padding-left: 3px;
96+
padding-right: 3px;
97+
}
98+
99+
.result {
100+
font-size: 0px;
101+
}
102+
</style>
103+
<body>
104+
""")
105+
results.forEach{ suite, byTest ->
106+
buffer << "<h1>${suite}</h1>\n"
107+
buffer << "<table>\n"
108+
buffer << " <thead>\n"
109+
buffer << " <th>Test</th>\n"
110+
javas.keySet().forEach{ javaName ->
111+
buffer << " <th>${javaName}</th>\n"
112+
}
113+
buffer << " </thead>\n"
114+
buffer << " <tbody>\n"
115+
byTest.forEach{ testName, byJava ->
116+
buffer << " <tr>\n"
117+
buffer << " <td>${testName}</td>\n"
118+
javas.forEach{ javaName, versions ->
119+
buffer << " <td class=\"result\">\n"
120+
def byVersion = byJava.get(javaName)
121+
versions.forEach { ver ->
122+
if (byVersion.containsKey(ver) && byVersion.get(ver)) {
123+
buffer << " <span class=\"hover-text success\">O<span class=\"tooltip-text success\" id=\"failure\">${javaName} v${ver}</span></span>\n"
124+
} else {
125+
buffer << " <span class=\"hover-text failure\">X<span class=\"tooltip-text failure\">${javaName} v${ver}</span></span>\n"
126+
}
127+
}
128+
buffer << " </td>\n"
129+
}
130+
buffer << " </tr>\n"
131+
}
132+
buffer << " </tbody>\n"
133+
buffer << "</table>\n"
134+
135+
}
136+
buffer << "</body></html>"
137+
138+
output.asFile.get().text = buffer
139+
}
140+
}

0 commit comments

Comments
 (0)