Skip to content

Commit a5a5888

Browse files
author
Ben Romberg
committed
close #6: add output to see analysed directory
1 parent 08bb7ad commit a5a5888

File tree

4 files changed

+104
-36
lines changed

4 files changed

+104
-36
lines changed

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

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,12 @@
1111
import org.apache.maven.enforcer.rule.api.EnforcerRule;
1212
import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
1313
import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
14-
import org.apache.maven.project.MavenProject;
1514
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
1615

1716
public class NoPackageCyclesRule implements EnforcerRule {
1817

19-
public static final String MAVEN_JAR_PACKAGING = "jar";
2018
public static final String MAVEN_CLASSES_DIR = "classes";
2119
public static final String MAVEN_PROJECT_BUILD_DIRECTORY_VAR = "${project.build.directory}";
22-
public static final String MAVEN_PROJECT_VAR = "${project}";
2320

2421
public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
2522
try {
@@ -33,11 +30,13 @@ public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
3330

3431
private void executePackageCycleCheckIfNecessary(EnforcerRuleHelper helper) throws ExpressionEvaluationException,
3532
IOException, EnforcerRuleException {
36-
MavenProject project = (MavenProject) helper.evaluate(MAVEN_PROJECT_VAR);
3733
File targetDir = new File((String) helper.evaluate(MAVEN_PROJECT_BUILD_DIRECTORY_VAR));
3834
File classesDir = new File(targetDir, MAVEN_CLASSES_DIR);
39-
if (checkIsNecessary(project, classesDir)) {
35+
helper.getLog().info("Searching directory " + classesDir.getAbsolutePath() + " for package cycles.");
36+
if (checkIsNecessary(classesDir)) {
4037
executePackageCycleCheck(classesDir);
38+
} else {
39+
helper.getLog().info("Directory " + classesDir.getAbsolutePath() + " could not be found.");
4140
}
4241
}
4342

@@ -46,8 +45,7 @@ private void executePackageCycleCheck(File classesDir) throws IOException, Enfor
4645
jdepend.addDirectory(classesDir.getAbsolutePath());
4746
jdepend.analyze();
4847
if (jdepend.containsCycles()) {
49-
String packageCycles = getPackageCycles(jdepend);
50-
throw new EnforcerRuleException("There are package cycles:" + packageCycles);
48+
throw new EnforcerRuleException("There are package cycles:" + getPackageCycles(jdepend));
5149
}
5250
}
5351

@@ -61,7 +59,7 @@ private String getPackageCycles(JDepend jdepend) {
6159
return new PackageCycleOutput(new ArrayList<JavaPackage>(packages)).getOutput();
6260
}
6361

64-
private boolean checkIsNecessary(MavenProject project, File classesDir) {
62+
private boolean checkIsNecessary(File classesDir) {
6563
return classesDir.exists();
6664
}
6765

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

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@
22

33
import static org.hamcrest.MatcherAssert.assertThat;
44
import static org.hamcrest.Matchers.containsString;
5+
import static org.hamcrest.Matchers.hasSize;
56
import static org.hamcrest.Matchers.is;
7+
8+
import java.io.File;
9+
import java.util.List;
10+
611
import jdepend.framework.JDepend;
712

813
import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
@@ -24,8 +29,6 @@ protected JDepend createJDepend() {
2429
}
2530
}
2631

27-
private static final String MAVEN_WAR_PACKAGING = "war";
28-
2932
@Rule
3033
public TemporaryFolder temporaryFolder = new TemporaryFolder();
3134

@@ -62,18 +65,13 @@ public void result_IsNotValid() {
6265

6366
@Test
6467
public void execute_checkNotNecessary_ClassesDirNotFound() throws Exception {
65-
jdependMock.setContainsCycles(true);
66-
helper.setTargetDir(temporaryFolder.newFolder());
67-
rule.execute(helper);
68-
}
69-
70-
@Test
71-
public void execute_checkNotNecessary_PackagingNotJar() throws Exception {
72-
jdependMock.setContainsCycles(true);
73-
helper.setPackaging(MAVEN_WAR_PACKAGING);
74-
expectedException.expect(EnforcerRuleException.class);
75-
expectedException.expectMessage(containsString("There are package cycles"));
68+
File newFolder = temporaryFolder.newFolder();
69+
helper.setTargetDir(newFolder);
7670
rule.execute(helper);
71+
List<String> infoLogs = helper.getLogMock().getInfo();
72+
assertThat(infoLogs, hasSize(2));
73+
assertSearchingInfo(newFolder, infoLogs);
74+
assertThat(infoLogs.get(1), is("Directory " + getTargetDirectory(newFolder) + " could not be found."));
7775
}
7876

7977
@Test
@@ -95,6 +93,9 @@ public void execute_JdependAddDirectoryFailed_ThrowsException() throws Exception
9593
@Test
9694
public void execute_ContainsNoCycles() throws Exception {
9795
rule.execute(helper);
96+
List<String> infoLogs = helper.getLogMock().getInfo();
97+
assertThat(infoLogs, hasSize(1));
98+
assertSearchingInfo(temporaryFolder.getRoot(), infoLogs);
9899
}
99100

100101
@Test
@@ -104,4 +105,13 @@ public void execute_ContainsCycles() throws Exception {
104105
expectedException.expectMessage(containsString("There are package cycles"));
105106
rule.execute(helper);
106107
}
108+
109+
private void assertSearchingInfo(File projectDirectory, List<String> infoLogs) {
110+
assertThat(infoLogs.get(0), is("Searching directory " + getTargetDirectory(projectDirectory)
111+
+ " for package cycles."));
112+
}
113+
114+
private String getTargetDirectory(File newFolder) {
115+
return new File(newFolder, NoPackageCyclesRule.MAVEN_CLASSES_DIR).getAbsolutePath();
116+
}
107117
}

src/test/java/de/andrena/tools/nopackagecycles/mock/EnforcerRuleHelperMock.java

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
88
import org.apache.maven.plugin.logging.Log;
9-
import org.apache.maven.project.MavenProject;
109
import org.codehaus.plexus.PlexusContainer;
1110
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
1211
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
@@ -15,9 +14,13 @@
1514

1615
public class EnforcerRuleHelperMock implements EnforcerRuleHelper {
1716

18-
protected String packaging = NoPackageCyclesRule.MAVEN_JAR_PACKAGING;
1917
private File targetDir;
2018
private boolean evaluateThrowsException;
19+
private final LogMock logMock = new LogMock();
20+
21+
public LogMock getLogMock() {
22+
return logMock;
23+
}
2124

2225
public void setEvaluateThrowsException(boolean evaluateThrowsException) {
2326
this.evaluateThrowsException = evaluateThrowsException;
@@ -27,10 +30,6 @@ public void setTargetDir(File targetDir) {
2730
this.targetDir = targetDir;
2831
}
2932

30-
public void setPackaging(String packaging) {
31-
this.packaging = packaging;
32-
}
33-
3433
public File alignToBaseDirectory(File arg0) {
3534
return null;
3635
}
@@ -39,14 +38,7 @@ public Object evaluate(String variable) throws ExpressionEvaluationException {
3938
if (evaluateThrowsException) {
4039
throw new ExpressionEvaluationException("");
4140
}
42-
if (NoPackageCyclesRule.MAVEN_PROJECT_VAR.equals(variable)) {
43-
return new MavenProject() {
44-
@Override
45-
public String getPackaging() {
46-
return packaging;
47-
}
48-
};
49-
} else if (NoPackageCyclesRule.MAVEN_PROJECT_BUILD_DIRECTORY_VAR.equals(variable)) {
41+
if (NoPackageCyclesRule.MAVEN_PROJECT_BUILD_DIRECTORY_VAR.equals(variable)) {
5042
return targetDir.getPath();
5143
}
5244
return null;
@@ -77,7 +69,7 @@ public PlexusContainer getContainer() {
7769
}
7870

7971
public Log getLog() {
80-
return null;
72+
return logMock;
8173
}
8274

8375
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package de.andrena.tools.nopackagecycles.mock;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import org.apache.maven.plugin.logging.Log;
7+
8+
public class LogMock implements Log {
9+
private final List<String> info = new ArrayList<String>();
10+
11+
public List<String> getInfo() {
12+
return info;
13+
}
14+
15+
public void debug(CharSequence arg0) {
16+
}
17+
18+
public void debug(Throwable arg0) {
19+
}
20+
21+
public void debug(CharSequence arg0, Throwable arg1) {
22+
}
23+
24+
public void error(CharSequence arg0) {
25+
}
26+
27+
public void error(Throwable arg0) {
28+
}
29+
30+
public void error(CharSequence arg0, Throwable arg1) {
31+
}
32+
33+
public void info(CharSequence arg0) {
34+
info.add(arg0.toString());
35+
}
36+
37+
public void info(Throwable arg0) {
38+
}
39+
40+
public void info(CharSequence arg0, Throwable arg1) {
41+
}
42+
43+
public boolean isDebugEnabled() {
44+
return false;
45+
}
46+
47+
public boolean isErrorEnabled() {
48+
return false;
49+
}
50+
51+
public boolean isInfoEnabled() {
52+
return false;
53+
}
54+
55+
public boolean isWarnEnabled() {
56+
return false;
57+
}
58+
59+
public void warn(CharSequence arg0) {
60+
}
61+
62+
public void warn(Throwable arg0) {
63+
}
64+
65+
public void warn(CharSequence arg0, Throwable arg1) {
66+
}
67+
68+
}

0 commit comments

Comments
 (0)