Skip to content

Commit b3226c5

Browse files
committed
Polish
1 parent 6b646f6 commit b3226c5

File tree

4 files changed

+36
-22
lines changed

4 files changed

+36
-22
lines changed

spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import org.gradle.testkit.runner.BuildResult;
3737
import org.gradle.testkit.runner.TaskOutcome;
3838
import org.junit.jupiter.api.TestTemplate;
39-
import org.junit.jupiter.api.condition.DisabledOnOs;
4039
import org.junit.jupiter.api.condition.OS;
4140

4241
import org.springframework.boot.buildpack.platform.docker.DockerApi;
@@ -47,6 +46,7 @@
4746
import org.springframework.boot.buildpack.platform.io.FilePermissions;
4847
import org.springframework.boot.gradle.junit.GradleCompatibility;
4948
import org.springframework.boot.testsupport.gradle.testkit.GradleBuild;
49+
import org.springframework.boot.testsupport.junit.DisabledOnOs;
5050
import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable;
5151

5252
import static org.assertj.core.api.Assertions.assertThat;
@@ -60,7 +60,7 @@
6060
*/
6161
@GradleCompatibility(configurationCache = true)
6262
@DisabledIfDockerUnavailable
63-
@org.springframework.boot.testsupport.junit.DisabledOnOs(os = { OS.LINUX, OS.MAC }, architecture = "aarch64",
63+
@DisabledOnOs(os = { OS.LINUX, OS.MAC }, architecture = "aarch64",
6464
disabledReason = "The builder image has no ARM support")
6565
class BootBuildImageIntegrationTests {
6666

spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/BuildImageTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.springframework.boot.buildpack.platform.docker.type.ImageName;
3434
import org.springframework.boot.buildpack.platform.docker.type.ImageReference;
3535
import org.springframework.boot.buildpack.platform.docker.type.VolumeName;
36+
import org.springframework.boot.testsupport.junit.DisabledOnOs;
3637
import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable;
3738

3839
import static org.assertj.core.api.Assertions.assertThat;
@@ -46,7 +47,7 @@
4647
*/
4748
@ExtendWith(MavenBuildExtension.class)
4849
@DisabledIfDockerUnavailable
49-
@org.springframework.boot.testsupport.junit.DisabledOnOs(os = { OS.LINUX, OS.MAC }, architecture = "aarch64",
50+
@DisabledOnOs(os = { OS.LINUX, OS.MAC }, architecture = "aarch64",
5051
disabledReason = "The builder image has no ARM support")
5152
class BuildImageTests extends AbstractArchiveIntegrationTests {
5253

spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/junit/DisabledOnOs.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,22 @@
3737
public @interface DisabledOnOs {
3838

3939
/**
40-
* See {@link org.junit.jupiter.api.condition.DisabledOnOs#value()}.
41-
* @return os
40+
* The operating systems on which the annotated class or method should be disabled.
41+
* @return the operating systems where the test is disabled
4242
*/
43-
OS[] os();
43+
OS[] value() default {};
4444

4545
/**
46-
* Architecture of the operating system.
47-
* @return architecture
46+
* The operating systems on which the annotated class or method should be disabled.
47+
* @return the operating systems where the test is disabled
4848
*/
49-
String architecture();
49+
OS[] os() default {};
50+
51+
/**
52+
* The architectures on which the annotated class or method should be disabled.
53+
* @return the architectures where the test is disabled
54+
*/
55+
String[] architecture() default {};
5056

5157
/**
5258
* See {@link org.junit.jupiter.api.condition.DisabledOnOs#disabledReason()}.

spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/junit/DisabledOnOsCondition.java

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,42 +16,49 @@
1616

1717
package org.springframework.boot.testsupport.junit;
1818

19-
import java.util.Optional;
19+
import java.util.Arrays;
2020

2121
import org.junit.jupiter.api.condition.OS;
2222
import org.junit.jupiter.api.extension.ConditionEvaluationResult;
2323
import org.junit.jupiter.api.extension.ExecutionCondition;
2424
import org.junit.jupiter.api.extension.ExtensionContext;
25-
import org.junit.platform.commons.util.AnnotationUtils;
25+
26+
import org.springframework.core.annotation.MergedAnnotation;
27+
import org.springframework.core.annotation.MergedAnnotations;
28+
import org.springframework.core.annotation.MergedAnnotations.SearchStrategy;
2629

2730
/**
2831
* Evaluates {@link DisabledOnOs}.
2932
*
3033
* @author Moritz Halbritter
34+
* @author Phillip Webb
3135
*/
3236
class DisabledOnOsCondition implements ExecutionCondition {
3337

3438
@Override
3539
public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) {
36-
Optional<DisabledOnOs> annotation = AnnotationUtils.findAnnotation(context.getElement(), DisabledOnOs.class);
40+
if (!context.getElement().isPresent()) {
41+
return ConditionEvaluationResult.enabled("No element for @DisabledOnOs found");
42+
}
43+
MergedAnnotation<DisabledOnOs> annotation = MergedAnnotations
44+
.from(context.getElement().get(), SearchStrategy.TYPE_HIERARCHY)
45+
.get(DisabledOnOs.class);
3746
if (!annotation.isPresent()) {
3847
return ConditionEvaluationResult.enabled("No @DisabledOnOs found");
3948
}
40-
return evaluate(annotation.get());
49+
return evaluate(annotation.synthesize());
4150
}
4251

4352
private ConditionEvaluationResult evaluate(DisabledOnOs annotation) {
4453
String architecture = System.getProperty("os.arch");
4554
String os = System.getProperty("os.name");
46-
if (annotation.architecture().equals(architecture)) {
47-
for (OS targetOs : annotation.os()) {
48-
if (targetOs.isCurrentOs()) {
49-
String reason = annotation.disabledReason().isEmpty()
50-
? String.format("Disabled on OS = %s, architecture = %s", os, architecture)
51-
: annotation.disabledReason();
52-
return ConditionEvaluationResult.disabled(reason);
53-
}
54-
}
55+
boolean onDisabledOs = Arrays.stream(annotation.os()).anyMatch(OS::isCurrentOs);
56+
boolean onDisabledArchitecture = Arrays.stream(annotation.architecture()).anyMatch(architecture::equals);
57+
if (onDisabledOs && onDisabledArchitecture) {
58+
String reason = annotation.disabledReason().isEmpty()
59+
? String.format("Disabled on OS = %s, architecture = %s", os, architecture)
60+
: annotation.disabledReason();
61+
return ConditionEvaluationResult.disabled(reason);
5562
}
5663
return ConditionEvaluationResult
5764
.enabled(String.format("Enabled on OS = %s, architecture = %s", os, architecture));

0 commit comments

Comments
 (0)