Skip to content

Commit f3bd062

Browse files
committed
add possibilty to exclude test classes folder from check
1 parent 8fc18a8 commit f3bd062

File tree

3 files changed

+36
-10
lines changed

3 files changed

+36
-10
lines changed

src/main/java/de/andrena/tools/nopackagecycles/DirectoriesWithClasses.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ public class DirectoriesWithClasses implements Iterable<File>{
1717

1818
private final List<File> directories = new LinkedList<File>();
1919

20-
public DirectoriesWithClasses(EnforcerRuleHelper helper) throws ExpressionEvaluationException {
20+
public DirectoriesWithClasses(EnforcerRuleHelper helper, boolean includeTests) throws ExpressionEvaluationException {
2121
addDirectoryIfExists(helper, MAVEN_PROJECT_BUILD_OUTPUT_DIRECTORY_VAR);
22-
addDirectoryIfExists(helper, MAVEN_PROJECT_BUILD_TEST_OUTPUT_DIRECTORY_VAR);
22+
if (includeTests) {
23+
addDirectoryIfExists(helper, MAVEN_PROJECT_BUILD_TEST_OUTPUT_DIRECTORY_VAR);
24+
}
2325
}
2426

2527
private void addDirectoryIfExists(EnforcerRuleHelper helper, String variable)
@@ -37,6 +39,7 @@ public boolean directoriesWithClassesFound() {
3739
return !directories.isEmpty();
3840
}
3941

42+
@Override
4043
public Iterator<File> iterator() {
4144
return unmodifiableList(directories).iterator();
4245
}

src/main/java/de/andrena/tools/nopackagecycles/NoPackageCyclesRule.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
public class NoPackageCyclesRule implements EnforcerRule {
1717

18+
private boolean includeTests = true;
19+
1820
public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
1921
try {
2022
executePackageCycleCheckIfNecessary(helper);
@@ -25,9 +27,9 @@ public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
2527
}
2628
}
2729

28-
private void executePackageCycleCheckIfNecessary(EnforcerRuleHelper helper) throws ExpressionEvaluationException,
29-
IOException, EnforcerRuleException {
30-
DirectoriesWithClasses directories = new DirectoriesWithClasses(helper);
30+
private void executePackageCycleCheckIfNecessary(EnforcerRuleHelper helper)
31+
throws ExpressionEvaluationException, IOException, EnforcerRuleException {
32+
DirectoriesWithClasses directories = new DirectoriesWithClasses(helper, includeTests);
3133
if (directories.directoriesWithClassesFound()) {
3234
executePackageCycleCheck(directories);
3335
} else {
@@ -66,4 +68,8 @@ public boolean isCacheable() {
6668
public boolean isResultValid(EnforcerRule arg0) {
6769
return false;
6870
}
71+
72+
public void setIncludeTests(boolean includeTests) {
73+
this.includeTests = includeTests;
74+
}
6975
}

src/test/java/de/andrena/tools/nopackagecycles/NoPackageCyclesRuleTest.java

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ public void execute_checkNotNecessary_ClassesDirNotFound() throws Exception {
7272
rule.execute(helper);
7373
List<String> infoLogs = helper.getLogMock().getInfo();
7474
assertThat(infoLogs, hasSize(3));
75-
assertThat(infoLogs.get(0), is("Directory " + nonExistentClassesFolder.getAbsolutePath() + " could not be found."));
76-
assertThat(infoLogs.get(1), is("Directory " + nonExistentTestClassesFolder.getAbsolutePath() + " could not be found."));
75+
assertThat(infoLogs.get(0), is("Directory " + nonExistentClassesFolder.getAbsolutePath() + " could not be found."));
76+
assertThat(infoLogs.get(1), is("Directory " + nonExistentTestClassesFolder.getAbsolutePath() + " could not be found."));
7777
assertThat(infoLogs.get(2), is("No directories with classes to check for cycles found."));
7878
}
7979

@@ -98,8 +98,17 @@ public void execute_ContainsNoCycles() throws Exception {
9898
rule.execute(helper);
9999
List<String> infoLogs = helper.getLogMock().getInfo();
100100
assertThat(infoLogs, hasSize(2));
101-
assertThat(infoLogs.get(0), is("Adding directory " + new File(temporaryFolder.getRoot(), "classes").getAbsolutePath() + " for package cycles search."));
102-
assertThat(infoLogs.get(1), is("Adding directory " + new File(temporaryFolder.getRoot(), "test-classes").getAbsolutePath() + " for package cycles search."));
101+
assertThat(infoLogs.get(0), is("Adding directory " + classesFolder().getAbsolutePath() + " for package cycles search."));
102+
assertThat(infoLogs.get(1), is("Adding directory " + testClassesFolder().getAbsolutePath() + " for package cycles search."));
103+
}
104+
105+
@Test
106+
public void execute_CanExcludeTests() throws Exception {
107+
rule.setIncludeTests(false);
108+
rule.execute(helper);
109+
List<String> infoLogs = helper.getLogMock().getInfo();
110+
assertThat(infoLogs, hasSize(1));
111+
assertThat(infoLogs.get(0), is("Adding directory " + classesFolder().getAbsolutePath() + " for package cycles search."));
103112
}
104113

105114
@Test
@@ -109,7 +118,7 @@ public void execute_ContainsNoCyclesWithoutTestClasses() throws Exception {
109118
rule.execute(helper);
110119
List<String> infoLogs = helper.getLogMock().getInfo();
111120
assertThat(infoLogs, hasSize(2));
112-
assertThat(infoLogs.get(0), is("Adding directory " + new File(temporaryFolder.getRoot(), "classes").getAbsolutePath() + " for package cycles search."));
121+
assertThat(infoLogs.get(0), is("Adding directory " + classesFolder().getAbsolutePath() + " for package cycles search."));
113122
assertThat(infoLogs.get(1), is("Directory " + nonExistentTestClassesDir.getAbsolutePath() + " could not be found."));
114123
}
115124

@@ -120,4 +129,12 @@ public void execute_ContainsCycles() throws Exception {
120129
expectedException.expectMessage(containsString("There are package cycles"));
121130
rule.execute(helper);
122131
}
132+
133+
private File testClassesFolder() {
134+
return new File(temporaryFolder.getRoot(), "test-classes");
135+
}
136+
137+
private File classesFolder() {
138+
return new File(temporaryFolder.getRoot(), "classes");
139+
}
123140
}

0 commit comments

Comments
 (0)