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
|
@Test
|
||||||
fun syncWithIncludesAndStubs() = runWithJob {
|
fun syncWithIncludesAndStubs() = runWithJob {
|
||||||
doSyncAndAssertFilePresence(
|
doSyncAndAssertFilePresence(
|
||||||
|
|||||||
@@ -129,22 +129,22 @@ class WslSync<SourceFile, DestFile> private constructor(private val source: File
|
|||||||
val sourceHashAndName = sourceHashes[destRecord.fileLowerCase]
|
val sourceHashAndName = sourceHashes[destRecord.fileLowerCase]
|
||||||
|
|
||||||
if (sourceHashAndName != null) {
|
if (sourceHashAndName != null) {
|
||||||
if (sourceHashAndName.hash == destRecord.hash) {
|
if (sourceHashAndName.hash != destRecord.hash) {
|
||||||
sourceHashes.remove(destRecord.fileLowerCase)
|
filesToCopy.add(sourceHashAndName.file)
|
||||||
} else {
|
|
||||||
destFilesToRemove.add(destRecord.file)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!retainUnmatchedFiles) {
|
|
||||||
destFilesToRemove.add(destRecord.file)
|
|
||||||
}
|
}
|
||||||
|
sourceHashes.remove(destRecord.fileLowerCase)
|
||||||
|
} 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 })
|
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)
|
syncLinks(sourceSyncData.links, destSyncData.links)
|
||||||
syncStubs(sourceSyncData.stubs, destSyncData.stubs)
|
syncStubs(sourceSyncData.stubs, destSyncData.stubs)
|
||||||
|
|||||||
Reference in New Issue
Block a user