blob: 5e7ff25252a90273ea677dc18526cec786d804e5 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 IBM Corporation 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:
* IBM Corporation - initial API and implementation
* Sian January - initial version
*******************************************************************************/
package org.eclipse.ajdt.core.tests.newbuildconfig;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.aspectj.asm.IProgramElement;
import org.eclipse.ajdt.core.BuildConfig;
import org.eclipse.ajdt.core.buildpath.BuildConfigurationUtils;
import org.eclipse.ajdt.core.model.AJProjectModelFacade;
import org.eclipse.ajdt.core.model.AJProjectModelFactory;
import org.eclipse.ajdt.core.tests.AJDTCoreTestCase;
import org.eclipse.ajdt.core.tests.HandleTestUtils;
import org.eclipse.ajdt.core.tests.testutils.ReaderInputStream;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.JavaCore;
public class BuildConfigurationTest2 extends AJDTCoreTestCase {
public void testExcludeAllWithNoPackages() throws Exception {
IProject project = createPredefinedProject("WithoutSourceFolder"); //$NON-NLS-1$
waitForAutoBuild();
checkIncluded(project, 2);
IFile propertiesFile = project.getFile("none.ajproperties"); //$NON-NLS-1$
propertiesFile.create(new ReaderInputStream(new StringReader("src.includes = /\n" + //$NON-NLS-1$
"src.excludes = A.aj,\\\n" + //$NON-NLS-1$
"C.java")), true, null); //$NON-NLS-1$
waitForAutoBuild();
assertNotNull(propertiesFile);
assertTrue(propertiesFile.exists());
BuildConfigurationUtils.applyBuildConfiguration(propertiesFile);
waitForAutoBuild();
checkIncluded(project, 0);
IFile newPropertiesFile = project.getFile("none2.ajproperties"); //$NON-NLS-1$
BuildConfigurationUtils.saveBuildConfiguration(newPropertiesFile);
newPropertiesFile.refreshLocal(1, null);
waitForAutoBuild();
compareFiles(propertiesFile, newPropertiesFile);
}
public void testExcludeAllWithPackages() throws Exception {
IProject project = createPredefinedProject("Figures Demo"); //$NON-NLS-1$
waitForAutoBuild();
checkIncluded(project, 13);
IFile propertiesFile = project.getFile("none.ajproperties"); //$NON-NLS-1$
propertiesFile.create(new ReaderInputStream(new StringReader("src.includes = /\n" + //$NON-NLS-1$
"src.excludes = figures/")), true, null); //$NON-NLS-1$
waitForAutoBuild();
assertNotNull(propertiesFile);
assertTrue(propertiesFile.exists());
BuildConfigurationUtils.applyBuildConfiguration(propertiesFile);
waitForAutoBuild();
checkIncluded(project, 0);
IFile newPropertiesFile = project.getFile("none2.ajproperties"); //$NON-NLS-1$
BuildConfigurationUtils.saveBuildConfiguration(newPropertiesFile);
newPropertiesFile.refreshLocal(1, null);
waitForAutoBuild();
compareFiles(propertiesFile, newPropertiesFile);
}
public void testExcludeSomeWithPackages() throws Exception {
IProject project = createPredefinedProject("Figures Demo"); //$NON-NLS-1$
waitForAutoBuild();
checkIncluded(project, 13);
IFile propertiesFile = project.getFile("build.ajproperties"); //$NON-NLS-1$
assertNotNull(propertiesFile);
assertTrue(propertiesFile.exists());
BuildConfigurationUtils.applyBuildConfiguration(propertiesFile);
waitForAutoBuild();
checkIncluded(project, 12);
IFile newPropertiesFile = project.getFile("build2.ajproperties"); //$NON-NLS-1$
BuildConfigurationUtils.saveBuildConfiguration(newPropertiesFile);
newPropertiesFile.refreshLocal(1, null);
waitForAutoBuild();
compareFiles(propertiesFile, newPropertiesFile);
}
private void checkIncluded(IProject project, int numFiles) throws Exception {
Set<IFile> included = BuildConfig.getIncludedSourceFiles(project);
assertEquals(numFiles, included.size());
for (Iterator includedIter = included.iterator(); includedIter.hasNext();) {
IFile file = (IFile) includedIter.next();
checkModel(file);
}
}
private void checkModel(IFile file) throws Exception {
AJProjectModelFacade model = AJProjectModelFactory.getInstance().getModelForProject(file.getProject());
IJavaElement unit = JavaCore.create(file);
if (model.hasProgramElement(unit)) {
List accumulatedErrors = HandleTestUtils.checkJavaHandle(unit.getHandleIdentifier(), model);
IProgramElement ipe = model.javaElementToProgramElement(unit);
HandleTestUtils.checkAJHandle(ipe.getHandleIdentifier(), model);
if (accumulatedErrors.size() > 0) {
StringBuffer sb = new StringBuffer();
sb.append("Found errors in comparing elements:\n");
for (Iterator iterator = accumulatedErrors.iterator(); iterator
.hasNext();) {
String msg = (String) iterator.next();
sb.append(msg + "\n");
}
fail(sb.toString());
}
}
}
private void compareFiles(IFile propertiesFile, IFile newPropertiesFile) throws CoreException, IOException {
BufferedReader br = null;
BufferedReader br2 = null;
try {
br = new BufferedReader(new InputStreamReader(propertiesFile.getContents()));
br2 = new BufferedReader(new InputStreamReader(newPropertiesFile.getContents()));
String line1 = br.readLine();
String line2 = br2.readLine();
while(line1 != null && line2 != null) {
assertEquals(line1.trim(), line2.trim());
line1 = br.readLine();
line2 = br2.readLine();
}
} finally {
if(br != null) {
br.close();
}
if(br2 != null) {
br2.close();
}
}
}
}