diff options
author | David Gageot <david@gageot.net> | 2012-11-06 14:37:13 +0100 |
---|---|---|
committer | David Gageot <david@gageot.net> | 2012-11-06 14:37:13 +0100 |
commit | b988f880e5658cb6cc733391de782ff539cd527b (patch) | |
tree | 9442fac509a60761fdf18951f0d2f72c0ca81f64 | |
parent | ab832caa3878603fc087749732def51e1f4ffacc (diff) | |
download | sonarqube-b988f880e5658cb6cc733391de782ff539cd527b.tar.gz sonarqube-b988f880e5658cb6cc733391de782ff539cd527b.zip |
SONAR-3885 Inclusions
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); |