From a7717b297312195c397ddfcc427d55647c43847b Mon Sep 17 00:00:00 2001 From: Adam Ward Date: Tue, 23 Aug 2016 08:07:30 -0400 Subject: Bug 500120 - Fix C/C++ Unit test view history dropdown NPE Changes: - Listen for launch configurations to be deleted. Remove any testing sessions that ran using the deleted launch configuration. Testing: - Ran a couple test projects using the Google Test Runner. Ensured all sessions showed up in the dropdown. Deleted the launch configuration and tried to dropped down the list again. Deleted launch configuration sessions were removed from the list and no NPE. - Did the same above test but deleted the project, instead of launch configuration, which causes the launch configuration to get deleted and the same successful results occurred Change-Id: Ia32f3a6282ed0da7e154e7a7138681c7be16c0ef Signed-off-by: Adam Ward --- .../internal/model/TestingSessionsManager.java | 30 ++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'testsrunner/org.eclipse.cdt.testsrunner') diff --git a/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/model/TestingSessionsManager.java b/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/model/TestingSessionsManager.java index d00045bb7bc..43c7f6e4787 100644 --- a/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/model/TestingSessionsManager.java +++ b/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/model/TestingSessionsManager.java @@ -11,20 +11,23 @@ package org.eclipse.cdt.testsrunner.internal.model; import java.util.ArrayList; +import java.util.Iterator; import java.util.LinkedList; import java.util.List; -import org.eclipse.cdt.testsrunner.internal.launcher.TestsRunnerProvidersManager; import org.eclipse.cdt.testsrunner.internal.launcher.TestsRunnerProviderInfo; +import org.eclipse.cdt.testsrunner.internal.launcher.TestsRunnerProvidersManager; import org.eclipse.cdt.testsrunner.model.ITestingSession; import org.eclipse.core.runtime.CoreException; +import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; +import org.eclipse.debug.core.ILaunchConfigurationListener; /** * Manages all the testing sessions (creates, activates, stores history). */ -public class TestingSessionsManager { +public class TestingSessionsManager implements ILaunchConfigurationListener { /** Tests Runners Plug-ins Manager. */ private TestsRunnerProvidersManager testsRunnersManager; @@ -43,6 +46,7 @@ public class TestingSessionsManager { public TestingSessionsManager(TestsRunnerProvidersManager testsRunnersManager) { this.testsRunnersManager = testsRunnersManager; + DebugPlugin.getDefault().getLaunchManager().addLaunchConfigurationListener(this); } /** @@ -212,4 +216,26 @@ public class TestingSessionsManager { } } + @Override + public void launchConfigurationAdded(ILaunchConfiguration configuration) { + // Ignore + } + + @Override + public void launchConfigurationChanged(ILaunchConfiguration configuration) { + // Ignore + } + + @Override + public void launchConfigurationRemoved(ILaunchConfiguration configuration) { + for (Iterator iterator = sessions.iterator(); iterator.hasNext();) { + TestingSession session = iterator.next(); + if (session.getLaunch().getLaunchConfiguration() + .equals(configuration)) { + iterator.remove(); + } + } + truncateHistory(); + } + } -- cgit v1.2.3