[IR, Native] KLIB ABI tests: backup but don't overwrite artifacts

^KT-50775
This commit is contained in:
Dmitriy Dolovov
2022-01-20 18:27:12 +03:00
parent 3648ae222c
commit 7df68af664
2 changed files with 23 additions and 4 deletions
@@ -36,7 +36,8 @@ abstract class AbstractNativeKlibABITest : AbstractNativeSimpleTest() {
buildDir = buildDir,
stdlibFile = stdlibFile,
buildKlib = ::buildKlib,
buildBinaryAndRun = { _, allDependencies -> buildBinaryAndRun(allDependencies) }
buildBinaryAndRun = { _, allDependencies -> buildBinaryAndRun(allDependencies) },
onNonEmptyBuildDirectory = ::backupDirectoryContents
)
private fun buildKlib(moduleName: String, moduleSourceDir: File, moduleDependencies: Collection<File>, klibFile: File) {
@@ -122,5 +123,20 @@ abstract class AbstractNativeKlibABITest : AbstractNativeSimpleTest() {
)
private val DEFAULT_EXTRAS = WithTestRunnerExtras(TestRunnerType.DEFAULT)
private const val BACKED_UP_DIRECTORY_PREFIX = "__backup-"
private fun backupDirectoryContents(directory: File) {
val filesToBackup = directory.listFiles()?.mapNotNull { file ->
if (file.isDirectory && file.name.startsWith(BACKED_UP_DIRECTORY_PREFIX)) null else file
}
if (!filesToBackup.isNullOrEmpty()) {
val backupDirectory = directory.resolve("$BACKED_UP_DIRECTORY_PREFIX${System.currentTimeMillis()}__")
backupDirectory.mkdirs()
filesToBackup.forEach { file -> file.renameTo(backupDirectory.resolve(file.name)) }
}
}
}
}