Gradle

Stage for executing a Gradle project.

  • Kind: Compilation/Grading Stage

  • Behavior: Executes given tasks with respect to the Gradle project.

Config

gradle:
  targets: [String]                   # List of Gradle targets to execute
  args: [String]?                     # Arguments to the Gradle daemon
  score: Double?                      # Total Score of this stage
  treatDenormalScore: DenormalPolicy? # Policy to use when resulting score is NaN
  scoreWeighting: ScoreWeighting?     # Weighting policy of this stage
  • This stage implements Total-Based Scorable and Weighted Scorable.

    • The scorable policies are mutually exclusive; Enabling both is an error.

    • See Scorable.md for more information on score, treatDenormalScore, and scoreWeighting.

    • See XUnit.md for more information on the predicates available for scoreWeighting.

Usage Notes

In order for this stage to collect the JUnit test results, the usage of JUnit Platform must be specified in the Gradle build script as such:

test {
    useJUnitPlatform()
}

In addition, the report path must not be changed and XML must be enabled.

Example

gradle:
  targets: ["classes", "check"]
  args: []

Report

gradle:
  - hasTimedOut: Boolean  # Whether the stage timed out while executing
    isSuccess: Boolean    # Whether the stage is successful (either timed out or exited with non-zero)
    exitCode: Int         # Gradle exit-code
    stdout: [String]      # List of standard output
    stderr: [String]      # List of standard error output
    score: Score?         # The scoring information of this stage.
    report:               # See XUnit report format. Always `null` if stage execution timed out.
      # ...

See XUnit report.

Example (Execute-Only)

configError: null
contextError: null
pipelineError: null
stageReports:
  gradle:
  - hasTimedOut: false
    exitCode: 0
    stdout:
    - "Downloading https://services.gradle.org/distributions/gradle-6.3-bin.zip"
    - ".........10%..........20%..........30%.........40%..........50%..........60%.........70%..........80%..........90%..........100%"
    - ""
    - "Welcome to Gradle 6.3!"
    - ""
    - "Here are the highlights of this release:"
    - " - Java 14 support"
    - " - Improved error messages for unexpected failures"
    - ""
    - "For more details see https://docs.gradle.org/6.3/release-notes.html"
    - ""
    - "Starting a Gradle Daemon (subsequent builds will be faster)"
    - "> Task :compileJava"
    - "> Task :processResources NO-SOURCE"
    - "> Task :classes"
    - ""
    - "> Task :run"
    - "Hello world."
    - ""
    - "BUILD SUCCESSFUL in 12s"
    - "2 actionable tasks: 2 executed"
    stderr: []
    report:
      tests: 0
      skipped: 0
      failures: 0
      errors: 0
      testsuites: []
    score:
      score: null
      total: 100.0
    isSuccess: true

Example (Test)

configError: null
contextError: null
pipelineError:
  nonFatalError:
  - className: "dev.ust.zinc.grader.pipeline.docker.Gradle"
    message: "Container exited with status code 1"
    context:
    - "Stage=dev.ust.zinc.grader.pipeline.docker.Gradle@43691307"
    - "Exit Code=1"
    - "Container Logs=[]"
    cause: null
  fatalError: null
