Skip to content

Commit 965bb54

Browse files
committed
Keep the files' line endings in every TestKit build with Spotless
Spotless checks for, and writes, the platform's line endings by default, CRLF on Windows, while the tests write their files with LF. On Windows a check then reports the line endings instead of the formatting: a_file_the_formatter_cannot_parse_is_still_a_lint_of_that_file failed there, as the up-to-date test did before d289fcd set lineEndings to PRESERVE in its own build. GradleTestProject now sets lineEndings to PRESERVE in every project of a generated build that applies Spotless, so no test has to remember it. Spotless then writes LF back, and the tests compare the files they leave exactly instead of ignoring line endings.
1 parent ab3a656 commit 965bb54

8 files changed

Lines changed: 31 additions & 24 deletions

File tree

‎gradle-open-java-format/src/test/java/com/palantir/javaformat/gradle/BuildCacheTest.java‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,10 @@ final class BuildCacheTest {
6767
void spotlessJava_is_up_to_date_when_the_source_is_written_again_unchanged() {
6868
var project = project(projectDir);
6969
assertThat(spotlessApply(project, UNFORMATTED)).isEqualTo(TaskOutcome.SUCCESS);
70-
assertThat(project.readFile(MAIN_JAVA)).isEqualToNormalizingNewlines(FORMATTED);
70+
assertThat(project.readFile(MAIN_JAVA)).isEqualTo(FORMATTED);
7171

7272
assertThat(spotlessApply(project, UNFORMATTED)).isEqualTo(TaskOutcome.UP_TO_DATE);
73-
assertThat(project.readFile(MAIN_JAVA)).isEqualToNormalizingNewlines(FORMATTED);
73+
assertThat(project.readFile(MAIN_JAVA)).isEqualTo(FORMATTED);
7474
}
7575

7676
@Test
@@ -79,7 +79,7 @@ void spotlessJava_runs_again_when_the_source_changes() {
7979
assertThat(spotlessApply(project, UNFORMATTED)).isEqualTo(TaskOutcome.SUCCESS);
8080

8181
assertThat(spotlessApply(project, OTHER_UNFORMATTED)).isEqualTo(TaskOutcome.SUCCESS);
82-
assertThat(project.readFile(MAIN_JAVA)).isEqualToNormalizingNewlines(OTHER_FORMATTED);
82+
assertThat(project.readFile(MAIN_JAVA)).isEqualTo(OTHER_FORMATTED);
8383
}
8484

8585
@Test
@@ -89,7 +89,7 @@ void spotlessJava_comes_from_the_cache_when_the_source_changes_back() {
8989
assertThat(spotlessApply(project, OTHER_UNFORMATTED)).isEqualTo(TaskOutcome.SUCCESS);
9090

9191
assertThat(spotlessApply(project, UNFORMATTED)).isEqualTo(TaskOutcome.FROM_CACHE);
92-
assertThat(project.readFile(MAIN_JAVA)).isEqualToNormalizingNewlines(FORMATTED);
92+
assertThat(project.readFile(MAIN_JAVA)).isEqualTo(FORMATTED);
9393
}
9494

9595
@Test
@@ -100,7 +100,7 @@ void spotlessJava_comes_from_the_cache_after_the_build_directory_is_deleted() {
100100
project.delete("build");
101101

102102
assertThat(spotlessApply(project, UNFORMATTED)).isEqualTo(TaskOutcome.FROM_CACHE);
103-
assertThat(project.readFile(MAIN_JAVA)).isEqualToNormalizingNewlines(FORMATTED);
103+
assertThat(project.readFile(MAIN_JAVA)).isEqualTo(FORMATTED);
104104
}
105105

106106
@Test
@@ -111,7 +111,7 @@ void spotlessJava_comes_from_the_cache_in_another_directory() {
111111
var moved = project(otherProjectDir);
112112

113113
assertThat(spotlessApply(moved, UNFORMATTED)).isEqualTo(TaskOutcome.FROM_CACHE);
114-
assertThat(moved.readFile(MAIN_JAVA)).isEqualToNormalizingNewlines(FORMATTED);
114+
assertThat(moved.readFile(MAIN_JAVA)).isEqualTo(FORMATTED);
115115
}
116116

117117
@Test
@@ -123,7 +123,7 @@ void spotlessJava_runs_again_when_the_build_declares_a_formatter() throws IOExce
123123
project.writeFile("formatter.classpath", formatterClasspath()).delete("build");
124124

125125
assertThat(spotlessApply(project, UNFORMATTED)).isEqualTo(TaskOutcome.SUCCESS);
126-
assertThat(project.readFile(MAIN_JAVA)).isEqualToNormalizingNewlines(FORMATTED);
126+
assertThat(project.readFile(MAIN_JAVA)).isEqualTo(FORMATTED);
127127
}
128128

