aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google
diff options
context:
space:
mode:
authorGravatar laszlocsomor <laszlocsomor@google.com>2018-07-09 08:41:53 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-09 08:43:19 -0700
commitf0f5d101ddac1bce16b49fce828e85096c24bbfd (patch)
tree74a33191dd4dc6a00f6136d3a96e99ddf9ee7d46 /src/test/java/com/google
parent2f0033a6a314da8bf22eed6e08ef9d7cbb5d8ff1 (diff)
Bazel server, tools: ensure Readers are closed
Follow-up to commit 59f17d6e0550bf63a0b6ef182e2d63474e058ede. Use try-with-resources to ensure Reader objects are closed eagerly. Eagerly closing Readers avoids hanging on to file handles until the garbage collector finalizes the object, meaning Bazel on Windows (and other processes) can delete or mutate these files. Hopefully this avoids intermittent file deletion errors that sometimes occur on Windows. See https://github.com/bazelbuild/bazel/issues/5512 RELNOTES: none PiperOrigin-RevId: 203771262
Diffstat (limited to 'src/test/java/com/google')
-rw-r--r--src/test/java/com/google/devtools/build/android/AarGeneratorActionTest.java18
-rw-r--r--src/test/java/com/google/devtools/build/android/ziputils/SplitZipTest.java51
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/repository/downloader/HashInputStreamTest.java37
-rw-r--r--src/test/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransportTest.java4
4 files changed, 58 insertions, 52 deletions
diff --git a/src/test/java/com/google/devtools/build/android/AarGeneratorActionTest.java b/src/test/java/com/google/devtools/build/android/AarGeneratorActionTest.java
index ae40dd3592..c5f5323376 100644
--- a/src/test/java/com/google/devtools/build/android/AarGeneratorActionTest.java
+++ b/src/test/java/com/google/devtools/build/android/AarGeneratorActionTest.java
@@ -730,14 +730,16 @@ public class AarGeneratorActionTest {
aarData.proguardSpecs);
Set<String> zipEntries = getZipEntries(aar);
assertThat(zipEntries).contains("proguard.txt");
- ZipReader aarReader = new ZipReader(aar.toFile());
- List<String> proguardTxtContents =
- new BufferedReader(
- new InputStreamReader(
- aarReader.getInputStream(aarReader.getEntry("proguard.txt")),
- StandardCharsets.UTF_8))
- .lines()
- .collect(Collectors.toList());
+ List<String> proguardTxtContents = null;
+ try (ZipReader aarReader = new ZipReader(aar.toFile())) {
+ proguardTxtContents =
+ new BufferedReader(
+ new InputStreamReader(
+ aarReader.getInputStream(aarReader.getEntry("proguard.txt")),
+ StandardCharsets.UTF_8))
+ .lines()
+ .collect(Collectors.toList());
+ }
assertThat(proguardTxtContents).containsExactly("foo", "bar", "baz").inOrder();
}
}
diff --git a/src/test/java/com/google/devtools/build/android/ziputils/SplitZipTest.java b/src/test/java/com/google/devtools/build/android/ziputils/SplitZipTest.java
index 1794252a22..15f1461196 100644
--- a/src/test/java/com/google/devtools/build/android/ziputils/SplitZipTest.java
+++ b/src/test/java/com/google/devtools/build/android/ziputils/SplitZipTest.java
@@ -21,6 +21,7 @@ import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableSet;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.InputStream;
import java.util.Arrays;
import java.util.Date;
import org.junit.Before;
@@ -423,15 +424,17 @@ public class SplitZipTest {
String classFileList = "pkg1/test1.class\npkg2/test2.class\n";
fileSystem.addFile("main_dex_list.txt", classFileList);
- new SplitZip()
- .addOutput(new ZipOut(fileSystem.getOutputChannel("out/shard1.jar", false),
- "out/shard1.jar"))
- .addOutput(new ZipOut(fileSystem.getOutputChannel("out/shard2.jar", false),
- "out/shard2.jar"))
- .setMainClassListFile(fileSystem.getInputStream("main_dex_list.txt"))
- .addInput(new ZipIn(fileSystem.getInputChannel("input.jar"), "input.jar"))
- .run()
- .close();
+ try (InputStream mainDex = fileSystem.getInputStream("main_dex_list.txt")) {
+ new SplitZip()
+ .addOutput(new ZipOut(fileSystem.getOutputChannel("out/shard1.jar", false),
+ "out/shard1.jar"))
+ .addOutput(new ZipOut(fileSystem.getOutputChannel("out/shard2.jar", false),
+ "out/shard2.jar"))
+ .setMainClassListStreamForTesting(mainDex)
+ .addInput(new ZipIn(fileSystem.getInputChannel("input.jar"), "input.jar"))
+ .run()
+ .close();
+ }
new ZipFileBuilder()
.add("pkg1/test1.class", "hello world")
@@ -531,20 +534,22 @@ public class SplitZipTest {
String classFileList = "pkg1/test1.class\npkg2/test2.class\n";
fileSystem.addFile("main_dex_list.txt", classFileList);
- new SplitZip()
- .addOutput(new ZipOut(fileSystem.getOutputChannel("out/shard1.jar", false),
- "out/shard1.jar"))
- .addOutput(new ZipOut(fileSystem.getOutputChannel("out/shard2.jar", false),
- "out/shard2.jar"))
- .setVerbose(true)
- .setMainClassListFile(fileSystem.getInputStream("main_dex_list.txt"))
- .addInput(new ZipIn(fileSystem.getInputChannel("input.jar"), "input.jar"))
- .setInputFilter(
- Predicates.in(
- ImmutableSet.of("pkg1/test1.class", "pkg2/test1.class", "pkg3/test1.class")))
- .setSplitDexedClasses(true)
- .run()
- .close();
+ try (InputStream mainDex = fileSystem.getInputStream("main_dex_list.txt")) {
+ new SplitZip()
+ .addOutput(new ZipOut(fileSystem.getOutputChannel("out/shard1.jar", false),
+ "out/shard1.jar"))
+ .addOutput(new ZipOut(fileSystem.getOutputChannel("out/shard2.jar", false),
+ "out/shard2.jar"))
+ .setVerbose(true)
+ .setMainClassListStreamForTesting(mainDex)
+ .addInput(new ZipIn(fileSystem.getInputChannel("input.jar"), "input.jar"))
+ .setInputFilter(
+ Predicates.in(
+ ImmutableSet.of("pkg1/test1.class", "pkg2/test1.class", "pkg3/test1.class")))
+ .setSplitDexedClasses(true)
+ .run()
+ .close();
+ }
// 1st shard contains only main dex list classes also in the filter
new ZipFileBuilder()
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/downloader/HashInputStreamTest.java b/src/test/java/com/google/devtools/build/lib/bazel/repository/downloader/HashInputStreamTest.java
index c1e14df907..3c97cf30f7 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/repository/downloader/HashInputStreamTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/downloader/HashInputStreamTest.java
@@ -39,29 +39,30 @@ public class HashInputStreamTest {
@Test
public void validChecksum_readsOk() throws Exception {
- assertThat(
- CharStreams.toString(
- new InputStreamReader(
- new HashInputStream(
- new ByteArrayInputStream("hello".getBytes(UTF_8)),
- Hashing.sha1(),
- HashCode.fromString("aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d")),
- UTF_8)))
- .isEqualTo("hello");
+ try (InputStreamReader reader =
+ new InputStreamReader(
+ new HashInputStream(
+ new ByteArrayInputStream("hello".getBytes(UTF_8)),
+ Hashing.sha1(),
+ HashCode.fromString("aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d")),
+ UTF_8)) {
+ assertThat(CharStreams.toString(reader)).isEqualTo("hello");
+ }
}
@Test
public void badChecksum_throwsIOException() throws Exception {
thrown.expect(IOException.class);
thrown.expectMessage("Checksum");
- assertThat(
- CharStreams.toString(
- new InputStreamReader(
- new HashInputStream(
- new ByteArrayInputStream("hello".getBytes(UTF_8)),
- Hashing.sha1(),
- HashCode.fromString("0000000000000000000000000000000000000000")),
- UTF_8)))
- .isNull(); // Only here to make @CheckReturnValue happy.
+ try (InputStreamReader reader =
+ new InputStreamReader(
+ new HashInputStream(
+ new ByteArrayInputStream("hello".getBytes(UTF_8)),
+ Hashing.sha1(),
+ HashCode.fromString("0000000000000000000000000000000000000000")),
+ UTF_8)) {
+ assertThat(CharStreams.toString(reader))
+ .isNull(); // Only here to make @CheckReturnValue happy.
+ }
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransportTest.java b/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransportTest.java
index 656f87c289..83ce626c22 100644
--- a/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransportTest.java
+++ b/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/JsonFormatFileTransportTest.java
@@ -29,7 +29,6 @@ import com.google.devtools.common.options.Options;
import com.google.protobuf.util.JsonFormat;
import java.io.File;
import java.io.FileInputStream;
-import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import org.junit.After;
@@ -82,8 +81,7 @@ public class JsonFormatFileTransportTest {
transport.sendBuildEvent(buildEvent, artifactGroupNamer);
transport.close().get();
- try (InputStream in = new FileInputStream(output)) {
- Reader reader = new InputStreamReader(in);
+ try (Reader reader = new InputStreamReader(new FileInputStream(output))) {
JsonFormat.Parser parser = JsonFormat.parser();
BuildEventStreamProtos.BuildEvent.Builder builder =
BuildEventStreamProtos.BuildEvent.newBuilder();