Skip to content

Commit 50f8567

Browse files
authored
[Simplify] Clean-up report builder to make it easier to read and prepare for konvert (#35)
Extracted from #29
1 parent 59c8551 commit 50f8567

File tree

1 file changed

+118
-137
lines changed

1 file changed

+118
-137
lines changed

src/main/groovy/org/assertj/generator/gradle/internal/tasks/AssertionsGeneratorReport.groovy

Lines changed: 118 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,25 @@ import org.assertj.assertions.generator.AssertionsEntryPointType
1717

1818
import static com.google.common.collect.Maps.newTreeMap
1919
import static com.google.common.collect.Sets.newTreeSet
20-
import static org.apache.commons.lang3.ArrayUtils.isNotEmpty
2120
import static org.apache.commons.lang3.StringUtils.remove
2221
import static org.apache.commons.lang3.exception.ExceptionUtils.getStackTrace
2322

2423
class AssertionsGeneratorReport {
24+
File directoryPathWhereAssertionFilesAreGenerated
25+
Collection<String> inputPackages
26+
Collection<String> inputClasses
27+
Exception exception
28+
Collection<TypeToken<?>> excludedClassesFromAssertionGeneration
29+
final List<String> userTemplates
30+
final Set<String> inputClassesNotFound
2531

2632
private static final String INDENT = "- "
2733
private static final String SECTION_START = "--- "
2834
private static final String SECTION_END = " ---\n"
29-
private File directoryPathWhereAssertionFilesAreGenerated
30-
private Set<String> generatedCustomAssertionFileNames
31-
private Map<AssertionsEntryPointType, File> assertionsEntryPointFilesByType
32-
private Collection<String> inputPackages
33-
private Collection<String> inputClasses
34-
private Exception exception
35-
private Collection<TypeToken<?>> excludedClassesFromAssertionGeneration
36-
private Set<String> inputClassesNotFound
37-
private List<String> userTemplates
35+
private static final String Line = System.lineSeparator()
36+
37+
private final Set<String> generatedCustomAssertionFileNames
38+
private final Map<AssertionsEntryPointType, File> assertionsEntryPointFilesByType
3839

3940
AssertionsGeneratorReport() {
4041
assertionsEntryPointFilesByType = newTreeMap()
@@ -44,127 +45,135 @@ class AssertionsGeneratorReport {
4445
userTemplates = new ArrayList<>()
4546
}
4647

47-
void setDirectoryPathWhereAssertionFilesAreGenerated(File directory) {
48-
this.directoryPathWhereAssertionFilesAreGenerated = directory
49-
}
50-
5148
void addGeneratedAssertionFile(File generatedCustomAssertionFile) throws IOException {
5249
generatedCustomAssertionFileNames.add(generatedCustomAssertionFile.getCanonicalPath())
5350
}
5451

5552
String getReportContent() {
56-
StringBuilder reportBuilder = new StringBuilder(System.lineSeparator())
57-
reportBuilder.append(System.lineSeparator())
58-
reportBuilder.append("====================================\n")
59-
reportBuilder.append("AssertJ assertions generation report\n")
60-
reportBuilder.append("====================================\n")
61-
buildGeneratorParametersReport(reportBuilder)
62-
reportBuilder.append(System.lineSeparator())
63-
reportBuilder.append(SECTION_START).append("Generator results").append(SECTION_END)
64-
if (generationError()) {
65-
buildGeneratorReportError(reportBuilder)
66-
} else if (nothingGenerated()) {
67-
buildGeneratorReportWhenNothingWasGenerated(reportBuilder)
68-
} else {
69-
buildGeneratorReportSuccess(reportBuilder)
70-
}
71-
return reportBuilder.toString()
72-
}
73-
74-
private void buildGeneratorReportSuccess(StringBuilder reportBuilder) {
75-
reportBuilder.append(System.lineSeparator())
76-
reportBuilder.append("Directory where custom assertions files have been generated:\n")
77-
reportBuilder.append(INDENT).append(directoryPathWhereAssertionFilesAreGenerated).append(System.lineSeparator())
78-
reportBuilder.append(System.lineSeparator())
79-
reportBuilder.append("Custom assertions files generated:\n")
80-
for (String fileName : generatedCustomAssertionFileNames) {
81-
reportBuilder.append(INDENT).append(fileName).append(System.lineSeparator())
82-
}
83-
if (!inputClassesNotFound.isEmpty()) {
84-
reportBuilder.append(System.lineSeparator())
85-
reportBuilder.append("No custom assertions files generated for the following input classes as they were not found:\n")
86-
for (String inputClassNotFound : inputClassesNotFound) {
87-
reportBuilder.append(INDENT).append(inputClassNotFound).append(System.lineSeparator())
53+
new StringBuilder().tap {
54+
append(Line)
55+
append("====================================\n")
56+
append("AssertJ assertions generation report\n")
57+
append("====================================\n")
58+
buildGeneratorParametersReport(it)
59+
append(Line)
60+
append(SECTION_START).append("Generator results").append(SECTION_END)
61+
62+
if (generationError()) {
63+
buildGeneratorReportError(it)
64+
} else if (nothingGenerated()) {
65+
buildGeneratorReportWhenNothingWasGenerated(it)
66+
} else {
67+
buildGeneratorReportSuccess(it)
68+
}
69+
}.toString()
70+
}
71+
72+
private StringBuilder buildGeneratorReportSuccess(final StringBuilder self) {
73+
self.tap {
74+
append(Line)
75+
append("Directory where custom assertions files have been generated:\n")
76+
append(INDENT).append(directoryPathWhereAssertionFilesAreGenerated).append(Line)
77+
append(Line)
78+
append("Custom assertions files generated:\n")
79+
for (String fileName : generatedCustomAssertionFileNames) {
80+
append(INDENT).append(fileName).append(Line)
81+
}
82+
if (!inputClassesNotFound.isEmpty()) {
83+
append(Line)
84+
append("No custom assertions files generated for the following input classes as they were not found:\n")
85+
for (inputClassNotFound in inputClassesNotFound) {
86+
append(INDENT).append(inputClassNotFound).append(Line)
87+
}
8888
}
89+
reportEntryPointClassesGeneration(it)
8990
}
90-
reportEntryPointClassesGeneration(reportBuilder)
9191
}
9292

93-
private void reportEntryPointClassesGeneration(StringBuilder reportBuilder) {
94-
for (AssertionsEntryPointType type : assertionsEntryPointFilesByType.keySet()) {
95-
if (assertionsEntryPointFilesByType.get(type) != null) {
96-
String entryPointClassName = remove(type.getFileName(), ".java")
97-
reportBuilder.append(System.lineSeparator())
98-
.append(entryPointClassName).append(" entry point class has been generated in file:\n")
99-
.append(INDENT).append(assertionsEntryPointFilesByType.get(type).getAbsolutePath())
100-
.append(System.lineSeparator())
93+
private StringBuilder reportEntryPointClassesGeneration(final StringBuilder self) {
94+
self.tap {
95+
for (type in assertionsEntryPointFilesByType.keySet()) {
96+
if (assertionsEntryPointFilesByType.get(type) != null) {
97+
String entryPointClassName = remove(type.getFileName(), ".java")
98+
append(Line)
99+
.append(entryPointClassName).append(" entry point class has been generated in file:\n")
100+
.append(INDENT).append(assertionsEntryPointFilesByType.get(type).getAbsolutePath())
101+
.append(Line)
102+
}
101103
}
102104
}
103-
}
104105

105-
private void buildGeneratorReportWhenNothingWasGenerated(StringBuilder reportBuilder) {
106-
reportBuilder.append(System.lineSeparator())
107-
reportBuilder.append("No assertions generated as no classes have been found from given classes/packages.\n")
108-
if (isNotEmpty(inputClasses as String[])) {
109-
reportBuilder.append(INDENT).append("Given classes : ").append(Arrays.toString(inputClasses))
110-
reportBuilder.append(System.lineSeparator())
111-
}
112-
if (isNotEmpty(inputPackages as String[])) {
113-
reportBuilder.append(INDENT).append("Given packages : ").append(Arrays.toString(inputPackages))
114-
reportBuilder.append(System.lineSeparator())
115-
}
116-
if (isNotEmpty(excludedClassesFromAssertionGeneration)) {
117-
reportBuilder.append(INDENT).append("Excluded classes : ").append(excludedClassesFromAssertionGeneration)
118-
}
119106
}
120107

121-
private void buildGeneratorReportError(StringBuilder reportBuilder) {
122-
reportBuilder.append(System.lineSeparator())
123-
reportBuilder.append("Assertions failed with error : ").append(exception.getMessage())
124-
reportBuilder.append(System.lineSeparator())
125-
if (isNotEmpty(inputClasses as String[])) {
126-
reportBuilder.append(INDENT).append("Given classes were : ").append(Arrays.toString(inputClasses))
127-
reportBuilder.append(System.lineSeparator())
128-
}
129-
if (isNotEmpty(inputPackages as String[])) {
130-
reportBuilder.append(INDENT).append("Given packages were : ").append(Arrays.toString(inputPackages))
131-
reportBuilder.append(System.lineSeparator())
108+
private StringBuilder buildGeneratorReportWhenNothingWasGenerated(final StringBuilder self) {
109+
self.tap {
110+
append(Line)
111+
append("No assertions generated as no classes have been found from given classes/packages.\n")
112+
if (!inputClasses?.isEmpty()) {
113+
append(INDENT).append("Given classes : ").append(Arrays.toString(inputClasses))
114+
append(Line)
115+
}
116+
if (!inputPackages?.isEmpty()) {
117+
append(INDENT).append("Given packages : ").append(Arrays.toString(inputPackages))
118+
append(Line)
119+
}
120+
if (!excludedClassesFromAssertionGeneration.isEmpty()) {
121+
append(INDENT).append("Excluded classes : ").append(excludedClassesFromAssertionGeneration)
122+
}
132123
}
133-
reportBuilder.append(System.lineSeparator())
134-
reportBuilder.append("Full error stack : ").append(getStackTrace(exception))
135124
}
136125

137-
private void buildGeneratorParametersReport(StringBuilder reportBuilder) {
138-
reportBuilder.append(System.lineSeparator())
139-
reportBuilder.append(SECTION_START).append("Generator input parameters").append(SECTION_END)
140-
.append(System.lineSeparator())
141-
if (!(userTemplates as List<String>).isEmpty()) {
142-
reportBuilder.append("The following templates will replace the ones provided by AssertJ when generating AssertJ assertions :\n")
143-
for (String inputPackage : userTemplates) {
144-
reportBuilder.append(INDENT).append(inputPackage).append(System.lineSeparator())
126+
private StringBuilder buildGeneratorReportError(final StringBuilder self) {
127+
self.tap {
128+
append(Line)
129+
append("Assertions failed with error : ").append(exception.getMessage())
130+
append(Line)
131+
if (!inputClasses?.isEmpty()) {
132+
append(INDENT).append("Given classes were : ").append(Arrays.toString(inputClasses))
133+
append(Line)
145134
}
146-
reportBuilder.append(System.lineSeparator())
147-
}
148-
if (isNotEmpty(inputPackages as String[])) {
149-
reportBuilder.append("Generating AssertJ assertions for classes in following packages and subpackages:\n")
150-
for (String inputPackage : inputPackages) {
151-
reportBuilder.append(INDENT).append(inputPackage).append(System.lineSeparator())
135+
if (!inputPackages?.isEmpty()) {
136+
append(INDENT).append("Given packages were : ").append(Arrays.toString(inputPackages))
137+
append(Line)
152138
}
139+
append(Line)
140+
append("Full error stack : ").append(getStackTrace(exception))
153141
}
154-
if (!isNotEmpty(inputClasses as String[])) {
155-
if (isNotEmpty(inputPackages as String[])) {
156-
reportBuilder.append(System.lineSeparator())
142+
}
143+
144+
private StringBuilder buildGeneratorParametersReport(final StringBuilder reportBuilder) {
145+
reportBuilder.tap {
146+
append(Line)
147+
append(SECTION_START).append("Generator input parameters").append(SECTION_END)
148+
.append(Line)
149+
if (!userTemplates.isEmpty()) {
150+
append("The following templates will replace the ones provided by AssertJ when generating AssertJ assertions :\n")
151+
for (String inputPackage : userTemplates) {
152+
append(INDENT).append(inputPackage).append(Line)
153+
}
154+
append(Line)
157155
}
158-
reportBuilder.append("Generating AssertJ assertions for classes:\n")
159-
for (String inputClass : inputClasses) {
160-
reportBuilder.append(INDENT).append(inputClass).append(System.lineSeparator())
156+
if (!inputPackages?.isEmpty()) {
157+
append("Generating AssertJ assertions for classes in following packages and subpackages:\n")
158+
for (inputPackage in inputPackages) {
159+
append(INDENT).append(inputPackage).append(Line)
160+
}
161161
}
162-
}
163-
if (!excludedClassesFromAssertionGeneration?.isEmpty()) {
164-
reportBuilder.append(System.lineSeparator())
165-
reportBuilder.append("Input classes excluded from assertions generation:\n")
166-
for (Class<?> excludedClass : excludedClassesFromAssertionGeneration) {
167-
reportBuilder.append(INDENT).append(excludedClass.getName()).append(System.lineSeparator())
162+
if (!inputClasses?.isEmpty()) {
163+
if (!inputPackages?.isEmpty()) {
164+
reportBuilder.append(Line)
165+
}
166+
append("Generating AssertJ assertions for classes:\n")
167+
for (inputClass in inputClasses) {
168+
append(INDENT).append(inputClass).append(Line)
169+
}
170+
}
171+
if (!excludedClassesFromAssertionGeneration?.isEmpty()) {
172+
append(Line)
173+
append("Input classes excluded from assertions generation:\n")
174+
for (excludedClass in excludedClassesFromAssertionGeneration) {
175+
append(INDENT).append(excludedClass.type.typeName).append(Line)
176+
}
168177
}
169178
}
170179
}
@@ -182,30 +191,6 @@ class AssertionsGeneratorReport {
182191
this.assertionsEntryPointFilesByType.put(assertionsEntryPointType, assertionsEntryPointFile)
183192
}
184193

185-
void setInputPackages(Collection<? extends String> packages) {
186-
this.inputPackages = packages
187-
}
188-
189-
void setInputClasses(Collection<? extends String> classes) {
190-
this.inputClasses = classes
191-
}
192-
193-
void setException(Exception exception) {
194-
this.exception = exception
195-
}
196-
197-
Exception getReportedException() {
198-
return exception
199-
}
200-
201-
void setExcludedClassesFromAssertionGeneration(Collection<TypeToken<?>> excludedClassSet) {
202-
this.excludedClassesFromAssertionGeneration = excludedClassSet
203-
}
204-
205-
Set<String> getInputClassesNotFound() {
206-
return inputClassesNotFound
207-
}
208-
209194
void reportInputClassesNotFound(Set<Class<?>> classes, String[] inputClassNames) {
210195
Set<String> classesFound = newTreeSet()
211196
for (Class<?> clazz : classes) {
@@ -221,8 +206,4 @@ class AssertionsGeneratorReport {
221206
void registerUserTemplate(String userTemplateDescription) {
222207
userTemplates.add(userTemplateDescription)
223208
}
224-
225-
List<String> getUserTemplates() {
226-
return userTemplates
227-
}
228209
}

0 commit comments

Comments
 (0)