From b988f880e5658cb6cc733391de782ff539cd527b Mon Sep 17 00:00:00 2001 From: David Gageot Date: Tue, 6 Nov 2012 14:37:13 +0100 Subject: [PATCH] SONAR-3885 Inclusions --- .../core/batch/ExcludedResourceFilter.java | 15 +++++++---- .../batch/ExcludedResourceFilterTest.java | 26 +++++++++++++++++++ 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 @@ -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); -- 2.39.5