diff --git a/backend/build.gradle.kts b/backend/build.gradle.kts
index 9a35523bbe..6b654a68de 100644
--- a/backend/build.gradle.kts
+++ b/backend/build.gradle.kts
@@ -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"
@@ -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)
}
@@ -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("\n")
+ report.appendText("${failure.getDetails().getMessage() ?: ""}
\n\n")
+ report.appendText("\n\n```java\n")
+ report.appendText(failure.getDetails().getStacktrace() ?: "")
+ report.appendText("\n```\n")
+ report.appendText("\n \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") {
@@ -364,11 +426,3 @@ tasks {
}
defaultTasks("bootRun")
-
-
-
-
-
-
-
-