| /********************************************************************* |
| * 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; |
| // } |
| } |