mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-13 15:52:01 +07:00
[PyCharm] PY-65177 added test for retaining unmatched files + bugfixes in WslSync
GitOrigin-RevId: 57acc5e13df372f4501ba989046f915883953d83
This commit is contained in:
committed by
intellij-monorepo-bot
parent
0aacc9080d
commit
af1dd46ed5
@@ -302,6 +302,36 @@ class WslSyncTest(private val linToWin: Boolean) {
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testRetainUnmatchedFiles() = runWithJob {
|
||||
val windowsDir = winDirRule.newDirectoryPath()
|
||||
val srcDir = if (linToWin) linuxDirAsPath else windowsDir
|
||||
val dstDir = if (linToWin) windowsDir else linuxDirAsPath
|
||||
|
||||
val sourceFiles = listOf("file1.txt", "file2.txt", "file3.txt")
|
||||
for (fileName in sourceFiles) {
|
||||
srcDir.resolve(fileName).writeText("Content of $fileName")
|
||||
}
|
||||
|
||||
val extraFile = "extra_file.txt"
|
||||
dstDir.resolve(extraFile).writeText("Content of $extraFile")
|
||||
WslSync.syncWslFolders(linuxDirRule.dir, windowsDir, wslRule.wsl, linToWin, retainUnmatchedFiles = false)
|
||||
Assert.assertFalse("Extra file should be deleted", dstDir.resolve(extraFile).exists())
|
||||
dstDir.resolve(extraFile).writeText("Content of $extraFile")
|
||||
|
||||
WslSync.syncWslFolders(linuxDirRule.dir, windowsDir, wslRule.wsl, linToWin, retainUnmatchedFiles = true)
|
||||
|
||||
for (fileName in sourceFiles) {
|
||||
Assert.assertTrue("Source file $fileName should be present", dstDir.resolve(fileName).exists())
|
||||
}
|
||||
|
||||
Assert.assertTrue("Extra file should be retained", dstDir.resolve(extraFile).exists())
|
||||
|
||||
Assert.assertEquals("Content of extra file should be unchanged",
|
||||
"Content of $extraFile",
|
||||
dstDir.resolve(extraFile).readText())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun syncWithIncludesAndStubs() = runWithJob {
|
||||
doSyncAndAssertFilePresence(
|
||||
|
||||
@@ -129,22 +129,22 @@ class WslSync<SourceFile, DestFile> private constructor(private val source: File
|
||||
val sourceHashAndName = sourceHashes[destRecord.fileLowerCase]
|
||||
|
||||
if (sourceHashAndName != null) {
|
||||
if (sourceHashAndName.hash == destRecord.hash) {
|
||||
if (sourceHashAndName.hash != destRecord.hash) {
|
||||
filesToCopy.add(sourceHashAndName.file)
|
||||
}
|
||||
sourceHashes.remove(destRecord.fileLowerCase)
|
||||
} else {
|
||||
} else if (!retainUnmatchedFiles) {
|
||||
destFilesToRemove.add(destRecord.file)
|
||||
}
|
||||
} else {
|
||||
if (!retainUnmatchedFiles) {
|
||||
destFilesToRemove.add(destRecord.file)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add remaining files from source that don't exist in dest
|
||||
filesToCopy.addAll(sourceHashes.values.map { it.file })
|
||||
copyFilesInParallel(filesToCopy)
|
||||
|
||||
if (!retainUnmatchedFiles) { dest.removeFiles(destFilesToRemove) }
|
||||
copyFilesInParallel(filesToCopy)
|
||||
if (!retainUnmatchedFiles) {
|
||||
dest.removeFiles(destFilesToRemove)
|
||||
}
|
||||
|
||||
syncLinks(sourceSyncData.links, destSyncData.links)
|
||||
syncStubs(sourceSyncData.stubs, destSyncData.stubs)
|
||||
|
||||
Reference in New Issue
Block a user