1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-05 23:35:48 +02:00

bug 306945: Build Console no longer shows for non-C/C++ Projects

Based on patch from Christian W. Damus
This commit is contained in:
Andrew Gvozdev 2010-03-28 02:10:23 +00:00
parent e79f6fda67
commit 0837cd014f

View file

@ -14,25 +14,28 @@ import java.io.IOException;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.cdt.core.dom.IPDOMManager;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.resources.IConsole; import org.eclipse.cdt.core.resources.IConsole;
import org.eclipse.cdt.core.testplugin.CProjectHelper; import org.eclipse.cdt.core.testplugin.ResourceHelper;
import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.IBuildConsoleManager; import org.eclipse.cdt.ui.IBuildConsoleManager;
import org.eclipse.cdt.ui.testplugin.Accessor;
import org.eclipse.cdt.ui.testplugin.DisplayHelper; import org.eclipse.cdt.ui.testplugin.DisplayHelper;
import org.eclipse.cdt.ui.tests.BaseUITestCase; import org.eclipse.cdt.ui.tests.BaseUITestCase;
import org.eclipse.cdt.internal.ui.buildconsole.BuildConsole;
import org.eclipse.cdt.internal.ui.buildconsole.BuildConsolePage;
/** /**
* BuildConsoleTests. * BuildConsoleTests.
*/ */
public class BuildConsoleTests extends BaseUITestCase { public class BuildConsoleTests extends BaseUITestCase {
private ICProject fCProject;
public BuildConsoleTests(String name) { public BuildConsoleTests(String name) {
super(name); super(name);
} }
@ -44,25 +47,65 @@ public class BuildConsoleTests extends BaseUITestCase {
@Override @Override
protected void setUp() throws Exception { protected void setUp() throws Exception {
super.setUp(); super.setUp();
fCProject= CProjectHelper.createCCProject(getName(), "unused", IPDOMManager.ID_FAST_INDEXER);
} }
@Override @Override
protected void tearDown() throws Exception { protected void tearDown() throws Exception {
CProjectHelper.delete(fCProject); ResourceHelper.cleanUp();
fCProject= null;
super.tearDown(); super.tearDown();
} }
public void testSecondaryBuildConsole() throws IOException, CoreException { public void testSecondaryBuildConsole() throws IOException, CoreException {
IProject project = ResourceHelper.createCDTProject(getName());
IBuildConsoleManager mgr= CUIPlugin.getDefault().getConsoleManager("My Other Console", "cdt.ui.testConsole"); IBuildConsoleManager mgr= CUIPlugin.getDefault().getConsoleManager("My Other Console", "cdt.ui.testConsole");
IConsole console= mgr.getConsole(fCProject.getProject()); IConsole console= mgr.getConsole(project);
String stdoutText = "This is stdout\n"; String stdoutText = "This is stdout\n";
console.getOutputStream().write(stdoutText.getBytes()); console.getOutputStream().write(stdoutText.getBytes());
String stderrText = "This is stderr\n"; String stderrText = "This is stderr\n";
console.getErrorStream().write(stderrText.getBytes()); console.getErrorStream().write(stderrText.getBytes());
DisplayHelper.sleep(CUIPlugin.getStandardDisplay(), 200); DisplayHelper.sleep(CUIPlugin.getStandardDisplay(), 200);
IDocument doc= mgr.getConsoleDocument(fCProject.getProject()); IDocument doc= mgr.getConsoleDocument(project);
assertEquals(stdoutText+stderrText, doc.get()); assertEquals(stdoutText+stderrText, doc.get());
} }
public void testShowConsoleForNonCDTProject_bug306945() throws IOException, CoreException {
IProject simpleProject = ResourceHelper.createProject("non_c_project");
IBuildConsoleManager mgr = CUIPlugin.getDefault().getConsoleManager();
IConsole console = mgr.getConsole(simpleProject);
// show the console view
org.eclipse.ui.console.IConsole[] consoles = ConsolePlugin.getDefault().getConsoleManager().getConsoles();
BuildConsole buildConsole = null;
for (org.eclipse.ui.console.IConsole next : consoles) {
if (next instanceof BuildConsole) {
buildConsole = (BuildConsole) next;
break;
}
}
assertNotNull("Couldn't find the build console", buildConsole);
ConsolePlugin.getDefault().getConsoleManager().showConsoleView(buildConsole);
buildConsole.activate(); // force activation
// verify that the text was correctly written
String stdoutText = "This is stdout\n";
console.getOutputStream().write(stdoutText.getBytes());
String stderrText = "This is stderr\n";
console.getErrorStream().write(stderrText.getBytes());
DisplayHelper.sleep(CUIPlugin.getStandardDisplay(), 200);
IDocument doc = mgr.getConsoleDocument(simpleProject);
assertEquals("Text not written to console", stdoutText+stderrText, doc.get());
// verify that the Console view can show the console to the user
BuildConsolePage page = (BuildConsolePage) new Accessor(BuildConsole.class).invoke("getPage");
assertNotNull("Couldn't get the build console page", page);
page.selectionChanged(null, new StructuredSelection(simpleProject));
DisplayHelper.sleep(CUIPlugin.getStandardDisplay(), 200);
buildConsole = (BuildConsole) new Accessor(page).invoke("getConsole");
assertTrue("Project console not selected", buildConsole.getName().contains(simpleProject.getName()));
}
} }