Skip to content

Commit a42a8ce

Browse files
committed
Merge branch '3.1.x' into 3.2.x
Closes gh-39305
2 parents c47430d + a6d1788 commit a42a8ce

File tree

1 file changed

+30
-7
lines changed
  • spring-boot-project/spring-boot-tools/spring-boot-jarmode-layertools/src/test/java/org/springframework/boot/jarmode/layertools

1 file changed

+30
-7
lines changed

Diff for: spring-boot-project/spring-boot-tools/spring-boot-jarmode-layertools/src/test/java/org/springframework/boot/jarmode/layertools/ExtractCommandTests.java

+30-7
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.io.FileWriter;
2222
import java.io.IOException;
2323
import java.io.InputStreamReader;
24+
import java.lang.Runtime.Version;
2425
import java.nio.file.Files;
2526
import java.nio.file.LinkOption;
2627
import java.nio.file.attribute.BasicFileAttributeView;
@@ -30,6 +31,7 @@
3031
import java.time.temporal.ChronoUnit;
3132
import java.util.Arrays;
3233
import java.util.Collections;
34+
import java.util.EnumSet;
3335
import java.util.Iterator;
3436
import java.util.concurrent.TimeUnit;
3537
import java.util.function.Consumer;
@@ -38,6 +40,8 @@
3840

3941
import org.junit.jupiter.api.BeforeEach;
4042
import org.junit.jupiter.api.Test;
43+
import org.junit.jupiter.api.condition.JRE;
44+
import org.junit.jupiter.api.condition.OS;
4145
import org.junit.jupiter.api.extension.ExtendWith;
4246
import org.junit.jupiter.api.io.TempDir;
4347
import org.mockito.Mock;
@@ -59,11 +63,13 @@
5963
@ExtendWith(MockitoExtension.class)
6064
class ExtractCommandTests {
6165

62-
private static final FileTime CREATION_TIME = FileTime.from(Instant.now().minus(3, ChronoUnit.DAYS));
66+
private static final Instant NOW = Instant.now();
6367

64-
private static final FileTime LAST_MODIFIED_TIME = FileTime.from(Instant.now().minus(2, ChronoUnit.DAYS));
68+
private static final FileTime CREATION_TIME = FileTime.from(NOW.minus(3, ChronoUnit.DAYS));
6569

66-
private static final FileTime LAST_ACCESS_TIME = FileTime.from(Instant.now().minus(1, ChronoUnit.DAYS));
70+
private static final FileTime LAST_MODIFIED_TIME = FileTime.from(NOW.minus(2, ChronoUnit.DAYS));
71+
72+
private static final FileTime LAST_ACCESS_TIME = FileTime.from(NOW.minus(1, ChronoUnit.DAYS));
6773

6874
@TempDir
6975
File temp;
@@ -107,10 +113,11 @@ private void timeAttributes(File file) {
107113
.readAttributes();
108114
assertThat(basicAttributes.lastModifiedTime().to(TimeUnit.SECONDS))
109115
.isEqualTo(LAST_MODIFIED_TIME.to(TimeUnit.SECONDS));
110-
assertThat(basicAttributes.creationTime().to(TimeUnit.SECONDS)).satisfiesAnyOf(
111-
(creationTime) -> assertThat(creationTime).isEqualTo(CREATION_TIME.to(TimeUnit.SECONDS)),
112-
// On macOS (at least) the creation time is the last modified time
113-
(creationTime) -> assertThat(creationTime).isEqualTo(LAST_MODIFIED_TIME.to(TimeUnit.SECONDS)));
116+
FileTime expectedCreationTime = expectedCreationTime();
117+
if (expectedCreationTime != null) {
118+
assertThat(basicAttributes.creationTime().to(TimeUnit.SECONDS))
119+
.isEqualTo(expectedCreationTime.to(TimeUnit.SECONDS));
120+
}
114121
assertThat(basicAttributes.lastAccessTime().to(TimeUnit.SECONDS))
115122
.isEqualTo(LAST_ACCESS_TIME.to(TimeUnit.SECONDS));
116123
}
@@ -119,6 +126,22 @@ private void timeAttributes(File file) {
119126
}
120127
}
121128

129+
private FileTime expectedCreationTime() {
130+
// macOS uses last modified time until Java 20 where it uses creation time.
131+
// https://github.com/openjdk/jdk21u-dev/commit/6397d564a5dab07f81bf4c69b116ebfabb2446ba
132+
if (OS.MAC.isCurrentOs()) {
133+
return (EnumSet.range(JRE.JAVA_17, JRE.JAVA_19).contains(JRE.currentVersion())) ? LAST_MODIFIED_TIME
134+
: CREATION_TIME;
135+
}
136+
if (OS.LINUX.isCurrentOs()) {
137+
// Linux uses the modified time until Java 21.0.2 where a bug means that it
138+
// uses the birth time which it has not set, preventing us from verifying it.
139+
// https://github.com/openjdk/jdk21u-dev/commit/4cf572e3b99b675418e456e7815fb6fd79245e30
140+
return (Runtime.version().compareTo(Version.parse("21.0.2")) >= 0) ? null : LAST_MODIFIED_TIME;
141+
}
142+
return CREATION_TIME;
143+
}
144+
122145
@Test
123146
void runWhenHasDestinationOptionExtractsLayers() {
124147
given(this.context.getArchiveFile()).willReturn(this.jarFile);

0 commit comments

Comments
 (0)