diff --git a/me.gladwell.eclipse.m2e.android.test/projects/android-application/pom.xml b/me.gladwell.eclipse.m2e.android.test/projects/android-application/pom.xml index 72dca7d2..4f16d412 100644 --- a/me.gladwell.eclipse.m2e.android.test/projects/android-application/pom.xml +++ b/me.gladwell.eclipse.m2e.android.test/projects/android-application/pom.xml @@ -75,6 +75,9 @@ 1.6 1.6 + + **/*.java + diff --git a/me.gladwell.eclipse.m2e.android.test/src/me/gladwell/eclipse/m2e/android/test/AndroidMavenPluginTestCase.java b/me.gladwell.eclipse.m2e.android.test/src/me/gladwell/eclipse/m2e/android/test/AndroidMavenPluginTestCase.java index 2b295743..14734e7b 100644 --- a/me.gladwell.eclipse.m2e.android.test/src/me/gladwell/eclipse/m2e/android/test/AndroidMavenPluginTestCase.java +++ b/me.gladwell.eclipse.m2e.android.test/src/me/gladwell/eclipse/m2e/android/test/AndroidMavenPluginTestCase.java @@ -23,7 +23,6 @@ import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.IWorkspaceRunnable; -import org.eclipse.core.resources.IncrementalProjectBuilder; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; diff --git a/me.gladwell.eclipse.m2e.android.test/src/me/gladwell/eclipse/m2e/android/test/ApplicationAndroidMavenPluginTest.java b/me.gladwell.eclipse.m2e.android.test/src/me/gladwell/eclipse/m2e/android/test/ApplicationAndroidMavenPluginTest.java index 874cbe49..7393f8e9 100644 --- a/me.gladwell.eclipse.m2e.android.test/src/me/gladwell/eclipse/m2e/android/test/ApplicationAndroidMavenPluginTest.java +++ b/me.gladwell.eclipse.m2e.android.test/src/me/gladwell/eclipse/m2e/android/test/ApplicationAndroidMavenPluginTest.java @@ -9,11 +9,13 @@ package me.gladwell.eclipse.m2e.android.test; import static java.io.File.separator; +import static me.gladwell.eclipse.m2e.android.configuration.Classpaths.findSourceEntry; +import static me.gladwell.eclipse.m2e.android.test.ClasspathMatchers.containsEntry; +import static me.gladwell.eclipse.m2e.android.test.ClasspathMatchers.containsIncludePattern; +import static me.gladwell.eclipse.m2e.android.test.ClasspathMatchers.hasAttribute; import static org.eclipse.jdt.core.IClasspathAttribute.IGNORE_OPTIONAL_PROBLEMS; import static org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants.ATTR_CLASSPATH_PROVIDER; import static org.junit.Assert.assertThat; -import static me.gladwell.eclipse.m2e.android.configuration.Classpaths.findSourceEntry; -import static me.gladwell.eclipse.m2e.android.test.ClasspathMatchers.containsEntry; import java.io.File; @@ -29,9 +31,11 @@ import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchManager; +import org.eclipse.jdt.core.IClasspathAttribute; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.junit.JUnitCore; import org.eclipse.jdt.junit.TestRunListener; import org.eclipse.jdt.junit.model.ITestElement; @@ -282,4 +286,19 @@ public void testConfigureDoesNotSetIgnoreWarnings() throws Exception { IClasspathEntry gen = findSourceEntry(javaProject.getRawClasspath(), "gen"); assertFalse("external assets folder isn't linked", booleanAttribute(IGNORE_OPTIONAL_PROBLEMS, gen)); } + + public void testConfigureDoesNotRemoveIncludesFromEntry() throws Exception { + IClasspathEntry mainJava = findSourceEntry(javaProject.getRawClasspath(), "src" + separator + "main" + separator + "java"); + assertThat(mainJava, containsIncludePattern("**" + separator + "*.java")); + } + + public void testConfigureDoesNotRemovePomDerivedAttributeFromEntry() throws JavaModelException { + IClasspathEntry mainJava = findSourceEntry(javaProject.getRawClasspath(), "src" + separator + "main" + separator + "java"); + assertThat(mainJava, hasAttribute(IClasspathManager.POMDERIVED_ATTRIBUTE, "true")); + } + + public void testConfigureDoesNotRemoveOptionalAttributeFromEntry() throws Exception { + IClasspathEntry mainJava = findSourceEntry(javaProject.getRawClasspath(), "src" + separator + "main" + separator + "java"); + assertThat(mainJava, hasAttribute(IClasspathAttribute.OPTIONAL, "true")); + } } diff --git a/me.gladwell.eclipse.m2e.android.test/src/me/gladwell/eclipse/m2e/android/test/ClasspathMatchers.java b/me.gladwell.eclipse.m2e.android.test/src/me/gladwell/eclipse/m2e/android/test/ClasspathMatchers.java index afcaa2b3..9e0a5626 100644 --- a/me.gladwell.eclipse.m2e.android.test/src/me/gladwell/eclipse/m2e/android/test/ClasspathMatchers.java +++ b/me.gladwell.eclipse.m2e.android.test/src/me/gladwell/eclipse/m2e/android/test/ClasspathMatchers.java @@ -8,6 +8,9 @@ package me.gladwell.eclipse.m2e.android.test; +import org.eclipse.core.runtime.IPath; +import org.eclipse.jdt.core.IClasspathAttribute; +import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.launching.IRuntimeClasspathEntry; import org.hamcrest.BaseMatcher; import org.hamcrest.Description; @@ -42,4 +45,58 @@ private static boolean containsEntry(String path, IRuntimeClasspathEntry[] class } return false; } + + public static Matcher containsIncludePattern(final String pattern) { + return new BaseMatcher() { + + @Override + public boolean matches(Object target) { + IClasspathEntry entry = (IClasspathEntry) target; + return containsIncludePattern(pattern, entry); + } + + @Override + public void describeTo(Description description) { + description.appendText("classpath entry containing include pattern") // + .appendText(pattern); + } + }; + } + + private static boolean containsIncludePattern(String pattern, IClasspathEntry entry) { + for (IPath inclusionPattern : entry.getInclusionPatterns()) { + if (inclusionPattern.toOSString().equals(pattern)) { + return true; + } + } + return false; + } + + public static Matcher hasAttribute(final String attributeName, final String attributeValue) { + return new BaseMatcher() { + + @Override + public boolean matches(Object target) { + IClasspathEntry entry = (IClasspathEntry) target; + return hasAttribute(entry, attributeName, attributeValue); + } + + @Override + public void describeTo(Description description) { + description.appendText("classpath entry having attribute ") // + .appendText(attributeName) // + .appendText(" with value ") // + .appendText(attributeValue); + } + }; + } + + public static boolean hasAttribute(IClasspathEntry entry, String attributeName, String attributeValue) { + for (IClasspathAttribute attribute : entry.getExtraAttributes()) { + if (attribute.getName().equals(attributeName) && attribute.getValue().equals(attributeValue)) { + return true; + } + } + return false; + } }