| /******************************************************************************* |
| * Copyright (c) 2016 Chalmers | University of Gothenburg, rt-labs 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: |
| * Chalmers | University of Gothenburg and rt-labs - initial API and implementation and/or initial documentation |
| *******************************************************************************/ |
| package org.eclipse.capra.handler.cdt; |
| |
| import static org.junit.Assert.*; |
| |
| import java.io.ByteArrayInputStream; |
| import java.io.InputStream; |
| |
| import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter; |
| import org.eclipse.capra.core.adapters.TracePersistenceAdapter; |
| import org.eclipse.capra.core.helpers.ExtensionPointHelper; |
| import org.eclipse.cdt.core.CCorePlugin; |
| import org.eclipse.cdt.core.model.CoreModel; |
| import org.eclipse.cdt.core.model.ITranslationUnit; |
| import org.eclipse.cdt.core.settings.model.ICProjectDescription; |
| import org.eclipse.cdt.managedbuilder.core.BuildException; |
| import org.eclipse.cdt.managedbuilder.core.IConfiguration; |
| import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo; |
| import org.eclipse.cdt.managedbuilder.core.IManagedProject; |
| import org.eclipse.cdt.managedbuilder.core.IProjectType; |
| import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager; |
| import org.eclipse.core.resources.IFile; |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.core.resources.IProjectDescription; |
| import org.eclipse.core.resources.IWorkspace; |
| import org.eclipse.core.resources.IWorkspaceRoot; |
| import org.eclipse.core.resources.ResourcesPlugin; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.emf.ecore.resource.ResourceSet; |
| import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; |
| |
| public class TestUtil { |
| |
| public static IProject setupTestProject(String name) throws CoreException, BuildException { |
| IWorkspace workspace = ResourcesPlugin.getWorkspace(); |
| IWorkspaceRoot root = workspace.getRoot(); |
| IProject project = root.getProject(name); |
| |
| IProjectDescription prjDescription = workspace.newProjectDescription(project.getName()); |
| IProject cdtProject = CCorePlugin.getDefault().createCDTProject(prjDescription, project, null); |
| |
| ICProjectDescription cdtDescription = CoreModel.getDefault().createProjectDescription(project, false); |
| |
| IManagedBuildInfo info = ManagedBuildManager.createBuildInfo(cdtProject); |
| IProjectType projectType = ManagedBuildManager |
| .getExtensionProjectType("cdt.managedbuild.target.gnu.cygwin.exe"); |
| |
| assertNotNull(projectType); // Fail early if required bundles not |
| // present |
| |
| System.out.println("owner " + cdtProject.getName()); |
| System.out.println("id" + projectType.getId()); |
| |
| IManagedProject managedProject = ManagedBuildManager.createManagedProject(cdtProject, projectType); |
| info.setManagedProject(managedProject); |
| |
| for (IConfiguration cfg : projectType.getConfigurations()) { |
| String id = ManagedBuildManager.calculateChildId(cfg.getId(), null); |
| |
| // clone the configuration and set the artifact name |
| IConfiguration config = managedProject.createConfiguration(cfg, id); |
| config.setArtifactName(project.getName()); |
| |
| // creates/add the configuration to the project description |
| cdtDescription.createConfiguration(ManagedBuildManager.CFG_DATA_PROVIDER_ID, config.getConfigurationData()); |
| } |
| CoreModel.getDefault().setProjectDescription(project, cdtDescription); |
| return project; |
| } |
| |
| public static void deleteTestProject(IProject project) throws CoreException { |
| project.delete(true, null); |
| } |
| |
| public static EObject setupModel() { |
| TracePersistenceAdapter persistenceAdapter = ExtensionPointHelper.getTracePersistenceAdapter().get(); |
| ResourceSet resourceSet = new ResourceSetImpl(); |
| EObject artifactModel = persistenceAdapter.getArtifactWrappers(resourceSet); |
| return artifactModel; |
| } |
| |
| public static IFile createFile(IFile file, String contents) throws CoreException { |
| if (contents == null) { |
| contents = ""; |
| } |
| |
| InputStream inputStream = new ByteArrayInputStream(contents.getBytes()); |
| file.create(inputStream, true, null); |
| return file; |
| } |
| |
| public static ITranslationUnit createTranslationUnit(IProject project, String name, String source) |
| throws CoreException { |
| IFile file = project.getFile(name); |
| createFile(file, source); |
| return (ITranslationUnit) CoreModel.getDefault().create(file); |
| } |
| |
| public static EObject createWrapper(EObject artifactModel, String uri, String name) { |
| ArtifactMetaModelAdapter adapter = ExtensionPointHelper.getArtifactWrapperMetaModelAdapter().get(); |
| return adapter.createArtifact(artifactModel, "org.eclipse.capra.handler.cdt.CDTHandler", uri, name); |
| } |
| |
| } |