]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-3885 Inclusions
authorDavid Gageot <david@gageot.net>
Tue, 6 Nov 2012 13:37:13 +0000 (14:37 +0100)
committerDavid Gageot <david@gageot.net>
Tue, 6 Nov 2012 13:37:13 +0000 (14:37 +0100)
plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/batch/ExcludedResourceFilter.java
plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/batch/ExcludedResourceFilterTest.java

index 46516ff4d8a58ac4d4dc2cd2b383644826520d26..8a71fb8342523bfdeb6c75b620f6a07319ec291b 100644 (file)
@@ -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;
       }
     }
index 7d730a0e72b2855e4e4d06b9708e44d90320d206..bdd1bb7643f788f89a793d88f4406c261cad16a2 100644 (file)
@@ -61,6 +61,32 @@ public class ExcludedResourceFilterTest {
     assertThat(filter.isIgnored(resource)).isTrue();
   }
 
+  @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);