blob: 2534e73ee87f038dbcc598566a44302010bae06b [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2012, 2019 SAP SE
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* SAP SE - initial API, implementation and documentation
* mwenz - Bug 388211 - New plug-in with Graphiti editor wizard adds not needed dependency to org.eclipse.ui
*
* SPDX-License-Identifier: EPL-2.0
**********************************************************************/
package org.eclipse.graphiti.bot.tests;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.pde.core.plugin.IPluginImport;
import org.eclipse.pde.core.plugin.IPluginModelBase;
import org.eclipse.pde.core.plugin.PluginRegistry;
import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotPerspective;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class PluginWizardTests extends AbstractGFTests {
private IProject newProject;
private SWTBotPerspective previousPerspective;
public PluginWizardTests() {
super();
}
@Override
@Before
protected void setUp() throws Exception {
super.setUp();
previousPerspective = bot.activePerspective();
}
@Override
@After
protected void tearDown() throws Exception {
page.closeAllEditors();
if (newProject != null) {
newProject.delete(true, true, new NullProgressMonitor());
}
super.tearDown();
bot.perspectiveByLabel(previousPerspective.getLabel()).activate();
Thread.sleep(5000);
}
@Test
public void testPluginWizardRun() throws Exception {
// // Check problems view and remember number of errors before test
// int numberOfErrorsBeforeTest =
// extractAllItemsFromProblemsView().length;
// Start wizard
bot.menu("File").menu("New").menu("Project...").click();
SWTBotShell shell = bot.shell("New Project");
shell.activate();
bot.tree().expandNode("Plug-in Development").select("Plug-in Project");
bot.button("Next >").click();
// Provide name for new plugin project
bot.textWithLabel("Project name:").setText("org.eclipse.graphiti.test1");
bot.button("Next >").click();
// Deselect activator generation, test for Bug 388211
bot.checkBoxInGroup("Options", 0).deselect();
bot.button("Next >").click();
// Enable template table
bot.checkBox("Create a plug-in using a template").select();
// Select Graphiti extension
bot.table().select("Plug-in with a Graphiti Editor");
bot.button("Next >").click();
// Check fields are filled
String diagramTypeId = bot.textWithLabelInGroup("ID", "Diagram Type").getText();
assertEquals("org.eclipse.graphiti.test1.test1DiagramType", diagramTypeId);
// Finish the wizard
bot.button("Finish").click();
// Confirm perspective switch
shell = bot.shell("Open Associated Perspective?");
shell.activate();
bot.button("Open Perspective").click();
Thread.sleep(2000);
newProject = ResourcesPlugin.getWorkspace().getRoot().getProject("org.eclipse.graphiti.test1");
int counter = 0;
while (!newProject.exists() && counter < 20) {
counter++;
Thread.sleep(1000);
}
assertTrue(newProject.exists());
// // Check problems view for any errors
// SWTBotTreeItem[] allItems = extractAllItemsFromProblemsView();
// counter = 0;
// while ((allItems == null || allItems.length !=
// numberOfErrorsBeforeTest) && counter < 60) {
// counter++;
// Thread.sleep(1000);
// allItems = extractAllItemsFromProblemsView();
// }
// assertTrue("Items found in problems view: " + allItems.toString()
// + ", expected were (number of errors before test: " +
// numberOfErrorsBeforeTest,
// allItems.length == numberOfErrorsBeforeTest);
// Check that org.eclipse.ui is not part of the dependencies (no
// activator is generated), test for Bug 388211
IPluginModelBase newPluginModel = PluginRegistry.findModel(newProject);
counter = 0;
while ((newPluginModel == null || newPluginModel.getPluginBase() == null) && counter < 20) {
newPluginModel = PluginRegistry.findModel(newProject);
counter++;
Thread.sleep(1000);
}
IPluginImport[] imports = newPluginModel.getPluginBase().getImports();
for (IPluginImport pluginImport : imports) {
if ("org.eclipse.ui".equals(pluginImport.getId())) {
fail("'org.eclipse.ui' should not be part of the dependencies");
}
}
}
// private SWTBotTreeItem[] extractAllItemsFromProblemsView() {
// SWTBotTreeItem[] allItems;
// SWTBotView view = bot.viewById(IPageLayout.ID_PROBLEM_VIEW);
// view.show();
// SWTBotTree tree = view.bot().tree();
// allItems = tree.getAllItems();
// return allItems;
// }
}