blob: 4ebdc0995589a1096f605a15c3a05f57b49df303 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.debug.tests.core;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.model.IProcess;
import org.eclipse.debug.internal.ui.DebugUIPlugin;
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.jdt.debug.core.IJavaDebugTarget;
import org.eclipse.jdt.debug.tests.AbstractDebugTest;
import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.ui.console.IConsole;
import org.eclipse.ui.console.IConsoleManager;
import org.eclipse.ui.console.MessageConsole;
/**
* Tests console line tracker.
*/
public class ConsoleTests extends AbstractDebugTest {
public ConsoleTests(String name) {
super(name);
}
class TestConsole extends MessageConsole {
public boolean fInit = false;
public boolean fDispose = false;
public TestConsole(boolean autoLifecycle) {
super("Life's like that", null, autoLifecycle);
}
protected void init() {
super.init();
fInit = true;
}
protected void dispose() {
super.dispose();
fDispose = true;
}
}
/**
* Test that when a process is removed from a launch, the associated
* console is closed.
*
* @throws Exception
*/
public void testRemoveProcess() throws Exception {
String typeName = "Breakpoints";
IJavaDebugTarget target = null;
try {
final IJavaDebugTarget otherTarget = launchAndTerminate(typeName);
target = otherTarget;
IProcess process = target.getProcess();
assertNotNull("Missing VM process", process);
ILaunch launch = target.getLaunch();
// make sure the console exists
DebugUIPlugin.getStandardDisplay().syncExec(new Runnable() {
public void run() {
IConsole console = DebugUITools.getConsole(otherTarget);
assertNotNull("Missing console", console);
}
});
launch.removeProcess(process);
// make sure the console is gone
DebugUIPlugin.getStandardDisplay().syncExec(new Runnable() {
public void run() {
IConsole console = DebugUITools.getConsole(otherTarget);
assertNull("Console should no longer exist", console);
}
});
} finally {
terminateAndRemove(target);
}
}
public void testAutoLifecycle() {
TestConsole console = new TestConsole(true);
IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();
consoleManager.addConsoles(new IConsole[]{console});
consoleManager.removeConsoles(new IConsole[]{console});
assertTrue("Console was not initialized", console.fInit);
assertTrue("Console was not disposed", console.fDispose);
}
public void testManualLifecycle() {
TestConsole console = new TestConsole(false);
IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();
consoleManager.addConsoles(new IConsole[]{console});
consoleManager.removeConsoles(new IConsole[]{console});
assertTrue("Console was initialized", !console.fInit);
assertTrue("Console was disposed", !console.fDispose);
console.dispose();
}
}