129129
@Test
@@ -140,7 +140,7 @@ void spotlessJava_runs_again_when_the_declared_jars_change() throws IOException,
140140
.delete("build");
141141

142142
assertThat(spotlessApply(project, UNFORMATTED)).isEqualTo(TaskOutcome.SUCCESS);
143-
assertThat(project.readFile(MAIN_JAVA)).isEqualToNormalizingNewlines(FORMATTED);
143+
assertThat(project.readFile(MAIN_JAVA)).isEqualTo(FORMATTED);
144144
}
145145

146146
/** The formatter inside the plugin, unless the test writes formatter.classpath, which the build then declares. */

‎gradle-open-java-format/src/test/java/com/palantir/javaformat/gradle/ConfigurationCacheTest.java‎

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,7 @@ void spotlessApply_formats_from_a_reused_entry() throws IOException {
7979
project.writeFile(MAIN_JAVA, UNFORMATTED);
8080

8181
assertThat(project.succeeds("spotlessApply").getOutput()).contains(entry);
82-
// Spotless writes the platform's line endings, CRLF on Windows.
83-
assertThat(project.readFile(MAIN_JAVA)).isEqualToNormalizingNewlines(FORMATTED);
82+
assertThat(project.readFile(MAIN_JAVA)).isEqualTo(FORMATTED);
8483
}
8584
}
8685

@@ -126,7 +125,7 @@ void spotlessApply_reuses_the_entry_after_the_extracted_formatter_is_deleted() t
126125
var reused = project.succeeds("spotlessApply");
127126

128127
assertThat(reused.getOutput()).contains(REUSED);
129-
assertThat(project.readFile(MAIN_JAVA)).isEqualToNormalizingNewlines(FORMATTED);
128+
assertThat(project.readFile(MAIN_JAVA)).isEqualTo(FORMATTED);
130129
}
131130

