aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Gageot <david@gageot.net>2012-11-06 14:37:13 +0100
committerDavid Gageot <david@gageot.net>2012-11-06 14:37:13 +0100
commitb988f880e5658cb6cc733391de782ff539cd527b (patch)
tree9442fac509a60761fdf18951f0d2f72c0ca81f64
parentab832caa3878603fc087749732def51e1f4ffacc (diff)
downloadsonarqube-b988f880e5658cb6cc733391de782ff539cd527b.tar.gz
sonarqube-b988f880e5658cb6cc733391de782ff539cd527b.zip
SONAR-3885 Inclusions
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/batch/ExcludedResourceFilter.java15
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/batch/ExcludedResourceFilterTest.java26
2 files changed, 36 insertions, 5 deletions
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/batch/ExcludedResourceFilter.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/batch/ExcludedResourceFilter.java
index 46516ff4d8a..8a71fb83425 100644
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/batch/ExcludedResourceFilter.java
+++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/batch/ExcludedResourceFilter.java
@@ -35,13 +35,18 @@ public class ExcludedResourceFilter implements ResourceFilter {
}
public boolean isIgnored(Resource resource) {
- String[] patterns = ResourceUtils.isUnitTestClass(resource) ? project.getTestExclusionPatterns() : project.getExclusionPatterns();
- if (patterns == null) {
- return false;
+ boolean isTest = ResourceUtils.isUnitTestClass(resource);
+
+ String[] exclusions = isTest ? project.getTestExclusionPatterns() : project.getExclusionPatterns();
+ for (String exclusion : exclusions) {
+ if (resource.matchFilePattern(exclusion)) {
+ return true;
+ }
}
- for (String pattern : patterns) {
- if (resource.matchFilePattern(pattern)) {
+ String[] inclusions = isTest ? project.getTestInclusionPatterns() : project.getInclusionPatterns();
+ for (String inclusion : inclusions) {
+ if (!resource.matchFilePattern(inclusion)) {
return true;
}
}
diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/batch/ExcludedResourceFilterTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/batch/ExcludedResourceFilterTest.java
index 7d730a0e72b..bdd1bb7643f 100644
--- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/batch/ExcludedResourceFilterTest.java
+++ b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/batch/ExcludedResourceFilterTest.java
@@ -62,6 +62,32 @@ public class ExcludedResourceFilterTest {
}
@Test
+ public void should_support_inclusions() {
+ Project project = new Project("foo").setConfiguration(configWithExclusions("!**/bar/*"));
+ ExcludedResourceFilter filter = new ExcludedResourceFilter(project);
+
+ when(resource.matchFilePattern("**/bar/*")).thenReturn(true);
+ assertThat(filter.isIgnored(resource)).isFalse();
+
+ when(resource.matchFilePattern("**/bar/*")).thenReturn(false);
+ assertThat(filter.isIgnored(resource)).isTrue();
+ }
+
+ @Test
+ public void should_support_test_inclusions() {
+ when(resource.getQualifier()).thenReturn(Qualifiers.UNIT_TEST_FILE);
+
+ Project project = new Project("foo").setConfiguration(configWithTestExclusions("!**/bar/*"));
+ ExcludedResourceFilter filter = new ExcludedResourceFilter(project);
+
+ when(resource.matchFilePattern("**/bar/*")).thenReturn(true);
+ assertThat(filter.isIgnored(resource)).isFalse();
+
+ when(resource.matchFilePattern("**/bar/*")).thenReturn(false);
+ assertThat(filter.isIgnored(resource)).isTrue();
+ }
+
+ @Test
public void ignoreTestIfMatchesPattern() {
when(resource.getQualifier()).thenReturn(Qualifiers.UNIT_TEST_FILE);
when(resource.matchFilePattern("**/bar/*")).thenReturn(true);