diff --git a/changelog/@unreleased/pr-800.v2.yml b/changelog/@unreleased/pr-800.v2.yml new file mode 100644 index 000000000..ae6440a21 --- /dev/null +++ b/changelog/@unreleased/pr-800.v2.yml @@ -0,0 +1,5 @@ +type: fix +fix: + description: 'Don''t add whitespace to blank lines inside comments. Fixes #799' + links: + - https://github.com/palantir/gradle-baseline/pull/800 diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineFormat.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineFormat.java index 949db9ff0..28e6e28c8 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineFormat.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineFormat.java @@ -52,11 +52,12 @@ public void apply(Project project) { java.removeUnusedImports(); // use empty string to specify one group for all non-static imports java.importOrder(""); - java.trimTrailingWhitespace(); if (eclipseFormattingEnabled(project)) { java.eclipse().configFile(project.file(eclipseXml.toString())); } + + java.trimTrailingWhitespace(); }); // necessary because SpotlessPlugin creates tasks in an afterEvaluate block @@ -65,7 +66,7 @@ public void apply(Project project) { Task spotlessJava = project.getTasks().getByName("spotlessJava"); Task spotlessApply = project.getTasks().getByName("spotlessApply"); if (eclipseFormattingEnabled(project) && !Files.exists(eclipseXml)) { - spotlessJava.dependsOn(project.getTasks().findByPath(":baselineUpdateConfig")); + spotlessJava.dependsOn(":baselineUpdateConfig"); } formatTask.dependsOn(spotlessApply); project.getTasks().withType(JavaCompile.class).configureEach(spotlessJava::mustRunAfter); diff --git a/gradle-baseline-java/src/test/groovy/com/palantir/baseline/BaselineFormatIntegrationTest.groovy b/gradle-baseline-java/src/test/groovy/com/palantir/baseline/BaselineFormatIntegrationTest.groovy index 26f9c43e2..53fd25993 100644 --- a/gradle-baseline-java/src/test/groovy/com/palantir/baseline/BaselineFormatIntegrationTest.groovy +++ b/gradle-baseline-java/src/test/groovy/com/palantir/baseline/BaselineFormatIntegrationTest.groovy @@ -16,6 +16,8 @@ package com.palantir.baseline +import com.google.common.io.Resources +import java.nio.charset.Charset import org.apache.commons.io.FileUtils import org.gradle.testkit.runner.BuildResult import org.gradle.testkit.runner.TaskOutcome @@ -152,4 +154,23 @@ class BaselineFormatIntegrationTest extends AbstractPluginTest { BuildResult result = with('spotlessJavaCheck').build() result.task(":spotlessJava").outcome == TaskOutcome.SUCCESS } + + def 'eclipse format trims blank lines in block or javadoc comment'() { + when: + buildFile << standardBuildFile + file('gradle.properties') << """ + com.palantir.baseline-format.eclipse=true + """.stripIndent() + file('src/main/java/test/Test.java').text = resourceAsString("blank-lines-in-comments.java") + + then: + BuildResult result = with('format').build() + result.task(":spotlessJavaApply").outcome == TaskOutcome.SUCCESS + file('src/main/java/test/Test.java').text == resourceAsString("blank-lines-in-comments-fixed.java") + } + + private String resourceAsString(String fileName) { + Resources.toString(Resources.getResource(this.class, fileName), Charset.defaultCharset()) + } + } diff --git a/gradle-baseline-java/src/test/resources/com/palantir/baseline/blank-lines-in-comments-fixed.java b/gradle-baseline-java/src/test/resources/com/palantir/baseline/blank-lines-in-comments-fixed.java new file mode 100644 index 000000000..6a875da0a --- /dev/null +++ b/gradle-baseline-java/src/test/resources/com/palantir/baseline/blank-lines-in-comments-fixed.java @@ -0,0 +1,19 @@ +package test; + +public class Test { + /** + Docstring that looks like a list: + + 1. hey + 2. there + + with blank line. + */ + Void test() { + /* + Normal comment + + with blank line. + */ + } +} diff --git a/gradle-baseline-java/src/test/resources/com/palantir/baseline/blank-lines-in-comments.java b/gradle-baseline-java/src/test/resources/com/palantir/baseline/blank-lines-in-comments.java new file mode 100644 index 000000000..4631bd8a4 --- /dev/null +++ b/gradle-baseline-java/src/test/resources/com/palantir/baseline/blank-lines-in-comments.java @@ -0,0 +1,19 @@ +package test; + +public class Test { + /** + Docstring that looks like a list: + + 1. hey + 2. there + + with blank line. + */ + Void test() { + /* + Normal comment + + with blank line. + */ + } +}