mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[workspace model] Save iml files only for affected modules to avoid changes in unrelated files
GitOrigin-RevId: 5492692bd3f63a16ef7d384d23597893bd59e785
This commit is contained in:
committed by
intellij-monorepo-bot
parent
080e401d22
commit
ddcdcf2308
+8
@@ -485,6 +485,14 @@ class JpsProjectSerializersImpl(directorySerializersFactories: List<JpsDirectory
|
||||
saveEntities(storage, ImmutableEntityStorage.empty(), allSources, writer)
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
override fun saveAffectedEntities(storage: EntityStorage, affectedEntitySources: Set<EntitySource>, writer: JpsFileContentWriter) {
|
||||
moduleListSerializersByUrl.values.forEach {
|
||||
saveModulesList(it, storage, ImmutableEntityStorage.empty(), writer)
|
||||
}
|
||||
saveEntities(storage, ImmutableEntityStorage.empty(), affectedEntitySources, writer)
|
||||
}
|
||||
|
||||
internal fun getActualFileUrl(source: EntitySource): String? {
|
||||
val actualFileSource = getActualFileSource(source) ?: return null
|
||||
return when (actualFileSource) {
|
||||
|
||||
+3
@@ -146,6 +146,9 @@ interface JpsProjectSerializers {
|
||||
@TestOnly
|
||||
fun saveAllEntities(storage: EntityStorage, writer: JpsFileContentWriter)
|
||||
|
||||
@TestOnly
|
||||
fun saveAffectedEntities(storage: EntityStorage, affectedEntitySources: Set<EntitySource>, writer: JpsFileContentWriter)
|
||||
|
||||
fun saveEntities(storage: EntityStorage, unloadedEntityStorage: EntityStorage, affectedSources: Set<EntitySource>,
|
||||
writer: JpsFileContentWriter)
|
||||
|
||||
|
||||
+11
@@ -43,6 +43,7 @@ import com.intellij.workspaceModel.ide.impl.GlobalWorkspaceModel
|
||||
import junit.framework.AssertionFailedError
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import org.jdom.Element
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.jps.model.serialization.JDomSerializationUtil
|
||||
import org.jetbrains.jps.model.serialization.PathMacroUtil
|
||||
import org.jetbrains.jps.util.JpsPathUtil
|
||||
@@ -129,6 +130,7 @@ internal fun loadProject(configLocation: JpsProjectConfigLocation,
|
||||
}
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
fun JpsProjectSerializersImpl.saveAllEntities(storage: EntityStorage, configLocation: JpsProjectConfigLocation) {
|
||||
val writer = JpsFileContentWriterImpl(configLocation)
|
||||
saveAllEntities(storage, writer)
|
||||
@@ -137,6 +139,15 @@ fun JpsProjectSerializersImpl.saveAllEntities(storage: EntityStorage, configLoca
|
||||
writer.writeFiles(modulePathMapping)
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
fun JpsProjectSerializersImpl.saveAffectedEntities(storage: EntityStorage, affectedEntitySources: Set<EntitySource>, configLocation: JpsProjectConfigLocation) {
|
||||
val writer = JpsFileContentWriterImpl(configLocation)
|
||||
saveAffectedEntities(storage, affectedEntitySources, writer)
|
||||
val modulePathMapping = this.moduleSerializers.keys.filterIsInstance<ExternalModuleImlFileEntitiesSerializer>()
|
||||
.associate { it.fileUrl.url to it.modulePath.path }
|
||||
writer.writeFiles(modulePathMapping)
|
||||
}
|
||||
|
||||
internal fun assertDirectoryMatches(actualDir: File, expectedDir: File, filesToIgnore: Set<String>, componentsToIgnore: List<String>) {
|
||||
val actualFiles = actualDir.walk().filter { it.isFile }.associateBy {
|
||||
FileUtil.toSystemIndependentName(FileUtil.getRelativePath(actualDir, it)!!)
|
||||
|
||||
+3
-2
@@ -32,7 +32,7 @@ import com.intellij.util.SystemProperties
|
||||
import com.intellij.workspaceModel.ide.impl.IdeVirtualFileUrlManagerImpl
|
||||
import com.intellij.workspaceModel.ide.impl.jps.serialization.CachingJpsFileContentReader
|
||||
import com.intellij.workspaceModel.ide.impl.jps.serialization.SerializationContextForTests
|
||||
import com.intellij.workspaceModel.ide.impl.jps.serialization.saveAllEntities
|
||||
import com.intellij.workspaceModel.ide.impl.jps.serialization.saveAffectedEntities
|
||||
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_TEST_ROOT_ENTITY_TYPE_ID
|
||||
import junit.framework.AssertionFailedError
|
||||
import kotlinx.coroutines.runBlocking
|
||||
@@ -215,7 +215,8 @@ class AllIntellijEntitiesGenerationTest : CodeGenerationTestBase() {
|
||||
}
|
||||
}
|
||||
if (storageChanged) {
|
||||
(jpsProjectSerializer as JpsProjectSerializersImpl).saveAllEntities(storage, createProjectConfigLocation())
|
||||
val affectedEntitySources = modulesToCheck.map { it.key.first.entitySource }.toSet()
|
||||
(jpsProjectSerializer as JpsProjectSerializersImpl).saveAffectedEntities(storage, affectedEntitySources, createProjectConfigLocation())
|
||||
}
|
||||
PlatformTestUtil.dispatchAllInvocationEventsInIdeEventQueue()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user