现象
在 arm64 Alpine proot 容器中运行 ./gradlew :app:testUniversalDebugUnitTest,SkillRepositoryTest.safeDeleteSkillDir_deletesOnlySkillDirectories 稳定失败(212 个测试中唯一失败)。
根因
SkillRepository.safeDeleteSkillDir(app/src/main/java/com/aicode/feature/agent/domain/skill/SkillRepository.kt:63)用 File.deleteRecursively() 删除目录。在 proot 容器中 JVM 进程删除目录失败(与 mergeUniversalDebugJavaResource 删 tempdir、compileUniversalDebugKotlin 删 kotlin-classes 同类问题),导致 deleteRecursively() 返回 false,断言失败。
影响
- 与具体代码改动无关,任何改动在该容器环境跑全量单测都会遇到此失败
- 非 proot 环境(本地/CI)不受影响
- 手动
rm -rf 可删除,但 JVM 进程内删除失败
建议
- 测试环境改用非 proot 容器,或
- 测试代码中用
ProcessBuilder("rm", "-rf", ...) 等绕行方案(仅测试代码)
现象
在 arm64 Alpine proot 容器中运行
./gradlew :app:testUniversalDebugUnitTest,SkillRepositoryTest.safeDeleteSkillDir_deletesOnlySkillDirectories稳定失败(212 个测试中唯一失败)。根因
SkillRepository.safeDeleteSkillDir(app/src/main/java/com/aicode/feature/agent/domain/skill/SkillRepository.kt:63)用File.deleteRecursively()删除目录。在 proot 容器中 JVM 进程删除目录失败(与mergeUniversalDebugJavaResource删 tempdir、compileUniversalDebugKotlin删 kotlin-classes 同类问题),导致deleteRecursively()返回 false,断言失败。影响
rm -rf可删除,但 JVM 进程内删除失败建议
ProcessBuilder("rm", "-rf", ...)等绕行方案(仅测试代码)