Skip to content

Commit

Permalink
Adding Github summary action for Java test
Browse files Browse the repository at this point in the history
  • Loading branch information
Hartorn committed Sep 12, 2023
1 parent 9d59035 commit 72c290f
Showing 1 changed file with 66 additions and 12 deletions.
78 changes: 66 additions & 12 deletions backend/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
import org.gradle.api.tasks.testing.TestResult.ResultType
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.gradle.api.tasks.testing.logging.TestLogEvent

import java.text.SimpleDateFormat
import java.time.Instant
import java.io.FileWriter
import java.util.*


group = "ai.giskard"
description = "Giskard main java backend"

Expand Down Expand Up @@ -267,9 +273,12 @@ tasks {
test {
exclude("**/*IT*", "**/*IntTest*")
testLogging {
events.add(org.gradle.api.tasks.testing.logging.TestLogEvent.FAILED)
events.add(org.gradle.api.tasks.testing.logging.TestLogEvent.SKIPPED)
events = setOf(
TestLogEvent.FAILED,
TestLogEvent.SKIPPED
)
}

jvmArgs?.add("-Djava.security.egd=file:/dev/./urandom -Xmx256m")
reports.html.required.set(false)
}
Expand All @@ -282,17 +291,70 @@ tasks {
description = "Execute integration tests."
group = "verification"
include("**/*IT*", "**/*IntTest*")

testLogging {
events = setOf(
org.gradle.api.tasks.testing.logging.TestLogEvent.FAILED,
org.gradle.api.tasks.testing.logging.TestLogEvent.SKIPPED
TestLogEvent.FAILED,
TestLogEvent.SKIPPED
)
}
// Improvement ?
// https://stackoverflow.com/questions/3963708/gradle-how-to-display-test-results-in-the-console-in-real-time#answer-36130467
// https://gist.github.com/serpro69/c987a4016fb59f6ca2ff9f8d8464561d

jvmArgs?.add("-Djava.security.egd=file:/dev/./urandom -Xmx256m")
if (project.hasProperty("testcontainers")) {
environment = mapOf("spring.profiles.active" to "testcontainers")
}
reports.html.required.set(false)

beforeSuite(KotlinClosure0({ ->
val report_path = System.getenv("GITHUB_STEP_SUMMARY") ?: "local_report.md"
val file = File(report_path)
if(file.exists()) {
file.delete();
}
}))

afterTest(KotlinClosure2({ testDescriptor: TestDescriptor, result: TestResult ->
// https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestResult.html$
// https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestFailure.html
if (result.getResultType() == ResultType.FAILURE) {
val report_path = System.getenv("GITHUB_STEP_SUMMARY") ?: "local_report.md"
var report = File(report_path)
var test_name = testDescriptor.getName()
report.appendText("\n\n#### ${testDescriptor}\n\n")

for (failure in result.getFailures()) {
report.appendText("<details>\n")
report.appendText("<summary>${failure.getDetails().getMessage() ?: ""}</summary>\n\n")
report.appendText("\n\n```java\n")
report.appendText(failure.getDetails().getStacktrace() ?: "")
report.appendText("\n```\n")
report.appendText("\n</details>\n\n")

}
}
}))

afterSuite(KotlinClosure2({ desc: TestDescriptor, result: TestResult ->
if (desc.parent == null) { // will match the outermost suite
val report_path = System.getenv("GITHUB_STEP_SUMMARY") ?: "local_report.md"
val report_content = if (File(report_path).exists()) File(report_path).readText() else ""
FileWriter(report_path).use {
it.write("### Gradle Test report\n")
it.write("Test results: ${result.resultType}\n")
it.write("\n| Status |Count |")
it.write("\n| :---: | :---: |")
it.write("\n| Successful | ${result.successfulTestCount} |")
it.write("\n| Failed | ${result.failedTestCount} |")
it.write("\n| Skipped | ${result.skippedTestCount} |")
it.write("\n| Skipped | ${result.skippedTestCount} |\n\n")
it.write(report_content)
}

}
}))
}

create<TestReport>("testReport") {
Expand Down Expand Up @@ -364,11 +426,3 @@ tasks {
}

defaultTasks("bootRun")








0 comments on commit 72c290f

Please sign in to comment.