diff --git a/CHANGES.md b/CHANGES.md index 36da263117..7a83c3f2b7 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,7 +11,7 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format ( ## [Unreleased] ### Added -* `FileSignature.Promised` and `JarState.Promised` to facilitate round-trip serialization for the Gradle configuration cache. ([#1945](https://github.com/diffplug/spotless/pull/1945)) +* `FileSignature.Promised` and `JarState.Promised` to facilitate round-trip serialization for the Gradle configuration cache. ([#1945](https://github.com/diffplug/spotless/pull/1945)) * Respect `.editorconfig` settings for formatting shell via `shfmt` ([#2031](https://github.com/diffplug/spotless/pull/2031)) ### Fixed * Check if ktlint_code_style is set in .editorconfig before overriding it ([#2143](https://github.com/diffplug/spotless/issues/2143)) @@ -19,6 +19,7 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format ( * Correctly provide EditorConfig property types for Ktlint ([#2052](https://github.com/diffplug/spotless/issues/2052)) * Made ShadowCopy (`npmInstallCache`) more robust by re-creating the cache dir if it goes missing ([#1984](https://github.com/diffplug/spotless/issues/1984),[2096](https://github.com/diffplug/spotless/pull/2096)) * scalafmt.conf fileOverride section now works correctly ([#1854](https://github.com/diffplug/spotless/pull/1854)) +* Fix stdin pipe is being closed exception on Windows for large .proto files ([#2147](https://github.com/diffplug/spotless/issues/2147)) * Reworked ShadowCopy (`npmInstallCache`) to use atomic filesystem operations, resolving several race conditions that could arise ([#2151](https://github.com/diffplug/spotless/pull/2151)) ### Changes * Bump default `cleanthat` version to latest `2.16` -> `2.20`. ([#1725](https://github.com/diffplug/spotless/pull/1725)) diff --git a/lib/src/main/java/com/diffplug/spotless/ProcessRunner.java b/lib/src/main/java/com/diffplug/spotless/ProcessRunner.java index 48307d7d3a..e7755f75bd 100644 --- a/lib/src/main/java/com/diffplug/spotless/ProcessRunner.java +++ b/lib/src/main/java/com/diffplug/spotless/ProcessRunner.java @@ -1,5 +1,5 @@ /* - * Copyright 2020-2023 DiffPlug + * Copyright 2020-2024 DiffPlug * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -163,6 +163,7 @@ public LongRunningProcess start(@Nullable File cwd, @Nullable Map `2.20`. ([#1725](https://github.com/diffplug/spotless/pull/1725)) 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 b91512c7ed..be26cc8e71 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 @@ -1,5 +1,5 @@ /* - * Copyright 2022-2023 DiffPlug + * Copyright 2022-2024 DiffPlug * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,22 @@ @BufTest class BufIntegrationTest extends GradleIntegrationHarness { + @Test + void bufLarge() throws IOException { + setFile("build.gradle").toLines( + "plugins {", + " id 'com.diffplug.spotless'", + "}", + "spotless {", + " protobuf {", + " buf()", + " }", + "}"); + 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( diff --git a/plugin-maven/CHANGES.md b/plugin-maven/CHANGES.md index 1646481d41..50fd82e9b6 100644 --- a/plugin-maven/CHANGES.md +++ b/plugin-maven/CHANGES.md @@ -13,6 +13,7 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format ( * Correctly provide EditorConfig property types for Ktlint ([#2052](https://github.com/diffplug/spotless/issues/2052)) * Made ShadowCopy (`npmInstallCache`) more robust by re-creating the cache dir if it goes missing ([#1984](https://github.com/diffplug/spotless/issues/1984),[2096](https://github.com/diffplug/spotless/pull/2096)) * scalafmt.conf fileOverride section now works correctly ([#1854](https://github.com/diffplug/spotless/pull/1854)) +* Fix stdin pipe is being closed exception on Windows for large .proto files ([#2147](https://github.com/diffplug/spotless/issues/2147)) * Reworked ShadowCopy (`npmInstallCache`) to use atomic filesystem operations, resolving several race conditions that could arise ([#2151](https://github.com/diffplug/spotless/pull/2151)) ### Changes * Bump default `cleanthat` version to latest `2.16` -> `2.20`. ([#1725](https://github.com/diffplug/spotless/pull/1725)) 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 0000000000..01a638d726 --- /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 0000000000..c4218adfc8 --- /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; +}