/******************************************************************************* * Copyright (c) 2007, 2010 Wind River Systems, Inc. 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: * Anton Leherbauer (Wind River Systems) - initial API and implementation *******************************************************************************/ package org.eclipse.cdt.ui.tests.buildconsole; import java.io.IOException; import junit.framework.TestSuite; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.console.ConsolePlugin; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.resources.IConsole; import org.eclipse.cdt.core.testplugin.ResourceHelper; import org.eclipse.cdt.ui.CUIPlugin; 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.tests.BaseUITestCase; import org.eclipse.cdt.internal.ui.buildconsole.BuildConsole; import org.eclipse.cdt.internal.ui.buildconsole.BuildConsolePage; import org.eclipse.cdt.internal.ui.buildconsole.ConsoleMessages; import org.eclipse.cdt.internal.ui.buildconsole.GlobalBuildConsoleManager; /** * BuildConsoleTests. */ public class BuildConsoleTests extends BaseUITestCase { public BuildConsoleTests(String name) { super(name); } public static TestSuite suite() { return new TestSuite(BuildConsoleTests.class); } @Override protected void setUp() throws Exception { super.setUp(); } @Override protected void tearDown() throws Exception { ResourceHelper.cleanUp(); super.tearDown(); } public void testSecondaryBuildConsole() throws IOException, CoreException { IProject project = ResourceHelper.createCDTProject(getName()); IBuildConsoleManager mgr= CUIPlugin.getDefault().getConsoleManager("My Other Console", "cdt.ui.testConsole"); IConsole console= mgr.getConsole(project); 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(project); 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; if (buildConsole.getName().contains(simpleProject.getName())) 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("getCurrentPage"); 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())); } public void testGlobalCdtConsole() throws IOException, CoreException { IConsole globalConsole = GlobalBuildConsoleManager.getGlobalConsole(); assertNotNull(globalConsole); // the console view org.eclipse.ui.console.IConsole[] consoles = ConsolePlugin.getDefault().getConsoleManager().getConsoles(); boolean isConsoleFound = false; for (org.eclipse.ui.console.IConsole console : consoles) { isConsoleFound = console.getName().equals(ConsoleMessages.BuildConsole_GlobalConsole); if (isConsoleFound) break; } assertTrue("Global CDT Console is not found", isConsoleFound); } public void testDynamicBuildConsole() throws IOException, CoreException { String id = this.getName(); String consoleName = "Test " + this.getName(); IConsole testConsole = CCorePlugin.getDefault().getBuildConsole(id, consoleName, null); assertNotNull(testConsole); // the console view org.eclipse.ui.console.IConsole[] consoles = ConsolePlugin.getDefault().getConsoleManager().getConsoles(); org.eclipse.ui.console.IConsole uiConsole=null; for (org.eclipse.ui.console.IConsole console : consoles) { boolean isConsoleFound = console.getName().equals(consoleName); if (isConsoleFound) { uiConsole = console; break; } } assertNotNull("Build Console is not found", uiConsole); assertTrue(uiConsole instanceof BuildConsole); } }