| /******************************************************************************* |
| * 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(); |
| } |
| } |
| } |
| } |