Skip to content

Commit fde7e85

Browse files
larsgreferwilkinsona
authored andcommitted
Support up-to-date checking of Format task
See gh-323
1 parent c63853c commit fde7e85

File tree

2 files changed

+35
-0
lines changed
  • spring-javaformat-gradle/spring-javaformat-gradle-plugin/src

2 files changed

+35
-0
lines changed

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@
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.InputFiles;
24+
import org.gradle.api.tasks.OutputFiles;
25+
import org.gradle.api.tasks.PathSensitive;
26+
import org.gradle.api.tasks.PathSensitivity;
2227
import org.gradle.api.tasks.TaskAction;
2328

2429
import io.spring.javaformat.formatter.FileEdit;
@@ -51,4 +56,15 @@ public void format() throws IOException, InterruptedException {
5156
}
5257
}
5358

59+
@Override
60+
@InputFiles
61+
@PathSensitive(PathSensitivity.RELATIVE)
62+
public FileTree getSource() {
63+
return super.getSource();
64+
}
65+
66+
@OutputFiles
67+
public FileTree getOutputFiles() {
68+
return super.getSource();
69+
}
5470
}

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.nio.file.Files;
2222

2323
import org.gradle.testkit.runner.BuildResult;
24+
import org.gradle.testkit.runner.GradleRunner;
2425
import org.gradle.testkit.runner.TaskOutcome;
2526
import org.junit.jupiter.api.Test;
2627
import org.junit.jupiter.api.extension.ExtendWith;
@@ -50,6 +51,24 @@ public void checkOk() throws IOException {
5051
assertThat(formattedContent).contains("class Simple {").contains(" public static void main");
5152
}
5253

54+
@Test
55+
public void checkUpTpDate() throws IOException {
56+
GradleRunner runner = this.gradleBuild.source("src/test/resources/format").prepareRunner("format");
57+
58+
// 1) Actually format the sources.
59+
BuildResult result1 = runner.build();
60+
assertThat(result1.task(":formatMain").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
61+
62+
// 2) No-op reformat the sources
63+
// Not up-to-date yet because 1) changed the sources.
64+
BuildResult result2 = runner.build();
65+
assertThat(result2.task(":formatMain").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
66+
67+
// 3) Now we should be up-to-date since 2) was effectively a no-op
68+
BuildResult result3 = runner.build();
69+
assertThat(result3.task(":formatMain").getOutcome()).isEqualTo(TaskOutcome.UP_TO_DATE);
70+
}
71+
5372
@Test
5473
public void checkSpacesOk() throws IOException {
5574
BuildResult result = this.gradleBuild.source("src/test/resources/format-spaces").build("format");

0 commit comments

Comments
 (0)