132131
@Test
@@ -146,11 +145,11 @@ palantirJavaFormat files(file("formatter.classpath").text.split(File.pathSeparat
146145
// spotlessApply of the same source each time, and the file it leaves: a step that changes nothing is up to
147146
// date just as well, and passes a spotlessCheck of a formatted file.
148147
assertThat(spotlessJava(spotlessApply(project))).isEqualTo(TaskOutcome.SUCCESS);
149-
assertThat(project.readFile(MAIN_JAVA)).isEqualToNormalizingNewlines(FORMATTED);
148+
assertThat(project.readFile(MAIN_JAVA)).isEqualTo(FORMATTED);
150149
var unchanged = spotlessApply(project);
151150
assertThat(unchanged.getOutput()).contains(REUSED);
152151
assertThat(spotlessJava(unchanged)).isEqualTo(TaskOutcome.UP_TO_DATE);
153-
assertThat(project.readFile(MAIN_JAVA)).isEqualToNormalizingNewlines(FORMATTED);
152+
assertThat(project.readFile(MAIN_JAVA)).isEqualTo(FORMATTED);
154153

155154
// Spotless signs the jars by name, size and content, as another formatter version changes them. The extra jar
156155
// is JUnit's, not one written into projectDir: the daemon keeps the formatter's jars open after the build, and
@@ -160,7 +159,7 @@ palantirJavaFormat files(file("formatter.classpath").text.split(File.pathSeparat
160159
project.writeFile("formatter.classpath", jars + File.pathSeparator + extraJar);
161160

162161
assertThat(spotlessJava(spotlessApply(project))).isEqualTo(TaskOutcome.SUCCESS);
163-
assertThat(project.readFile(MAIN_JAVA)).isEqualToNormalizingNewlines(FORMATTED);
162+
assertThat(project.readFile(MAIN_JAVA)).isEqualTo(FORMATTED);
164163
}
165164

166165
/** spotlessApply of the unformatted source, written again: only its time changes. */

‎gradle-open-java-format/src/test/java/com/palantir/javaformat/gradle/MultiProjectTest.java‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,7 @@ private GradleTestProject project() {
177177

178178
private static void assertFormatted(GradleTestProject project, String... files) {
179179
for (var file : files) {
180-
// Spotless writes the platform's line endings, CRLF on Windows.
181-
assertThat(project.readFile(file)).as(file).isEqualToNormalizingNewlines(FORMATTED);
180+
assertThat(project.readFile(file)).as(file).isEqualTo(FORMATTED);
182181
}
183182
}
184183

‎gradle-open-java-format/src/test/java/com/palantir/javaformat/gradle/PalantirJavaFormatSpotlessPluginTest.java‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,7 @@ void formats_with_spotless_when_spotless_is_applied(
8484

8585
BuildResult result = project.succeeds("spotlessApply", "--info");
8686

87-
// Spotless writes the platform's line endings, CRLF on Windows.
88-
assertThat(project.readFile(MAIN_JAVA)).isEqualToNormalizingNewlines(validJavaFile());
87+
assertThat(project.readFile(MAIN_JAVA)).isEqualTo(validJavaFile());
8988
assertThat(result.getOutput()).contains(expectedOutput);
9089
}
9190

‎gradle-open-java-format/src/test/java/com/palantir/javaformat/gradle/SpotlessExcludesTest.java‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,7 @@ void format_ignores_excluded_directories(String srcDir) {
8989
assertThat(result.task(":spotlessJava")).isNotNull().extracting(task -> task.getOutcome())
9090
.isEqualTo(TaskOutcome.SUCCESS);
9191
assertThat(project.readFile(srcDir + "/test/Test.java")).isEqualTo(SOURCE_FILE);
92-
// Spotless writes the platform's line endings, CRLF on Windows.
93-
assertThat(project.readFile(MAIN_JAVA)).isEqualToNormalizingNewlines(FORMATTED_MAIN);
92+
assertThat(project.readFile(MAIN_JAVA)).isEqualTo(FORMATTED_MAIN);
9493
}
9594

9695
@ParameterizedTest

‎gradle-open-java-format/src/test/java/com/palantir/javaformat/gradle/SpotlessWithoutJavacExportsTest.java‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,7 @@ void spotlessApply_formats_once_the_gradle_jvm_exports_javac() {
7575
var result = project.succeeds("spotlessApply");
7676

7777
assertThat(spotlessJava(result)).isEqualTo(TaskOutcome.SUCCESS);
78-
// Spotless writes the platform's line endings, CRLF on Windows.
79-
assertThat(project.readFile(MAIN_JAVA)).isEqualToNormalizingNewlines(FORMATTED);
78+
assertThat(project.readFile(MAIN_JAVA)).isEqualTo(FORMATTED);
8079
}
8180

8281
@Test

‎gradle-open-java-format/src/test/java/com/palantir/javaformat/gradle/WithoutRepositoriesTest.java‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,7 @@ private static void commitThenChange(GradleTestProject project, String... files)
182182

183183
private static void assertFormatted(GradleTestProject project, String... files) {
184184
for (var file : files) {
185-
// Spotless writes the platform's line endings, CRLF on Windows.
186-
assertThat(project.readFile(file)).as(file).isEqualToNormalizingNewlines(FORMATTED);
185+
assertThat(project.readFile(file)).as(file).isEqualTo(FORMATTED);
187186
}
188187
}
189188

‎gradle-open-java-format/src/test/java/com/palantir/javaformat/gradle/testing/GradleTestProject.java‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,19 @@ private void write() {
245245
if (repositories) {
246246
script.append("repositories {\n mavenCentral()\n}\n\n");
247247
}
248+
// Spotless checks for, and writes, the platform's line endings by default, CRLF on Windows, while the tests
249+
// write their files with LF: a check would report the line endings, not the formatting. PRESERVE keeps the
250+
// file's own, wherever a test applies Spotless.
251+
script.append("""
252+
allprojects {
253+
plugins.withId('com.diffplug.spotless') {
254+
spotless {
255+
lineEndings = 'PRESERVE'
256+
}
257+
}
258+
}
259+
260+
""");
248261
script.append(buildGradle);
249262

250263
StringBuilder settings = new StringBuilder("rootProject.name = 'test-project'\n");

0 commit comments

Comments
 (0)