blob: 1cfdded60068ded670b591756f6e9887046186d3 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2012 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
* Markus Schorn (Wind River Systems)
*******************************************************************************/
/*
* Created on Oct 4, 2004
*/
package org.eclipse.cdt.core.tests;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.IPDOMManager;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.FileManager;
import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.NullProgressMonitor;
/**
* @author aniefer
*/
abstract public class BaseTestFramework extends BaseTestCase {
static protected NullProgressMonitor monitor;
static protected IWorkspace workspace;
static protected IProject project;
static protected ICProject cproject;
static protected FileManager fileManager;
static protected boolean indexDisabled = false;
static void initProject() {
if (project != null) {
return;
}
if (CCorePlugin.getDefault() != null && CCorePlugin.getDefault().getCoreModel() != null) {
//(CCorePlugin.getDefault().getCoreModel().getIndexManager()).reset();
monitor = new NullProgressMonitor();
workspace = ResourcesPlugin.getWorkspace();
try {
cproject = CProjectHelper.createCCProject("RegressionTestProject", "bin", IPDOMManager.ID_NO_INDEXER); //$NON-NLS-1$ //$NON-NLS-2$
project = cproject.getProject();
/*project.setSessionProperty(SourceIndexer.activationKey, Boolean.FALSE);
//Set the id of the source indexer extension point as a session property to allow
//index manager to instantiate it
project.setSessionProperty(IndexManager.indexerIDKey, sourceIndexerID);*/
} catch (CoreException e) {
/*boo*/
}
if (project == null)
fail("Unable to create project"); //$NON-NLS-1$
//Create file manager
fileManager = new FileManager();
}
}
public BaseTestFramework() {
super();
}
/**
* @param name
*/
public BaseTestFramework(String name) {
super(name);
}
public void cleanupProject() throws Exception {
try {
project.delete(true, false, monitor);
} finally {
project = null;
}
}
@Override
protected void setUp() throws Exception {
super.setUp();
initProject();
}
@Override
protected void tearDown() throws Exception {
if (project == null || !project.exists())
return;
IResource[] members = project.members();
for (IResource member : members) {
if (member.getName().equals(".project") || member.getName().equals(".cproject")) //$NON-NLS-1$ //$NON-NLS-2$
continue;
if (member.getName().equals(".settings"))
continue;
member.delete(false, monitor);
}
}
protected IFile importFile(String fileName, String contents) throws Exception {
// Obtain file handle
IFile file = project.getProject().getFile(fileName);
InputStream stream = new ByteArrayInputStream(contents.getBytes());
// Create file input stream
if (file.exists()) {
file.setContents(stream, false, false, monitor);
} else {
IPath path = file.getLocation();
path = path.makeRelativeTo(project.getLocation());
if (path.segmentCount() > 1) {
path = path.removeLastSegments(1);
for (int i = path.segmentCount() - 1; i >= 0; i--) {
IPath currentPath = path.removeLastSegments(i);
IFolder folder = project.getFolder(currentPath);
if (!folder.exists()) {
folder.create(false, true, null);
}
}
}
file.create(stream, false, monitor);
}
fileManager.addFile(file);
return file;
}
}