From 9db70bb2d4774b34edaaa7fb92d8d0968e65462e Mon Sep 17 00:00:00 2001 From: Nikolay Chashnikov Date: Thu, 13 Oct 2022 16:30:53 +0200 Subject: [PATCH] [workspace model] fix behavior of ContentEntry::removeExcludePattern GitOrigin-RevId: 35591546dca7b29fe5ddca8619ce4586b37b3262 --- .../roots/ContentEntriesInRootModelTest.kt | 29 +++++++++++++++++-- .../roots/ModifiableContentEntryBridge.kt | 2 +- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/platform/lang-impl/testSources/com/intellij/openapi/roots/ContentEntriesInRootModelTest.kt b/platform/lang-impl/testSources/com/intellij/openapi/roots/ContentEntriesInRootModelTest.kt index a774e35a29df..3e42ad128eb8 100644 --- a/platform/lang-impl/testSources/com/intellij/openapi/roots/ContentEntriesInRootModelTest.kt +++ b/platform/lang-impl/testSources/com/intellij/openapi/roots/ContentEntriesInRootModelTest.kt @@ -73,6 +73,19 @@ class ContentEntriesInRootModelTest { checkContentEntryConsistency(committedEntry) } + run { + val model = createModifiableModel(module) + model.removeContentEntry(model.contentEntries.single()) + val committed = commitModifiableRootModel(model) + assertThat(committed.contentEntries).isEmpty() + } + } + + @Test + fun `add remove excluded pattern`() { + val contentRoot = projectModel.baseProjectDir.newVirtualDirectory("content") + ModuleRootModificationUtil.addContentRoot(module, contentRoot) + run { val model = createModifiableModel(module) val entry = model.contentEntries.single() @@ -84,12 +97,24 @@ class ContentEntriesInRootModelTest { assertThat(committedEntry.file).isEqualTo(contentRoot) assertThat(committedEntry.excludePatterns).containsExactly("*.txt") } + + run { + val model = createModifiableModel(module) + val entry = model.contentEntries.single() + entry.addExcludePattern("*.xml") + entry.removeExcludePattern("*.txt") + assertThat(entry.excludePatterns).containsExactly("*.xml") + val committed = commitModifiableRootModel(model) + assertThat(committed.contentEntries.single().excludePatterns).containsExactly("*.xml") + } run { val model = createModifiableModel(module) - model.removeContentEntry(model.contentEntries.single()) + val entry = model.contentEntries.single() + entry.excludePatterns = listOf("*.js", "*.ts") + assertThat(entry.excludePatterns).containsExactly("*.js", "*.ts") val committed = commitModifiableRootModel(model) - assertThat(committed.contentEntries).isEmpty() + assertThat(committed.contentEntries.single().excludePatterns).containsExactly("*.js", "*.ts") } } diff --git a/platform/projectModel-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/module/roots/ModifiableContentEntryBridge.kt b/platform/projectModel-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/module/roots/ModifiableContentEntryBridge.kt index 1dd62bd0b5f4..cd420f1a8fe4 100644 --- a/platform/projectModel-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/module/roots/ModifiableContentEntryBridge.kt +++ b/platform/projectModel-impl/src/com/intellij/workspaceModel/ide/impl/legacyBridge/module/roots/ModifiableContentEntryBridge.kt @@ -177,7 +177,7 @@ internal class ModifiableContentEntryBridge( override fun removeExcludePattern(pattern: String) { updateContentEntry { - excludedPatterns = mutableListOf() + excludedPatterns.remove(pattern) } }