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
+
+ **/*.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;
+ }
}