blob: c729ce5988db4305856526cada578aace35ffc65 [file] [log] [blame]
package org.eclipse.wst.validation.tests.testcase;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.util.HashSet;
import java.util.Set;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework;
import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy;
import org.eclipse.wst.common.project.facet.core.IProjectFacet;
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
import org.eclipse.wst.validation.ValidationFramework;
import org.eclipse.wst.validation.ValidationResults;
import org.eclipse.wst.validation.Validator;
import org.eclipse.wst.validation.internal.Tracing;
import org.eclipse.wst.validation.internal.ValManager;
import org.eclipse.wst.validation.internal.ValPrefManagerGlobal;
public class TestSuite4 extends TestCase {
private TestEnvironment _env;
private IProject _project;
public static Test suite() {
return new TestSuite(TestSuite4.class);
}
public TestSuite4(String name){
super(name);
}
protected void setUp() throws Exception {
super.setUp();
_env = new TestEnvironment();
IFacetedProjectWorkingCopy project = FacetedProjectFramework.createNewProject();
project.setProjectName("FacetProject");
IProjectFacet pf = ProjectFacetsManager.getProjectFacet("jst.java");
IProjectFacetVersion ipv = pf.getVersion("5.0");
Set<IProjectFacetVersion> set = new HashSet<IProjectFacetVersion>(1);
set.add(ipv);
project.setProjectFacets(set);
project.commitChanges(null);
_project = project.getProject();
IPath folder = _env.addFolder(_project.getFullPath(), "source");
ResourcesPlugin.getWorkspace().getRoot().findMember(folder);
_env.addFile(folder, "first.test1",
"info - information\n" +
"warning - warning\n" +
"error - error\n\n" +
"t1error - extra error\n" +
"t1warning - extra warning");
enableOnlyT4Validators();
}
/**
* Since other plug-ins can add and remove validators, turn off all the ones that are not part of
* these tests.
*/
private static void enableOnlyT4Validators() throws InvocationTargetException {
Validator[] vals = ValManager.getDefault().getValidatorsCopy();
for (Validator v : vals){
boolean enable = v.getValidatorClassname().startsWith("org.eclipse.wst.validation.tests.T4");
v.setBuildValidation(enable);
v.setManualValidation(enable);
}
ValPrefManagerGlobal gp = ValPrefManagerGlobal.getDefault();
gp.saveAsPrefs(vals);
TestEnvironment.saveV1Preferences(vals);
}
protected void tearDown() throws Exception {
_project.delete(true, null);
_env.dispose();
super.tearDown();
}
/**
* Ensure that the facet version expressions are working. We define two validators T4A and T4B. The first one operates on Java 5
* and the second on Java 6. Since we have created a project that has been set to Java 5, we only expect the T4A validator
* to be called.
*/
public void testFacetVersions() throws CoreException, UnsupportedEncodingException, InterruptedException {
Tracing.log("TestSuite4-01: testFacetVersions starting");
IProgressMonitor monitor = new NullProgressMonitor();
ValidationFramework vf = ValidationFramework.getDefault();
IProject[] projects = new IProject[1];
projects[0] = _project;
ValidationResults vr = vf.validate(projects, true, false, monitor);
int errors = vr.getSeverityError();
assertEquals("Number of errors", 1, errors);
Tracing.log("TestSuite4-02:testFacetVersions finished");
}
}