/**
* Copyright (C) 2014 Eric Van Dewoestine
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.eclim;
import java.io.FileWriter;
import java.util.HashMap;
import java.util.Map;
import org.eclim.util.IOUtils;
import org.eclim.util.StringUtils;
import org.junit.After;
/**
* Optional super class for eclim test cases which provides some utilities/hooks
* for dealing with test setup/cleanup.
*
* @author Eric Van Dewoestine
*/
public class EclimTestCase
{
private HashMap<String,String> modified = new HashMap<String,String>();
@After
public void resetModified()
throws Exception
{
for (Map.Entry<String,String> entry : modified.entrySet()){
String[] parts = StringUtils.split(entry.getKey(), '|');
String project = parts[0];
String file = parts[1];
System.out.println("Restoring file. project: " + project + " file: " + file);
String path = Eclim.resolveFile(project, file);
FileWriter writer = new FileWriter(path);
writer.write(entry.getValue());
IOUtils.closeQuietly(writer);
}
}
/**
* Indicates that the test is going to modify the specified file from the
* supplied project. After the test runs, that file will be restored to it's
* original contents.
*
* @param project The name of the project the file resides in.
* @param file The project relative path of the file.
*/
protected void modifies(String project, String file)
{
String key = project + '|' + file;
if (!modified.containsKey(key)){
String contents = Eclim.fileToString(project, file);
modified.put(key, contents);
}
}
}