2424
2525/**
2626 * This is an {@link org.junit.jupiter.api.extension.ExecutionCondition} that supports the
27- * {@link RequiresVaultVersion @RequiresVaultVersion} annotation.
27+ * {@link RequiresVaultVersion @RequiresVaultVersion} and
28+ * {@link DisabledOnVaultVersion @DisabledOnVaultVersion} annotations.
2829 *
2930 * @author Mark Paluch
3031 * @see RequiresVaultVersion
@@ -35,15 +36,18 @@ class VaultVersionExtension implements ExecutionCondition {
3536 private static final ExtensionContext .Namespace VAULT = ExtensionContext .Namespace .create ("vault.version" );
3637
3738 private static final ConditionEvaluationResult ENABLED_BY_DEFAULT = ConditionEvaluationResult
38- .enabled ("@VaultVersion is not present" );
39+ .enabled ("@VaultVersion is not present" );
3940
4041 @ Override
4142 public ConditionEvaluationResult evaluateExecutionCondition (ExtensionContext context ) {
4243
43- Optional <RequiresVaultVersion > optional = AnnotationUtils .findAnnotation (context .getElement (),
44+ Optional <RequiresVaultVersion > required = AnnotationUtils .findAnnotation (context .getElement (),
4445 RequiresVaultVersion .class );
4546
46- if (!optional .isPresent ()) {
47+ Optional <DisabledOnVaultVersion > disabled = AnnotationUtils .findAnnotation (context .getElement (),
48+ DisabledOnVaultVersion .class );
49+
50+ if (required .isEmpty () && disabled .isEmpty ()) {
4751 return ENABLED_BY_DEFAULT ;
4852 }
4953
@@ -56,17 +60,37 @@ public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext con
5660 return initializer .prepare ().getVersion ();
5761 }, Version .class );
5862
59- RequiresVaultVersion requiredVersion = optional .get ();
63+ if (required .isPresent ()) {
64+
65+ Version requiredVersion = Version .parse (required .get ().value ());
6066
61- Version required = Version .parse (requiredVersion .value ());
67+ if (runningVersion .isGreaterThanOrEqualTo (requiredVersion )) {
68+ return ConditionEvaluationResult
69+ .enabled (String .format ("Test is enabled, @VaultVersion(%s) is met with Vault running version %s" ,
70+ requiredVersion , runningVersion ));
71+ }
6272
63- if (runningVersion .isGreaterThanOrEqualTo (required )) {
6473 return ConditionEvaluationResult
65- .enabled (String .format ("@VaultVersion check passed current Vault version is %s" , runningVersion ));
74+ .disabled (String .format ("Test is disabled, @VaultVersion(%s) is not met with Vault running version %s" ,
75+ requiredVersion , runningVersion ));
76+ }
77+
78+ if (disabled .isPresent ()) {
79+
80+ Version disabledVersion = Version .parse (disabled .get ().value ());
81+
82+ if (runningVersion .isGreaterThanOrEqualTo (disabledVersion )) {
83+ return ConditionEvaluationResult .disabled (String .format (
84+ "Test is disabled, @DisabledOnVaultVersion(%s) is met with Vault running version %s" ,
85+ disabledVersion , runningVersion ));
86+ }
87+
88+ return ConditionEvaluationResult .enabled (String .format (String .format (
89+ "Test is enabled, @DisabledOnVaultVersion(%s) is not met with Vault running version %s" ,
90+ disabledVersion , runningVersion )));
6691 }
6792
68- return ConditionEvaluationResult .disabled (String
69- .format ("@VaultVersion requires since version %s, current Vault version is %s" , required , runningVersion ));
93+ return ENABLED_BY_DEFAULT ;
7094 }
7195
7296}
0 commit comments