diff --git a/lib/src/main/java/com/diffplug/spotless/ProcessRunner.java b/lib/src/main/java/com/diffplug/spotless/ProcessRunner.java index 48307d7d3..f110207e3 100644 --- a/lib/src/main/java/com/diffplug/spotless/ProcessRunner.java +++ b/lib/src/main/java/com/diffplug/spotless/ProcessRunner.java @@ -163,7 +163,6 @@ public class ProcessRunner implements AutoCloseable { } // write stdin process.getOutputStream().write(stdin); - process.getOutputStream().close(); return new LongRunningProcess(process, args, outputFut, errorFut); } diff --git a/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/BufIntegrationTest.java b/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/BufIntegrationTest.java index b91512c7e..0411d5776 100644 --- a/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/BufIntegrationTest.java +++ b/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/BufIntegrationTest.java @@ -23,6 +23,74 @@ import com.diffplug.spotless.tag.BufTest; @BufTest class BufIntegrationTest extends GradleIntegrationHarness { + @Test + void bufFromMaven() throws IOException { + setFile("build.gradle").toLines( + "plugins {", + " id 'com.diffplug.spotless'", + "}", + "repositories { mavenCentral() }", + "def getBufClassifier() {", + " def osName = System.getProperty(\"os.name\").toLowerCase()", + " def os = \"\"", + " switch (osName) {", + " case { it.startsWith(\"windows\") }:", + " os = \"windows\"", + " break", + " case { it.startsWith(\"linux\") }:", + " os = \"linux\"", + " break", + " case { it.startsWith(\"mac\") }:", + " os = \"osx\"", + " break", + " default:", + " throw new GradleException(\"Unsupported OS: $osName\")", + " }", + " def arch = \"\"", + " switch (System.getProperty(\"os.arch\").toLowerCase()) {", + " case { it.startsWith(\"x86_64\") || it.startsWith(\"amd64\") }:", + " arch = \"x86_64\"", + " break", + " case { it.startsWith(\"arm64\") || it.startsWith(\"aarch64\") }:", + " arch = \"aarch_64\"", + " break", + " default:", + " throw new GradleException(\"Unsupported architecture: ${it}\")", + " }", + " return \"$os-$arch\"", + "}", + "configurations { localBuf {} }", + "dependencies {", + " localBuf group: \"build.buf\", name: \"buf\", version: \"1.31.0\", ext: \"exe\", classifier: getBufClassifier(), transitive: false", + "}", + "spotless {", + " protobuf {", + " def bufExe = configurations.localBuf.singleFile", + " if (!bufExe.canExecute()) bufExe.setExecutable(true)", + " buf(\"1.31.0\").pathToExe(bufExe.absolutePath)", + " }", + "}"); + setFile("buf.proto").toResource("protobuf/buf/buf.proto"); + gradleRunner().withArguments("spotlessApply").build(); + assertFile("buf.proto").sameAsResource("protobuf/buf/buf.proto.clean"); + } + + @Test + void bufLarge() throws IOException { + setFile("build.gradle").toLines( + "plugins {", + " id 'com.diffplug.spotless'", + "}", + "spotless {", + " protobuf {", + " buf(\"1.31.0\")", + " }", + "}"); + setFile("buf.proto").toResource("protobuf/buf/buf_large.proto"); + gradleRunner().withArguments("spotlessApply").build(); + assertFile("buf.proto").sameAsResource("protobuf/buf/buf_large.proto.clean"); + } + @Test void buf() throws IOException { setFile("build.gradle").toLines( @@ -31,7 +99,7 @@ class BufIntegrationTest extends GradleIntegrationHarness { "}", "spotless {", " protobuf {", - " buf()", + " buf(\"1.31.0\")", " }", "}"); setFile("buf.proto").toResource("protobuf/buf/buf.proto"); @@ -47,7 +115,7 @@ class BufIntegrationTest extends GradleIntegrationHarness { "}", "spotless {", " protobuf {", - " buf()", + " buf(\"1.31.0\")", " licenseHeader '/* (C) 2022 */'", " }", "}"); diff --git a/testlib/src/main/resources/protobuf/buf/buf_large.proto b/testlib/src/main/resources/protobuf/buf/buf_large.proto new file mode 100644 index 000000000..151c7f4bf --- /dev/null +++ b/testlib/src/main/resources/protobuf/buf/buf_large.proto @@ -0,0 +1,229 @@ +syntax = "proto3"; + +package com.diffplug.gradle.spotless.buf.proto; + +option java_multiple_files = true; + +message Message { + string message = 1; +} + +service Services { +rpc Echo(Message) returns (Message); +} + +message Message01 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message02 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message03 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message04 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message05 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message06 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message07 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message08 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message09 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message10 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message11 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message12 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message13 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message14 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message15 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message16 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message17 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message18 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} diff --git a/testlib/src/main/resources/protobuf/buf/buf_large.proto.clean b/testlib/src/main/resources/protobuf/buf/buf_large.proto.clean new file mode 100644 index 000000000..c4218adfc --- /dev/null +++ b/testlib/src/main/resources/protobuf/buf/buf_large.proto.clean @@ -0,0 +1,229 @@ +syntax = "proto3"; + +package com.diffplug.gradle.spotless.buf.proto; + +option java_multiple_files = true; + +message Message { + string message = 1; +} + +service Services { + rpc Echo(Message) returns (Message); +} + +message Message01 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message02 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message03 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message04 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message05 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message06 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message07 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message08 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message09 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message10 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message11 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message12 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message13 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message14 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message15 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message16 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message17 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +} + +message Message18 { + string message1 = 1; + string message2 = 2; + string message3 = 3; + string message4 = 4; + string message5 = 5; + string message6 = 6; + string message7 = 7; + string message8 = 8; + string message9 = 9; +}