Merge branch '3.0.x'

Closes gh-34431
This commit is contained in:
Phillip Webb
2023-03-01 21:29:13 -08:00
6 changed files with 149 additions and 7 deletions

View File

@@ -21,6 +21,7 @@ import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
import java.util.concurrent.atomic.AtomicReference;
import java.util.jar.JarFile;
@@ -404,10 +405,12 @@ class JarIntegrationTests extends AbstractArchiveIntegrationTests {
mavenBuild.project("jar-output-timestamp").execute((project) -> {
File repackaged = new File(project, "target/jar-output-timestamp-0.0.1.BUILD-SNAPSHOT.jar");
assertThat(repackaged).isFile();
assertThat(repackaged.lastModified()).isEqualTo(1584352800000L);
long expectedModified = 1584352800000L;
long offsetExpectedModified = expectedModified - TimeZone.getDefault().getOffset(expectedModified);
assertThat(repackaged.lastModified()).isEqualTo(expectedModified);
try (JarFile jar = new JarFile(repackaged)) {
List<String> unreproducibleEntries = jar.stream()
.filter((entry) -> entry.getLastModifiedTime().toMillis() != 1584352800000L)
.filter((entry) -> entry.getLastModifiedTime().toMillis() != offsetExpectedModified)
.map((entry) -> entry.getName() + ": " + entry.getLastModifiedTime())
.toList();
assertThat(unreproducibleEntries).isEmpty();

View File

@@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
import java.util.concurrent.atomic.AtomicReference;
import java.util.jar.JarFile;
@@ -95,10 +96,12 @@ class WarIntegrationTests extends AbstractArchiveIntegrationTests {
mavenBuild.project("war-output-timestamp").execute((project) -> {
File repackaged = new File(project, "target/war-output-timestamp-0.0.1.BUILD-SNAPSHOT.war");
assertThat(repackaged).isFile();
assertThat(repackaged.lastModified()).isEqualTo(1584352800000L);
long expectedModified = 1584352800000L;
assertThat(repackaged.lastModified()).isEqualTo(expectedModified);
long offsetExpectedModified = expectedModified - TimeZone.getDefault().getOffset(expectedModified);
try (JarFile jar = new JarFile(repackaged)) {
List<String> unreproducibleEntries = jar.stream()
.filter((entry) -> entry.getLastModifiedTime().toMillis() != 1584352800000L)
.filter((entry) -> entry.getLastModifiedTime().toMillis() != offsetExpectedModified)
.map((entry) -> entry.getName() + ": " + entry.getLastModifiedTime())
.toList();
assertThat(unreproducibleEntries).isEmpty();