stageReports:
  gradle:
  - hasTimedOut: false
    exitCode: 1
    stdout:
    - "Downloading https://services.gradle.org/distributions/gradle-6.3-bin.zip"
    - ".........10%..........20%..........30%.........40%..........50%..........60%.........70%..........80%..........90%..........100%"
    - ""
    - "Welcome to Gradle 6.3!"
    - ""
    - "Here are the highlights of this release:"
    - " - Java 14 support"
    - " - Improved error messages for unexpected failures"
    - ""
    - "For more details see https://docs.gradle.org/6.3/release-notes.html"
    - ""
    - "Starting a Gradle Daemon (subsequent builds will be faster)"
    - "> Task :compileJava"
    - "> Task :processResources NO-SOURCE"
    - "> Task :classes"
    - "> Task :compileTestJava"
    - "> Task :processTestResources NO-SOURCE"
    - "> Task :testClasses"
    - ""
    - "> Task :test"
    - ""
    - "JUnit4Test > testThrowing FAILED"
    - "    java.lang.RuntimeException at JUnit4Test.java:34"
    - ""
    - "JUnit4Test > testFailing FAILED"
    - "    java.lang.AssertionError at JUnit4Test.java:15"
    - ""
    - "JUnit5Test > testThrowing() FAILED"
    - "    java.lang.RuntimeException at JUnit5Test.java:34"
    - ""
    - "JUnit5Test > testFailing() FAILED"
    - "    org.opentest4j.AssertionFailedError at JUnit5Test.java:15"
    - ""
    - "> Task :test FAILED"
    - "3 actionable tasks: 3 executed"
    stderr:
    - ""
    - "20 tests completed, 4 failed, 4 skipped"
    - ""
    - "FAILURE: Build failed with an exception."
    - ""
    - "* What went wrong:"
    - "Execution failed for task ':test'."
    - "> There were failing tests. See the report at: file:///vol/src/build/reports/tests/test/index.html"
    - ""
    - "* Try:"
    - "Run with --stacktrace option to get the stack trace. Run with --info or --debug\
      \ option to get more log output. Run with --scan to get full insights."
    - ""
    - "* Get more help at https://help.gradle.org"
    - ""
    - "BUILD FAILED in 23s"
    report:
      tests: 20
      skipped: 4
      failures: 4
      errors: 0
      testsuites:
      - name: "gradle.test.AppTest"
        displayName: "gradle.test.AppTest"
        tests: 1
        failures: 0
        skipped: 0
        errors: 0
        testcases:
        - name: "appHasAGreeting()"
          displayName: "appHasAGreeting()"
          classname: "gradle.test.AppTest"
          failures: []
      - name: "JUnit5Test"
        displayName: "JUnit5Test"
        tests: 10
        failures: 2
        skipped: 2
        errors: 0
        testcases:
        - name: "testThrowing()"
          displayName: "testThrowing()"
          classname: "JUnit5Test"
          failures:
          - category: "FAILURE"
            message: "java.lang.RuntimeException"
            type: "java.lang.RuntimeException"
            context: "java.lang.RuntimeException\n\tat JUnit5Test.testThrowing(JUnit5Test.java:34)\n\
              \tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native\
              \ Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\
              \tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\
              \tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\t\
              at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:686)\n\
              \tat org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)\n\
              \tat org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)\n\
              \tat org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)\n\
              \tat org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)\n\
              \tat org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)\n\
              \tat org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)\n\
              \tat org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)\n\
              \tat org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)\n\
              \tat org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)\n\
              \tat org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)\n\
              \tat org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)\n\
              \tat org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)\n\
              \tat org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)\n\
              \tat org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:205)\n\
              \tat org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)\n\
              \tat org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:201)\n\
              \tat org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:137)\n\
              \tat org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:71)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)\n\
              \tat org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)\n\
              \tat org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)\n\
              \tat org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)\n\
              \tat java.base/java.util.ArrayList.forEach(ArrayList.java:1540)\n\t\
              at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)\n\
              \tat org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)\n\
              \tat org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)\n\
              \tat org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)\n\
              \tat java.base/java.util.ArrayList.forEach(ArrayList.java:1540)\n\t\
              at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)\n\
              \tat org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)\n\
              \tat org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)\n\
              \tat org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)\n\
              \tat org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)\n\
              \tat org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)\n\
              \tat org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)\n\
              \tat org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)\n\
              \tat org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)\n\
              \tat org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)\n\
              \tat org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)\n\
              \tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native\
              \ Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\
              \tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\
              \tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\t\
              at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)\n\
              \tat org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)\n\
              \tat org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)\n\
              \tat org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)\n\
              \tat com.sun.proxy.$Proxy2.stop(Unknown Source)\n\tat org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)\n\
              \tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native\
              \ Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\
              \tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\
              \tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\t\
              at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)\n\
              \tat org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)\n\
              \tat org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)\n\
              \tat org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)\n\
              \tat org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:412)\n\
              \tat org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)\n\
              \tat org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)\n\
              \tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\
              \tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\
              \tat org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)\n\
              \tat java.base/java.lang.Thread.run(Thread.java:834)\n"
        - name: "testFailing()"
          displayName: "testFailing()"
          classname: "JUnit5Test"
          failures:
          - category: "FAILURE"
            message: "org.opentest4j.AssertionFailedError: expected: <true> but was:\
              \ <false>"
            type: "org.opentest4j.AssertionFailedError"
            context: "org.opentest4j.AssertionFailedError: expected: <true> but was:\
              \ <false>\n\tat org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:55)\n\
              \tat org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:40)\n\
              \tat org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:35)\n\
              \tat org.junit.jupiter.api.Assertions.assertTrue(Assertions.java:162)\n\
              \tat JUnit5Test.testFailing(JUnit5Test.java:15)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native\
              \ Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\
              \tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\
              \tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\t\
              at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:686)\n\
              \tat org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)\n\
              \tat org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)\n\
              \tat org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)\n\
              \tat org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)\n\
              \tat org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)\n\
              \tat org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)\n\
              \tat org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)\n\
              \tat org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)\n\
              \tat org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)\n\
              \tat org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)\n\
              \tat org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)\n\
              \tat org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)\n\
              \tat org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)\n\
              \tat org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:205)\n\
              \tat org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)\n\
              \tat org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:201)\n\
              \tat org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:137)\n\
              \tat org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:71)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)\n\
              \tat org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)\n\
              \tat org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)\n\
              \tat org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)\n\
              \tat java.base/java.util.ArrayList.forEach(ArrayList.java:1540)\n\t\
              at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)\n\
              \tat org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)\n\
              \tat org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)\n\
              \tat org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)\n\
              \tat java.base/java.util.ArrayList.forEach(ArrayList.java:1540)\n\t\
              at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)\n\
              \tat org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)\n\
              \tat org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)\n\
              \tat org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)\n\
              \tat org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)\n\
              \tat org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)\n\
              \tat org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)\n\
              \tat org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)\n\
              \tat org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)\n\
              \tat org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)\n\
              \tat org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)\n\
              \tat org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)\n\
              \tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native\
              \ Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\
              \tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\
              \tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\t\
              at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)\n\
              \tat org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)\n\
              \tat org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)\n\
              \tat org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)\n\
              \tat com.sun.proxy.$Proxy2.stop(Unknown Source)\n\tat org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)\n\
              \tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native\
              \ Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\
              \tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\
              \tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\t\
              at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)\n\
              \tat org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)\n\
              \tat org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)\n\
              \tat org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)\n\
              \tat org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:412)\n\
              \tat org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)\n\
              \tat org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)\n\
              \tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\
              \tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\
              \tat org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)\n\
              \tat java.base/java.lang.Thread.run(Thread.java:834)\n"
        - name: "testPassing()"
          displayName: "testPassing()"
          classname: "JUnit5Test"
          failures: []
        - name: "testTestName()"
          displayName: "testTestName()"
          classname: "JUnit5Test"
          failures: []
        - name: "testStandardError()"
          displayName: "testStandardError()"
          classname: "JUnit5Test"
          failures: []
        - name: "testMixedOutput()"
          displayName: "testMixedOutput()"
          classname: "JUnit5Test"
          failures: []
        - name: "testStandardOutput()"
          displayName: "testStandardOutput()"
          classname: "JUnit5Test"
          failures: []
        - name: "testDisabled()"
          displayName: "testDisabled()"
          classname: "JUnit5Test"
          failures:
          - category: "SKIPPED"
            message: null
            type: null
            context: ""
        - name: "testDelayed()"
          displayName: "testDelayed()"
          classname: "JUnit5Test"
          failures: []
        - name: "testFalseAssumption()"
          displayName: "testFalseAssumption()"
          classname: "JUnit5Test"
          failures:
          - category: "SKIPPED"
            message: null
            type: null
            context: ""
      - name: "JUnit4Test"
        displayName: "JUnit4Test"
        tests: 9
        failures: 2
        skipped: 2
        errors: 0
        testcases:
        - name: "testThrowing"
          displayName: "testThrowing"
          classname: "JUnit4Test"
          failures:
          - category: "FAILURE"
            message: "java.lang.RuntimeException"
            type: "java.lang.RuntimeException"
            context: "java.lang.RuntimeException\n\tat JUnit4Test.testThrowing(JUnit4Test.java:34)\n\
              \tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native\
              \ Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\
              \tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\
              \tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\t\
              at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\n\
              \tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\n\
              \tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\n\
              \tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\n\
              \tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\n\
              \tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\n\
              \tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\n\
              \tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\n\
              \tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\n\
              \tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\n\t\
              at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\n\
              \tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\n\
              \tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\n\
              \tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\n\
              \tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\n\
              \tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\n\tat\
              \ org.junit.runner.JUnitCore.run(JUnitCore.java:137)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:115)\n\
              \tat org.junit.vintage.engine.execution.RunnerExecutor.execute(RunnerExecutor.java:43)\n\
              \tat java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)\n\
              \tat java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)\n\
              \tat java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)\n\
              \tat java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)\n\
              \tat java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)\n\
              \tat java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)\n\
              \tat java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)\n\
              \tat java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)\n\
              \tat java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)\n\
              \tat java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)\n\
              \tat org.junit.vintage.engine.VintageTestEngine.executeAllChildren(VintageTestEngine.java:82)\n\
              \tat org.junit.vintage.engine.VintageTestEngine.execute(VintageTestEngine.java:73)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)\n\
              \tat org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)\n\
              \tat org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)\n\
              \tat org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)\n\
              \tat org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)\n\
              \tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native\
              \ Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\
              \tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\
              \tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\t\
              at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)\n\
              \tat org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)\n\
              \tat org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)\n\
              \tat org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)\n\
              \tat com.sun.proxy.$Proxy2.stop(Unknown Source)\n\tat org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)\n\
              \tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native\
              \ Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\
              \tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\
              \tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\t\
              at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)\n\
              \tat org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)\n\
              \tat org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)\n\
              \tat org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)\n\
              \tat org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:412)\n\
              \tat org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)\n\
              \tat org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)\n\
              \tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\
              \tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\
              \tat org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)\n\
              \tat java.base/java.lang.Thread.run(Thread.java:834)\n"
        - name: "testFailing"
          displayName: "testFailing"
          classname: "JUnit4Test"
          failures:
          - category: "FAILURE"
            message: "java.lang.AssertionError"
            type: "java.lang.AssertionError"
            context: "java.lang.AssertionError\n\tat org.junit.Assert.fail(Assert.java:87)\n\
              \tat org.junit.Assert.assertTrue(Assert.java:42)\n\tat org.junit.Assert.assertTrue(Assert.java:53)\n\
              \tat JUnit4Test.testFailing(JUnit4Test.java:15)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native\
              \ Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\
              \tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\
              \tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\t\
              at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\n\
              \tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\n\
              \tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\n\
              \tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\n\
              \tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\n\
              \tat org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\n\
              \tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\n\
              \tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\n\
              \tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\n\
              \tat org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\n\t\
              at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\n\
              \tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\n\
              \tat org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\n\
              \tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\n\
              \tat org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\n\
              \tat org.junit.runners.ParentRunner.run(ParentRunner.java:413)\n\tat\
              \ org.junit.runner.JUnitCore.run(JUnitCore.java:137)\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:115)\n\
              \tat org.junit.vintage.engine.execution.RunnerExecutor.execute(RunnerExecutor.java:43)\n\
              \tat java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)\n\
              \tat java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)\n\
              \tat java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)\n\
              \tat java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)\n\
              \tat java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)\n\
              \tat java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)\n\
              \tat java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)\n\
              \tat java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)\n\
              \tat java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)\n\
              \tat java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)\n\
              \tat org.junit.vintage.engine.VintageTestEngine.executeAllChildren(VintageTestEngine.java:82)\n\
              \tat org.junit.vintage.engine.VintageTestEngine.execute(VintageTestEngine.java:73)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)\n\
              \tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)\n\
              \tat org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)\n\
              \tat org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)\n\
              \tat org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)\n\
              \tat org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)\n\
              \tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native\
              \ Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\
              \tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\
              \tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\t\
              at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)\n\
              \tat org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)\n\
              \tat org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)\n\
              \tat org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)\n\
              \tat com.sun.proxy.$Proxy2.stop(Unknown Source)\n\tat org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)\n\
              \tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native\
              \ Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\
              \tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\
              \tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\t\
              at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)\n\
              \tat org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)\n\
              \tat org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)\n\
              \tat org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)\n\
              \tat org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:412)\n\
              \tat org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)\n\
              \tat org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)\n\
              \tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\
              \tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\
              \tat org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)\n\
              \tat java.base/java.lang.Thread.run(Thread.java:834)\n"
        - name: "testPassing"
          displayName: "testPassing"
          classname: "JUnit4Test"
          failures: []
        - name: "testStandardError"
          displayName: "testStandardError"
          classname: "JUnit4Test"
          failures: []
        - name: "testMixedOutput"
          displayName: "testMixedOutput"
          classname: "JUnit4Test"
          failures: []
        - name: "testStandardOutput"
          displayName: "testStandardOutput"
          classname: "JUnit4Test"
          failures: []
        - name: "testDisabled"
          displayName: "testDisabled"
          classname: "JUnit4Test"
          failures:
          - category: "SKIPPED"
            message: null
            type: null
            context: ""
        - name: "testDelayed"
          displayName: "testDelayed"
          classname: "JUnit4Test"
          failures: []
        - name: "testFalseAssumption"
          displayName: "testFalseAssumption"
          classname: "JUnit4Test"
          failures:
          - category: "SKIPPED"
            message: null
            type: null
            context: ""
    score:
      score: 75.0
      total: 100.0
    isSuccess: false
  nonFatalError:
  - className: "dev.ust.zinc.grader.pipeline.docker.Gradle"
    message: "Container exited with status code 1"
    context:
    - "Stage=dev.ust.zinc.grader.pipeline.docker.Gradle@43691307"
    - "Exit Code=1"
    - "Container Logs=[]"
    cause: null