Skip to content

Commit 0c428c7

Browse files
authored
Fix stdin pipe is being closed exception on Windows for large .proto files (#2153)
2 parents 853a3fe + df9f467 commit 0c428c7

File tree

7 files changed

+482
-4
lines changed

7 files changed

+482
-4
lines changed

CHANGES.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,15 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (
1111

1212
## [Unreleased]
1313
### Added
14-
* `FileSignature.Promised` and `JarState.Promised` to facilitate round-trip serialization for the Gradle configuration cache. ([#1945](https://github.com/diffplug/spotless/pull/1945))
14+
* `FileSignature.Promised` and `JarState.Promised` to facilitate round-trip serialization for the Gradle configuration cache. ([#1945](https://github.com/diffplug/spotless/pull/1945))
1515
* Respect `.editorconfig` settings for formatting shell via `shfmt` ([#2031](https://github.com/diffplug/spotless/pull/2031))
1616
### Fixed
1717
* Check if ktlint_code_style is set in .editorconfig before overriding it ([#2143](https://github.com/diffplug/spotless/issues/2143))
1818
* Ignore system git config when running tests ([#1990](https://github.com/diffplug/spotless/issues/1990))
1919
* Correctly provide EditorConfig property types for Ktlint ([#2052](https://github.com/diffplug/spotless/issues/2052))
2020
* 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))
2121
* scalafmt.conf fileOverride section now works correctly ([#1854](https://github.com/diffplug/spotless/pull/1854))
22+
* Fix stdin pipe is being closed exception on Windows for large .proto files ([#2147](https://github.com/diffplug/spotless/issues/2147))
2223
* Reworked ShadowCopy (`npmInstallCache`) to use atomic filesystem operations, resolving several race conditions that could arise ([#2151](https://github.com/diffplug/spotless/pull/2151))
2324
### Changes
2425
* Bump default `cleanthat` version to latest `2.16` -> `2.20`. ([#1725](https://github.com/diffplug/spotless/pull/1725))

lib/src/main/java/com/diffplug/spotless/ProcessRunner.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2020-2023 DiffPlug
2+
* Copyright 2020-2024 DiffPlug
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.
@@ -163,6 +163,7 @@ public LongRunningProcess start(@Nullable File cwd, @Nullable Map<String, String
163163
}
164164
// write stdin
165165
process.getOutputStream().write(stdin);
166+
process.getOutputStream().flush();
166167
process.getOutputStream().close();
167168
return new LongRunningProcess(process, args, outputFut, errorFut);
168169
}

plugin-gradle/CHANGES.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (
55
## [Unreleased]
66
### Added
77
* Full, no-asterisk support of Gradle configuration cache. ([#1274](https://github.com/diffplug/spotless/issues/1274), giving up on [#987](https://github.com/diffplug/spotless/issues/987))
8-
* In order to use `custom`, you must now use Gradle 8.0+.
8+
* In order to use `custom`, you must now use Gradle 8.0+.
99
* Respect `.editorconfig` settings for formatting shell via `shfmt` ([#2031](https://github.com/diffplug/spotless/pull/2031))
1010
* Add support for formatting and sorting Maven POMs ([#2082](https://github.com/diffplug/spotless/issues/2082))
1111
### Fixed
@@ -16,6 +16,7 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (
1616
* Fixed memory leak introduced in 6.21.0 ([#2067](https://github.com/diffplug/spotless/issues/2067))
1717
* 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))
1818
* scalafmt.conf fileOverride section now works correctly ([#1854](https://github.com/diffplug/spotless/pull/1854))
19+
* Fix stdin pipe is being closed exception on Windows for large .proto files ([#2147](https://github.com/diffplug/spotless/issues/2147))
1920
* Reworked ShadowCopy (`npmInstallCache`) to use atomic filesystem operations, resolving several race conditions that could arise ([#2151](https://github.com/diffplug/spotless/pull/2151))
2021
### Changes
2122
* Bump default `cleanthat` version to latest `2.16` -> `2.20`. ([#1725](https://github.com/diffplug/spotless/pull/1725))

plugin-gradle/src/test/java/com/diffplug/gradle/spotless/BufIntegrationTest.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2022-2023 DiffPlug
2+
* Copyright 2022-2024 DiffPlug
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.
@@ -23,6 +23,22 @@
2323

2424
@BufTest
2525
class BufIntegrationTest extends GradleIntegrationHarness {
26+
@Test
27+
void bufLarge() throws IOException {
28+
setFile("build.gradle").toLines(
29+
"plugins {",
30+
" id 'com.diffplug.spotless'",
31+
"}",
32+
"spotless {",
33+
" protobuf {",
34+
" buf()",
35+
" }",
36+
"}");
37+
setFile("buf.proto").toResource("protobuf/buf/buf_large.proto");
38+
gradleRunner().withArguments("spotlessApply").build();
39+
assertFile("buf.proto").sameAsResource("protobuf/buf/buf_large.proto.clean");
40+
}
41+
2642
@Test
2743
void buf() throws IOException {
2844
setFile("build.gradle").toLines(

plugin-maven/CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (
1313
* Correctly provide EditorConfig property types for Ktlint ([#2052](https://github.com/diffplug/spotless/issues/2052))
1414
* 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))
1515
* scalafmt.conf fileOverride section now works correctly ([#1854](https://github.com/diffplug/spotless/pull/1854))
16+
* Fix stdin pipe is being closed exception on Windows for large .proto files ([#2147](https://github.com/diffplug/spotless/issues/2147))
1617
* Reworked ShadowCopy (`npmInstallCache`) to use atomic filesystem operations, resolving several race conditions that could arise ([#2151](https://github.com/diffplug/spotless/pull/2151))
1718
### Changes
1819
* Bump default `cleanthat` version to latest `2.16` -> `2.20`. ([#1725](https://github.com/diffplug/spotless/pull/1725))
Lines changed: 229 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,229 @@
1+
syntax = "proto3";
2+
3+
package com.diffplug.gradle.spotless.buf.proto;
4+
5+
option java_multiple_files = true;
6+
7+
message Message {
8+
string message = 1;
9+
}
10+
11+
service Services {
12+
rpc Echo(Message) returns (Message);
13+
}
14+
15+
message Message01 {
16+
string message1 = 1;
17+
string message2 = 2;
18+
string message3 = 3;
19+
string message4 = 4;
20+
string message5 = 5;
21+
string message6 = 6;
22+
string message7 = 7;
23+
string message8 = 8;
24+
string message9 = 9;
25+
}
26+
27+
message Message02 {
28+
string message1 = 1;
29+
string message2 = 2;
30+
string message3 = 3;
31+
string message4 = 4;
32+
string message5 = 5;
33+
string message6 = 6;
34+
string message7 = 7;
35+
string message8 = 8;
36+
string message9 = 9;
37+
}
38+
39+
message Message03 {
40+
string message1 = 1;
41+
string message2 = 2;
42+
string message3 = 3;
43+
string message4 = 4;
44+
string message5 = 5;
45+
string message6 = 6;
46+
string message7 = 7;
47+
string message8 = 8;
48+
string message9 = 9;
49+
}
50+
51+
message Message04 {
52+
string message1 = 1;
53+
string message2 = 2;
54+
string message3 = 3;
55+
string message4 = 4;
56+
string message5 = 5;
57+
string message6 = 6;
58+
string message7 = 7;
59+
string message8 = 8;
60+
string message9 = 9;
61+
}
62+
63+
message Message05 {
64+
string message1 = 1;
65+
string message2 = 2;
66+
string message3 = 3;
67+
string message4 = 4;
68+
string message5 = 5;
69+
string message6 = 6;
70+
string message7 = 7;
71+
string message8 = 8;
72+
string message9 = 9;
73+
}
74+
75+
message Message06 {
76+
string message1 = 1;
77+
string message2 = 2;
78+
string message3 = 3;
79+
string message4 = 4;
80+
string message5 = 5;
81+
string message6 = 6;
82+
string message7 = 7;
83+
string message8 = 8;
84+
string message9 = 9;
85+
}
86+
87+
message Message07 {
88+
string message1 = 1;
89+
string message2 = 2;
90+
string message3 = 3;
91+
string message4 = 4;
92+
string message5 = 5;
93+
string message6 = 6;
94+
string message7 = 7;
95+
string message8 = 8;
96+
string message9 = 9;
97+
}
98+
99+
message Message08 {
100+
string message1 = 1;
101+
string message2 = 2;
102+
string message3 = 3;
103+
string message4 = 4;
104+
string message5 = 5;
105+
string message6 = 6;
106+
string message7 = 7;
107+
string message8 = 8;
108+
string message9 = 9;
109+
}
110+
111+
message Message09 {
112+
string message1 = 1;
113+
string message2 = 2;
114+
string message3 = 3;
115+
string message4 = 4;
116+
string message5 = 5;
117+
string message6 = 6;
118+
string message7 = 7;
119+
string message8 = 8;
120+
string message9 = 9;
121+
}
122+
123+
message Message10 {
124+
string message1 = 1;
125+
string message2 = 2;
126+
string message3 = 3;
127+
string message4 = 4;
128+
string message5 = 5;
129+
string message6 = 6;
130+
string message7 = 7;
131+
string message8 = 8;
132+
string message9 = 9;
133+
}
134+
135+
message Message11 {
136+
string message1 = 1;
137+
string message2 = 2;
138+
string message3 = 3;
139+
string message4 = 4;
140+
string message5 = 5;
141+
string message6 = 6;
142+
string message7 = 7;
143+
string message8 = 8;
144+
string message9 = 9;
145+
}
146+
147+
message Message12 {
148+
string message1 = 1;
149+
string message2 = 2;
150+
string message3 = 3;
151+
string message4 = 4;
152+
string message5 = 5;
153+
string message6 = 6;
154+
string message7 = 7;
155+
string message8 = 8;
156+
string message9 = 9;
157+
}
158+
159+
message Message13 {
160+
string message1 = 1;
161+
string message2 = 2;
162+
string message3 = 3;
163+
string message4 = 4;
164+
string message5 = 5;
165+
string message6 = 6;
166+
string message7 = 7;
167+
string message8 = 8;
168+
string message9 = 9;
169+
}
170+
171+
message Message14 {
172+
string message1 = 1;
173+
string message2 = 2;
174+
string message3 = 3;
175+
string message4 = 4;
176+
string message5 = 5;
177+
string message6 = 6;
178+
string message7 = 7;
179+
string message8 = 8;
180+
string message9 = 9;
181+
}
182+
183+
message Message15 {
184+
string message1 = 1;
185+
string message2 = 2;
186+
string message3 = 3;
187+
string message4 = 4;
188+
string message5 = 5;
189+
string message6 = 6;
190+
string message7 = 7;
191+
string message8 = 8;
192+
string message9 = 9;
193+
}
194+
195+
message Message16 {
196+
string message1 = 1;
197+
string message2 = 2;
198+
string message3 = 3;
199+
string message4 = 4;
200+
string message5 = 5;
201+
string message6 = 6;
202+
string message7 = 7;
203+
string message8 = 8;
204+
string message9 = 9;
205+
}
206+
207+
message Message17 {
208+
string message1 = 1;
209+
string message2 = 2;
210+
string message3 = 3;
211+
string message4 = 4;
212+
string message5 = 5;
213+
string message6 = 6;
214+
string message7 = 7;
215+
string message8 = 8;
216+
string message9 = 9;
217+
}
218+
219+
message Message18 {
220+
string message1 = 1;
221+
string message2 = 2;
222+
string message3 = 3;
223+
string message4 = 4;
224+
string message5 = 5;
225+
string message6 = 6;
226+
string message7 = 7;
227+
string message8 = 8;
228+
string message9 = 9;
229+
}

0 commit comments

Comments
 (0)