Compare commits

...

2 Commits

Author SHA1 Message Date
nx-cloud[bot] 84e3e03e6c chore(gradle): format diagnostic logging code with ktfmt
Co-authored-by: MaxKless <MaxKless@users.noreply.github.com>
2026-02-24 15:03:41 +00:00
Max Kless 57d2798f32 chore(gradle): add diagnostic logging for CI test XML write failures
Add doFirst/doLast diagnostics to project-graph test task to investigate
intermittent "Could not write XML test results" failures in CI. Logs
directory state, permissions, and disk space before and after tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 15:27:11 +01:00
+62 -1
View File
@@ -128,6 +128,67 @@ afterEvaluate {
tasks.withType<Sign>().configureEach { onlyIf { !skipSign } }
}
tasks.test { useJUnitPlatform() }
tasks.test {
useJUnitPlatform()
// Diagnostic logging for CI XML test result write failures
doFirst {
val resultsDir = reports.junitXml.outputLocation.get().asFile
val binResultsDir = binaryResultsDirectory.get().asFile
logger.lifecycle("=== Test diagnostics (doFirst) ===")
logger.lifecycle("JUnit XML output dir: $resultsDir")
logger.lifecycle(
" exists=${resultsDir.exists()}, canWrite=${resultsDir.canWrite()}, isDirectory=${resultsDir.isDirectory}")
logger.lifecycle("Binary results dir: $binResultsDir")
logger.lifecycle(
" exists=${binResultsDir.exists()}, canWrite=${binResultsDir.canWrite()}, isDirectory=${binResultsDir.isDirectory}")
logger.lifecycle("Build dir: ${project.layout.buildDirectory.get().asFile}")
logger.lifecycle(
" exists=${project.layout.buildDirectory.get().asFile.exists()}, canWrite=${project.layout.buildDirectory.get().asFile.canWrite()}")
// Check disk space
val buildFile = project.layout.buildDirectory.get().asFile
val root = if (buildFile.exists()) buildFile else project.projectDir
logger.lifecycle("Disk space on ${root.absolutePath}:")
logger.lifecycle(
" totalSpace=${root.totalSpace / (1024*1024)}MB, freeSpace=${root.freeSpace / (1024*1024)}MB, usableSpace=${root.usableSpace / (1024*1024)}MB")
// List parent directory contents
val parentDir = resultsDir.parentFile
if (parentDir?.exists() == true) {
logger.lifecycle("Parent dir contents (${parentDir.absolutePath}):")
parentDir.listFiles()?.forEach {
logger.lifecycle(" ${it.name} (dir=${it.isDirectory}, write=${it.canWrite()})")
}
}
}
doLast {
val resultsDir = reports.junitXml.outputLocation.get().asFile
logger.lifecycle("=== Test diagnostics (doLast) ===")
logger.lifecycle("JUnit XML output dir after tests: $resultsDir")
logger.lifecycle(" exists=${resultsDir.exists()}, canWrite=${resultsDir.canWrite()}")
if (resultsDir.exists()) {
logger.lifecycle("XML result files:")
resultsDir.listFiles()?.forEach {
logger.lifecycle(" ${it.name} size=${it.length()} canRead=${it.canRead()}")
}
}
val binResultsDir = binaryResultsDirectory.get().asFile
logger.lifecycle("Binary results dir after tests: $binResultsDir")
logger.lifecycle(" exists=${binResultsDir.exists()}")
if (binResultsDir.exists()) {
logger.lifecycle("Binary result files:")
binResultsDir.listFiles()?.forEach { logger.lifecycle(" ${it.name} size=${it.length()}") }
}
// Check disk space again
val root = if (resultsDir.exists()) resultsDir else project.projectDir
logger.lifecycle("Disk space after tests:")
logger.lifecycle(
" freeSpace=${root.freeSpace / (1024*1024)}MB, usableSpace=${root.usableSpace / (1024*1024)}MB")
}
}
java { toolchain.languageVersion.set(JavaLanguageVersion.of(17)) }