blob: 214ae070b2512d5821aea7222aa79c54e0c766da [file] [log] [blame]
/*******************************************************************************
* Copyright (C) 2007, 2012, Robin Rosenberg <robin.rosenberg@dewire.com>
* Copyright (C) 2010, Jens Baumgart <jens.baumgart@sap.com>
* Copyright (C) 2010, Mathias Kinzler <mathias.kinzler@sap.com>
*
* 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
*******************************************************************************/
package org.eclipse.egit.core.test;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.jgit.util.FS;
import org.eclipse.jgit.util.FileUtils;
public class TestUtils {
public final static String AUTHOR = "The Author <The.author@some.com>";
public final static String COMMITTER = "The Commiter <The.committer@some.com>";
/**
* Create a "temporary" directory
*
* @param name
* the name of the directory
* @return a directory as child of a "temporary" folder in the user home
* directory; may or may not exist
* @throws IOException
*/
public File createTempDir(String name) throws IOException {
File userHome = FS.DETECTED.userHome();
File rootDir = new File(userHome, "EGitCoreTestTempDir");
File result = new File(rootDir, name);
if (result.exists())
FileUtils.delete(result, FileUtils.RECURSIVE | FileUtils.RETRY);
return result;
}
/**
* Cleanup: delete the "temporary" folder and all children
*
* @throws IOException
*/
public void deleteTempDirs() throws IOException {
File userHome = FS.DETECTED.userHome();
File rootDir = new File(userHome, "EGitCoreTestTempDir");
if (rootDir.exists())
FileUtils.delete(rootDir, FileUtils.RECURSIVE | FileUtils.RETRY);
}
/**
* Read the stream into a String
*
* @param inputStream
* @return the contents of the stream
* @throws IOException
*/
public String slurpAndClose(InputStream inputStream) throws IOException {
StringBuilder stringBuilder = new StringBuilder();
try {
int ch;
while ((ch = inputStream.read()) != -1) {
stringBuilder.append((char) ch);
}
} finally {
inputStream.close();
}
return stringBuilder.toString();
}
/**
* Add a file to an existing project
*
* @param project
* the project
* @param path
* e.g. "folder1/folder2/test.txt"
* @param content
* the contents
* @return the file
* @throws Exception
* if the file can not be created
*/
public IFile addFileToProject(IProject project, String path, String content)
throws Exception {
IPath filePath = new Path(path);
IFolder folder = null;
for (int i = 0; i < filePath.segmentCount() - 1; i++) {
if (folder == null) {
folder = project.getFolder(filePath.segment(i));
} else {
folder = folder.getFolder(filePath.segment(i));
}
if (!folder.exists())
folder.create(false, true, null);
}
IFile file = project.getFile(filePath);
file.create(new ByteArrayInputStream(content.getBytes(project
.getDefaultCharset())), true, null);
return file;
}
/**
* Change the content of a file
*
* @param project
* @param file
* @param newContent
* @return the file
* @throws Exception
*/
public IFile changeContentOfFile(IProject project, IFile file, String newContent)
throws Exception {
file.setContents(new ByteArrayInputStream(newContent.getBytes(project
.getDefaultCharset())), 0, null);
return file;
}
/**
* Create a project in the local file system
*
* @param parentFile
* the parent
* @param projectName
* project name
* @return the project with a location pointing to the local file system
* @throws Exception
*/
public IProject createProjectInLocalFileSystem(File parentFile,
String projectName) throws Exception {
IProject project = ResourcesPlugin.getWorkspace().getRoot()
.getProject(projectName);
if (project.exists()) {
project.delete(true, null);
}
File testFile = new File(parentFile, projectName);
if (testFile.exists())
FileUtils.delete(testFile, FileUtils.RECURSIVE | FileUtils.RETRY);
IProjectDescription desc = ResourcesPlugin.getWorkspace()
.newProjectDescription(projectName);
desc.setLocation(new Path(new File(parentFile, projectName).getPath()));
project.create(desc, null);
project.open(null);
return project;
}
}