package com.dubture.composer.test; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IncrementalProjectBuilder; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.dltk.core.IScriptProject; import org.eclipse.php.internal.core.PHPVersion; import org.eclipse.php.internal.core.facet.PHPFacets; import org.eclipse.php.internal.core.project.PHPNature; import org.eclipse.php.internal.core.project.ProjectOptions; import org.junit.Test; import com.dubture.composer.core.ComposerNature; import com.dubture.composer.core.ComposerPlugin; import com.dubture.composer.core.buildpath.BuildPathParser; import com.dubture.composer.core.facet.FacetManager; import com.dubture.composer.core.resources.IComposerProject; @SuppressWarnings("restriction") public class BuildPathTest extends ComposerModelTests { public BuildPathTest() { super("BuildPath tests"); } @Test public void testBuildpathParser() throws CoreException, IOException, InterruptedException { IScriptProject scriptProject = ensureScriptProject("buildpath"); assertNotNull(scriptProject); IProjectDescription desc = scriptProject.getProject().getDescription(); desc.setNatureIds(new String[] { PHPNature.ID }); scriptProject.getProject().setDescription(desc, null); ProjectOptions.setPhpVersion(PHPVersion.PHP5_3, scriptProject.getProject()); PHPFacets.setFacetedVersion(scriptProject.getProject(), PHPVersion.PHP5_3); FacetManager.installFacets(scriptProject.getProject(), PHPVersion.PHP5_3, new NullProgressMonitor()); scriptProject.getProject().refreshLocal(IResource.DEPTH_INFINITE, null); scriptProject.getProject().build(IncrementalProjectBuilder.FULL_BUILD, null); ComposerCoreTestPlugin.waitForIndexer(); ComposerCoreTestPlugin.waitForAutoBuild(); IFile file = scriptProject.getProject().getFile("composer.json"); assertNotNull(file); assertTrue(scriptProject.getProject().hasNature(PHPNature.ID)); assertTrue(scriptProject.getProject().hasNature(ComposerNature.NATURE_ID)); IComposerProject composerProject = ComposerPlugin.getDefault().getComposerProject(scriptProject.getProject()); BuildPathParser parser = new BuildPathParser(composerProject); List<String> paths = parser.getPaths(); List<String> expected = new ArrayList<String>(Arrays.asList( "src", "test", "nother", "mordor/composer", "mordor/phing/phing/classes/phing", "mordor/propel/propel1/runtime/lib", "mordor/propel/propel1/generator/lib", "mordor/gossi/ldap/src", "mordor/symfony/console")); assertThat(paths, is(expected)); // let indexing threads shutdown to avoid SWT thread access errors Thread.sleep(2000); } }