You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2020/10/05 20:17:28 UTC
[camel] branch master updated: CAMEL-15638: Print detailed diff if
source validation fails (#4366)
This is an automated email from the ASF dual-hosted git repository.
janbednar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new c3850ba CAMEL-15638: Print detailed diff if source validation fails (#4366)
c3850ba is described below
commit c3850ba80548b639a2bb636983d5b1c497971085
Author: Jan Bednar <ma...@janbednar.eu>
AuthorDate: Mon Oct 5 22:17:05 2020 +0200
CAMEL-15638: Print detailed diff if source validation fails (#4366)
---
init/camel-format-plugin/pom.xml | 6 ++++
.../net/revelc/code/formatter/FormatterMojo.java | 7 +++-
.../net/revelc/code/formatter/ValidateMojo.java | 37 ++++++++++++++++++++--
pom.xml | 1 +
4 files changed, 48 insertions(+), 3 deletions(-)
diff --git a/init/camel-format-plugin/pom.xml b/init/camel-format-plugin/pom.xml
index 6d5bda7..234614b 100644
--- a/init/camel-format-plugin/pom.xml
+++ b/init/camel-format-plugin/pom.xml
@@ -41,6 +41,12 @@
<version>${formatter-maven-plugin.version}</version>
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>io.github.java-diff-utils</groupId>
+ <artifactId>java-diff-utils</artifactId>
+ <version>${java-diff-utils-version}</version>
+ <scope>compile</scope>
+ </dependency>
<dependency>
<groupId>org.apache.maven</groupId>
diff --git a/init/camel-format-plugin/src/main/java/net/revelc/code/formatter/FormatterMojo.java b/init/camel-format-plugin/src/main/java/net/revelc/code/formatter/FormatterMojo.java
index d394222..b3d96dc 100644
--- a/init/camel-format-plugin/src/main/java/net/revelc/code/formatter/FormatterMojo.java
+++ b/init/camel-format-plugin/src/main/java/net/revelc/code/formatter/FormatterMojo.java
@@ -32,6 +32,8 @@ import java.util.Properties;
import org.xml.sax.SAXException;
+import com.github.difflib.DiffUtils;
+import com.github.difflib.patch.Patch;
import com.google.common.base.Strings;
import com.google.common.hash.Hashing;
import net.revelc.code.formatter.css.CssFormatter;
@@ -609,6 +611,7 @@ public class FormatterMojo extends AbstractMojo implements ConfigurationSource {
rc.skippedCount++;
} else if (Result.SUCCESS.equals(result)) {
rc.successCount++;
+ rc.diff.add(DiffUtils.diff(originalCode, formattedCode, null));
} else if (Result.FAIL.equals(result)) {
rc.failCount++;
return;
@@ -824,7 +827,7 @@ public class FormatterMojo extends AbstractMojo implements ConfigurationSource {
return map;
}
- class ResultCollector {
+ static class ResultCollector {
int successCount;
@@ -833,6 +836,8 @@ public class FormatterMojo extends AbstractMojo implements ConfigurationSource {
int skippedCount;
int readOnlyCount;
+
+ List<Patch<String>> diff = new ArrayList<>();
}
@Override
diff --git a/init/camel-format-plugin/src/main/java/net/revelc/code/formatter/ValidateMojo.java b/init/camel-format-plugin/src/main/java/net/revelc/code/formatter/ValidateMojo.java
index 9ecf0f8..2638675 100755
--- a/init/camel-format-plugin/src/main/java/net/revelc/code/formatter/ValidateMojo.java
+++ b/init/camel-format-plugin/src/main/java/net/revelc/code/formatter/ValidateMojo.java
@@ -15,8 +15,11 @@ package net.revelc.code.formatter;
import java.io.File;
import java.io.IOException;
+import java.util.List;
import java.util.Properties;
+import com.github.difflib.patch.AbstractDelta;
+import com.github.difflib.patch.Patch;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
@@ -55,12 +58,42 @@ public class ValidateMojo extends FormatterMojo {
super.doFormatFile(file, rc, hashCache, basedirPath, true);
if (rc.successCount != 0) {
- throw new MojoFailureException("File '" + file
- + "' has not been previously formatted. Please format file and commit before running validation!");
+ final String message = String.format(
+ "File '%s' has not been previously formatted. Please format file and commit before running validation!%n%s",
+ file, diffToString(rc.diff));
+ throw new MojoFailureException(message);
}
if (rc.failCount != 0) {
throw new MojoExecutionException("Error formating '" + file + "' ");
}
}
+ private static String diffToString(List<Patch<String>> diff) {
+ final String NL = System.lineSeparator();
+ StringBuilder sb = new StringBuilder();
+
+ for (Patch<String> patch : diff) {
+ for (AbstractDelta<String> delta : patch.getDeltas()) {
+ sb.append("Type:\t").append(delta.getType()).append(NL);
+ if (delta.getSource() != null) {
+ sb.append("Line:\t").append(delta.getSource().getPosition()).append(NL);
+ if (delta.getSource().getLines().size() > 0) {
+ sb.append("Source:").append(NL);
+ for (String line : delta.getSource().getLines()) {
+ sb.append(line).append(NL);
+ }
+ }
+ }
+
+ if (delta.getTarget() != null && delta.getTarget().getLines().size() > 0) {
+ sb.append("Target:").append(NL);
+ for (String line : delta.getTarget().getLines()) {
+ sb.append(line).append(NL);
+ }
+ }
+ sb.append("===============").append(NL);
+ }
+ }
+ return sb.toString();
+ }
}
diff --git a/pom.xml b/pom.xml
index 689b57e..62efabd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -118,6 +118,7 @@
<surefire.version>${maven-surefire-plugin-version}</surefire.version>
<formatter-maven-plugin.version>2.12.1</formatter-maven-plugin.version>
<impsort-maven-plugin.version>1.3.2</impsort-maven-plugin.version>
+ <java-diff-utils-version>4.7</java-diff-utils-version>
<maven-bundle-plugin-version>4.2.1</maven-bundle-plugin-version>
<!-- eclipse plugin need the jaxb in this pom.xml file -->