Merge pull request #18883 from izeye

* pr/18883:
  Use try-with-resources blocks in JarFileArchiveTests

Closes gh-18883
pull/18915/head
Stephane Nicoll 5 years ago
commit b35573a5aa

@ -98,48 +98,48 @@ class JarFileArchiveTests {
@Test @Test
void getNestedArchive() throws Exception { void getNestedArchive() throws Exception {
Entry entry = getEntriesMap(this.archive).get("nested.jar"); Entry entry = getEntriesMap(this.archive).get("nested.jar");
Archive nested = this.archive.getNestedArchive(entry); try (Archive nested = this.archive.getNestedArchive(entry)) {
assertThat(nested.getUrl().toString()).isEqualTo("jar:" + this.rootJarFileUrl + "!/nested.jar!/"); assertThat(nested.getUrl().toString()).isEqualTo("jar:" + this.rootJarFileUrl + "!/nested.jar!/");
((JarFileArchive) nested).close(); }
} }
@Test @Test
void getNestedUnpackedArchive() throws Exception { void getNestedUnpackedArchive() throws Exception {
setup(true); setup(true);
Entry entry = getEntriesMap(this.archive).get("nested.jar"); Entry entry = getEntriesMap(this.archive).get("nested.jar");
Archive nested = this.archive.getNestedArchive(entry); try (Archive nested = this.archive.getNestedArchive(entry)) {
assertThat(nested.getUrl().toString()).startsWith("file:"); assertThat(nested.getUrl().toString()).startsWith("file:");
assertThat(nested.getUrl().toString()).endsWith("/nested.jar"); assertThat(nested.getUrl().toString()).endsWith("/nested.jar");
((JarFileArchive) nested).close(); }
} }
@Test @Test
void unpackedLocationsAreUniquePerArchive() throws Exception { void unpackedLocationsAreUniquePerArchive() throws Exception {
setup(true); setup(true);
Entry entry = getEntriesMap(this.archive).get("nested.jar"); Entry entry = getEntriesMap(this.archive).get("nested.jar");
Archive firstNested = this.archive.getNestedArchive(entry); URL firstNestedUrl;
URL firstNestedUrl = firstNested.getUrl(); try (Archive firstNested = this.archive.getNestedArchive(entry)) {
((JarFileArchive) firstNested).close(); firstNestedUrl = firstNested.getUrl();
}
this.archive.close(); this.archive.close();
setup(true); setup(true);
entry = getEntriesMap(this.archive).get("nested.jar"); entry = getEntriesMap(this.archive).get("nested.jar");
Archive secondNested = this.archive.getNestedArchive(entry); try (Archive secondNested = this.archive.getNestedArchive(entry)) {
URL secondNestedUrl = secondNested.getUrl(); URL secondNestedUrl = secondNested.getUrl();
assertThat(secondNestedUrl).isNotEqualTo(firstNestedUrl); assertThat(secondNestedUrl).isNotEqualTo(firstNestedUrl);
((JarFileArchive) secondNested).close(); }
} }
@Test @Test
void unpackedLocationsFromSameArchiveShareSameParent() throws Exception { void unpackedLocationsFromSameArchiveShareSameParent() throws Exception {
setup(true); setup(true);
Archive nestedArchive = this.archive.getNestedArchive(getEntriesMap(this.archive).get("nested.jar")); try (Archive nestedArchive = this.archive.getNestedArchive(getEntriesMap(this.archive).get("nested.jar"));
File nested = new File(nestedArchive.getUrl().toURI());
Archive anotherNestedArchive = this.archive Archive anotherNestedArchive = this.archive
.getNestedArchive(getEntriesMap(this.archive).get("another-nested.jar")); .getNestedArchive(getEntriesMap(this.archive).get("another-nested.jar"))) {
File nested = new File(nestedArchive.getUrl().toURI());
File anotherNested = new File(anotherNestedArchive.getUrl().toURI()); File anotherNested = new File(anotherNestedArchive.getUrl().toURI());
assertThat(nested.getParent()).isEqualTo(anotherNested.getParent()); assertThat(nested.getParent()).isEqualTo(anotherNested.getParent());
((JarFileArchive) nestedArchive).close(); }
((JarFileArchive) anotherNestedArchive).close();
} }
@Test @Test
@ -156,9 +156,9 @@ class JarFileArchiveTests {
} }
@Test @Test
void nestedZip64ArchivesAreHandledGracefully() throws IOException { void nestedZip64ArchivesAreHandledGracefully() throws Exception {
File file = new File(this.tempDir, "test.jar"); File file = new File(this.tempDir, "test.jar");
JarOutputStream output = new JarOutputStream(new FileOutputStream(file)); try (JarOutputStream output = new JarOutputStream(new FileOutputStream(file))) {
JarEntry zip64JarEntry = new JarEntry("nested/zip64.jar"); JarEntry zip64JarEntry = new JarEntry("nested/zip64.jar");
output.putNextEntry(zip64JarEntry); output.putNextEntry(zip64JarEntry);
byte[] zip64JarData = writeZip64Jar(); byte[] zip64JarData = writeZip64Jar();
@ -170,26 +170,26 @@ class JarFileArchiveTests {
zip64JarEntry.setCrc(crc32.getValue()); zip64JarEntry.setCrc(crc32.getValue());
output.write(zip64JarData); output.write(zip64JarData);
output.closeEntry(); output.closeEntry();
output.close(); }
JarFileArchive jarFileArchive = new JarFileArchive(file); try (JarFileArchive jarFileArchive = new JarFileArchive(file);
Archive nestedArchive = jarFileArchive.getNestedArchive(getEntriesMap(jarFileArchive).get("nested/zip64.jar")); Archive nestedArchive = jarFileArchive
.getNestedArchive(getEntriesMap(jarFileArchive).get("nested/zip64.jar"))) {
Iterator<Entry> it = nestedArchive.iterator(); Iterator<Entry> it = nestedArchive.iterator();
for (int i = 0; i < 65537; i++) { for (int i = 0; i < 65537; i++) {
assertThat(it.hasNext()).as(i + "nth file is present").isTrue(); assertThat(it.hasNext()).as(i + "nth file is present").isTrue();
it.next(); it.next();
} }
((JarFileArchive) nestedArchive).close(); }
jarFileArchive.close();
} }
private byte[] writeZip64Jar() throws IOException { private byte[] writeZip64Jar() throws IOException {
ByteArrayOutputStream bytes = new ByteArrayOutputStream(); ByteArrayOutputStream bytes = new ByteArrayOutputStream();
JarOutputStream jarOutput = new JarOutputStream(bytes); try (JarOutputStream jarOutput = new JarOutputStream(bytes)) {
for (int i = 0; i < 65537; i++) { for (int i = 0; i < 65537; i++) {
jarOutput.putNextEntry(new JarEntry(i + ".dat")); jarOutput.putNextEntry(new JarEntry(i + ".dat"));
jarOutput.closeEntry(); jarOutput.closeEntry();
} }
jarOutput.close(); }
return bytes.toByteArray(); return bytes.toByteArray();
} }

Loading…
Cancel
Save