Fix FileAlreadyExistsException when running coverage with RBE (#1307)
* copy java_tools fix
see https://github.com/bazelbuild/bazel/pull/25273/files#diff-0bfb7f2e6bab3020f410f5ee9ec45ddcef952455f814c6510f72c5ef1300542fL113
* fix formatting
diff --git a/src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/JacocoInstrumentation.kt b/src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/JacocoInstrumentation.kt
index 28ef1a0..29606bb 100644
--- a/src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/JacocoInstrumentation.kt
+++ b/src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/JacocoInstrumentation.kt
@@ -10,6 +10,7 @@
import java.nio.file.Path
import java.nio.file.Paths
import java.nio.file.SimpleFileVisitor
+import java.nio.file.StandardOpenOption
import java.nio.file.attribute.BasicFileAttributes
internal fun JvmCompilationTask.createCoverageInstrumentedJar() {
@@ -68,12 +69,15 @@
val uninstrumentedCopy = metadataDir.resolve(root.relativize(absoluteUninstrumentedCopy))
Files.createDirectories(uninstrumentedCopy.parent)
- Files.move(file, uninstrumentedCopy)
+ Files.copy(file, uninstrumentedCopy)
Files.newInputStream(uninstrumentedCopy).buffered().use { input ->
- Files.newOutputStream(file).buffered().use { output ->
- instr.instrument(input, output, file.toString())
- }
+ Files
+ .newOutputStream(file, StandardOpenOption.TRUNCATE_EXISTING)
+ .buffered()
+ .use { output ->
+ instr.instrument(input, output, file.toString())
+ }
}
return FileVisitResult.CONTINUE