From a138692d899e5bf1a25ff7e466a76c5d7fc048db Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Wed, 30 Jan 2013 12:57:50 +0400 Subject: [PATCH] IDEA-99915 Gradle: mismatched (yellow) dependencies multiply on changing dependencies list Don't process old changes as new --- .../sync/GradleProjectStructureTreeModel.java | 4 +- .../GradleOutdatedLibraryVersionTest.groovy | 63 +++++++++++++++++++ 2 files changed, 65 insertions(+), 2 deletions(-) diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/sync/GradleProjectStructureTreeModel.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/sync/GradleProjectStructureTreeModel.java index 82ea8108e4a6..6df9866c7794 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/sync/GradleProjectStructureTreeModel.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/sync/GradleProjectStructureTreeModel.java @@ -125,7 +125,7 @@ public class GradleProjectStructureTreeModel extends DefaultTreeModel { @Override public void run() { Collection obsoleteChangesToUse = ContainerUtil.subtract(oldChanges, currentChanges); - Collection currentChangesToUse = currentChanges; + Collection currentChangesToUse = ContainerUtil.subtract(currentChanges, oldChanges); if (myChangesComparator != null) { obsoleteChangesToUse = sort(obsoleteChangesToUse, myChangesComparator); currentChangesToUse = sort(currentChangesToUse, myChangesComparator); @@ -225,7 +225,7 @@ public class GradleProjectStructureTreeModel extends DefaultTreeModel { GradleProject project = myChangesModel.getGradleProject(); if (project != null) { GradleChangesCalculationContext context = myChangesModel.getCurrentChangesContext(project); - processChanges(context.getKnownChanges(), context.getCurrentChanges()); + processChanges(Collections.emptyList(), context.getCurrentChanges()); filterNodes(root); } } diff --git a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/sync/GradleOutdatedLibraryVersionTest.groovy b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/sync/GradleOutdatedLibraryVersionTest.groovy index a5a7dae88cf0..046dc9b778dc 100644 --- a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/sync/GradleOutdatedLibraryVersionTest.groovy +++ b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/sync/GradleOutdatedLibraryVersionTest.groovy @@ -133,4 +133,67 @@ class GradleOutdatedLibraryVersionTest extends AbstractGradleTest { dependencies { 'lib (1 -> 2)' ('outdated') } } } } } + + @Test + void "gradle-local library after outdated library"() { + init( + gradle: { + project { + module { + dependencies { + library('lib1-1') } } } }, + intellij: { + project { + module { + dependencies { + library('lib1-1') } } } } ) + checkChanges {} + + setState(gradle: { + project { + module { + dependencies { + library('lib1-2')} } } } ) + + checkChanges { + libraryVersion ( + name: 'lib1', + gradleVersion: '2', + gradleLibraryId: findLibraryId('lib1-2', true), + ideVersion: '1', + ideLibraryId: findLibraryId('lib1-1', false) + ) + } + checkTree { + project { + module { + dependencies { + 'lib1 (1 -> 2)' ('outdated')} } } } + + setState(gradle: { + project { + module { + dependencies { + library('lib1-2') + library('lib2-1') } } } } ) + checkChanges { + libraryVersion ( + name: 'lib1', + gradleVersion: '2', + gradleLibraryId: findLibraryId('lib1-2', true), + ideVersion: '1', + ideLibraryId: findLibraryId('lib1-1', false) + ) + presence { + library(gradle: gradle.libraryDependencies.values().flatten().findAll { it.name == "lib2-1" }) + } + } + checkTree { + project { + module { + dependencies { + 'lib2-1' ('gradle') + 'lib1 (1 -> 2)' ('outdated') + } } } } + } }