Skip to content

Commit 837a166

Browse files
committed
Merge pull request #323 from larsgrefer
* gh-323: Polish "Support up-to-date checking of Format task" Support up-to-date checking of Format task Closes gh-323
2 parents c63853c + ae64820 commit 837a166

File tree

4 files changed

+61
-11
lines changed

4 files changed

+61
-11
lines changed

spring-javaformat-gradle/spring-javaformat-gradle-plugin/src/main/java/io/spring/javaformat/gradle/tasks/CheckFormat.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017-2021 the original author or authors.
2+
* Copyright 2017-2022 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -25,11 +25,8 @@
2525
import java.util.stream.Collectors;
2626

2727
import org.gradle.api.GradleException;
28-
import org.gradle.api.file.FileTree;
2928
import org.gradle.api.tasks.CacheableTask;
3029
import org.gradle.api.tasks.OutputFile;
31-
import org.gradle.api.tasks.PathSensitive;
32-
import org.gradle.api.tasks.PathSensitivity;
3330
import org.gradle.api.tasks.TaskAction;
3431

3532
import io.spring.javaformat.formatter.FileEdit;
@@ -72,12 +69,6 @@ public void checkFormatting() throws IOException, InterruptedException {
7269
}
7370
}
7471

75-
@Override
76-
@PathSensitive(PathSensitivity.RELATIVE)
77-
public FileTree getSource() {
78-
return super.getSource();
79-
}
80-
8172
@OutputFile
8273
public File getReportLocation() {
8374
return this.reportLocation;

spring-javaformat-gradle/spring-javaformat-gradle-plugin/src/main/java/io/spring/javaformat/gradle/tasks/Format.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017-2021 the original author or authors.
2+
* Copyright 2017-2022 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -19,6 +19,8 @@
1919
import java.io.IOException;
2020

2121
import org.gradle.api.GradleException;
22+
import org.gradle.api.file.FileTree;
23+
import org.gradle.api.tasks.OutputFiles;
2224
import org.gradle.api.tasks.TaskAction;
2325

2426
import io.spring.javaformat.formatter.FileEdit;
@@ -51,4 +53,9 @@ public void format() throws IOException, InterruptedException {
5153
}
5254
}
5355

56+
@OutputFiles
57+
public FileTree getOutputFiles() {
58+
return super.getSource();
59+
}
60+
5461
}

spring-javaformat-gradle/spring-javaformat-gradle-plugin/src/main/java/io/spring/javaformat/gradle/tasks/FormatterTask.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,13 @@
1919
import java.nio.charset.Charset;
2020
import java.util.stream.Stream;
2121

22+
import org.gradle.api.file.FileTree;
2223
import org.gradle.api.provider.Property;
2324
import org.gradle.api.tasks.Input;
25+
import org.gradle.api.tasks.InputFiles;
2426
import org.gradle.api.tasks.Optional;
27+
import org.gradle.api.tasks.PathSensitive;
28+
import org.gradle.api.tasks.PathSensitivity;
2529
import org.gradle.api.tasks.SourceTask;
2630

2731
import io.spring.javaformat.config.IndentationStyle;
@@ -84,6 +88,13 @@ public Property<JavaBaseline> getJavaBaseline() {
8488
return this.javaBaseline;
8589
}
8690

91+
@Override
92+
@InputFiles
93+
@PathSensitive(PathSensitivity.RELATIVE)
94+
public FileTree getSource() {
95+
return super.getSource();
96+
}
97+
8798
/**
8899
* Format the source files and provide a {@link Stream} of {@link FileEdit} instances.
89100
* @return the file edits

spring-javaformat-gradle/spring-javaformat-gradle-plugin/src/test/java/io/spring/javaformat/gradle/FormatTaskTests.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919
import java.io.File;
2020
import java.io.IOException;
2121
import java.nio.file.Files;
22+
import java.util.Arrays;
2223

2324
import org.gradle.testkit.runner.BuildResult;
25+
import org.gradle.testkit.runner.GradleRunner;
2426
import org.gradle.testkit.runner.TaskOutcome;
2527
import org.junit.jupiter.api.Test;
2628
import org.junit.jupiter.api.extension.ExtendWith;
@@ -50,6 +52,45 @@ public void checkOk() throws IOException {
5052
assertThat(formattedContent).contains("class Simple {").contains(" public static void main");
5153
}
5254

55+
@Test
56+
public void checkUpToDate() throws IOException {
57+
GradleRunner runner = this.gradleBuild.source("src/test/resources/format").prepareRunner("format");
58+
// Format that changes files
59+
assertThat(runner.build().task(":formatMain").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
60+
// Format of already formatted files
61+
assertThat(runner.build().task(":formatMain").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
62+
// Up-to-date
63+
assertThat(runner.build().task(":formatMain").getOutcome()).isEqualTo(TaskOutcome.UP_TO_DATE);
64+
}
65+
66+
@Test
67+
public void notUpToDateWhenJavaBaselineChanges() throws IOException {
68+
GradleRunner runner = this.gradleBuild.source("src/test/resources/format").prepareRunner("format");
69+
// Format that changes files
70+
assertThat(runner.build().task(":formatMain").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
71+
// Format of already formatted files
72+
assertThat(runner.build().task(":formatMain").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
73+
// Up-to-date
74+
assertThat(runner.build().task(":formatMain").getOutcome()).isEqualTo(TaskOutcome.UP_TO_DATE);
75+
Files.write(new File(this.gradleBuild.getProjectDir(), ".springjavaformatconfig").toPath(),
76+
Arrays.asList("java-baseline=8"));
77+
assertThat(runner.build().task(":formatMain").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
78+
}
79+
80+
@Test
81+
public void notUpToDateWhenIndentationStyleChanges() throws IOException {
82+
GradleRunner runner = this.gradleBuild.source("src/test/resources/format").prepareRunner("format");
83+
// Format that changes files
84+
assertThat(runner.build().task(":formatMain").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
85+
// Format of already formatted files
86+
assertThat(runner.build().task(":formatMain").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
87+
// Up-to-date
88+
assertThat(runner.build().task(":formatMain").getOutcome()).isEqualTo(TaskOutcome.UP_TO_DATE);
89+
Files.write(new File(this.gradleBuild.getProjectDir(), ".springjavaformatconfig").toPath(),
90+
Arrays.asList("indentation-style=spaces"));
91+
assertThat(runner.build().task(":formatMain").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
92+
}
93+
5394
@Test
5495
public void checkSpacesOk() throws IOException {
5596
BuildResult result = this.gradleBuild.source("src/test/resources/format-spaces").build("format");

0 commit comments

Comments
 (0)