You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2022/10/24 00:18:52 UTC
[brooklyn-server] 01/04: make regex condition use DOTALL mode
This is an automated email from the ASF dual-hosted git repository.
heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git
commit abcd84791c1824f36464423d60ab8f5745c88a60
Author: Alex Heneveld <al...@cloudsoft.io>
AuthorDate: Sun Oct 23 20:06:43 2022 +0100
make regex condition use DOTALL mode
---
.../apache/brooklyn/util/core/predicates/DslPredicates.java | 3 ++-
.../core/workflow/WorkflowPersistReplayErrorsTest.java | 12 ++++++++++++
.../brooklyn/util/core/predicates/DslPredicateTest.java | 13 +++++++++++--
3 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/predicates/DslPredicates.java b/core/src/main/java/org/apache/brooklyn/util/core/predicates/DslPredicates.java
index 32a2003c4e..f8558254ca 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/predicates/DslPredicates.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/predicates/DslPredicates.java
@@ -73,6 +73,7 @@ import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.BiFunction;
import java.util.function.Function;
+import java.util.regex.Pattern;
public class DslPredicates {
@@ -416,7 +417,7 @@ public class DslPredicates {
return DslPredicates.coercedEqual(test, value);
});
checker.check(equals, result, DslPredicates::coercedEqual);
- checker.check(regex, result, (test, value) -> asStringTestOrFalse(value, v -> v.matches(test)));
+ checker.check(regex, result, (test, value) -> asStringTestOrFalse(value, v -> Pattern.compile(test, Pattern.DOTALL).matcher(v).matches()));
checker.check(glob, result, (test, value) -> asStringTestOrFalse(value, v -> WildcardGlobs.isGlobMatched(test, v)));
checker.check(inRange, result, (test,value) ->
diff --git a/core/src/test/java/org/apache/brooklyn/core/workflow/WorkflowPersistReplayErrorsTest.java b/core/src/test/java/org/apache/brooklyn/core/workflow/WorkflowPersistReplayErrorsTest.java
index 24e08ccf5b..c0a93ee04b 100644
--- a/core/src/test/java/org/apache/brooklyn/core/workflow/WorkflowPersistReplayErrorsTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/workflow/WorkflowPersistReplayErrorsTest.java
@@ -602,6 +602,18 @@ public class WorkflowPersistReplayErrorsTest extends RebindTestFixture<BasicAppl
Asserts.assertEquals(lastWorkflowContext.currentStepIndex, (Integer) 0);
}
+ @Test
+ public void testMultilineErrorRegex() throws IOException {
+ lastInvocation = runSteps(MutableList.of(
+ MutableMap.of("step", "log ${var_does_not_exist}",
+ "output", "should have failed",
+ "on-error", MutableList.of(
+ MutableMap.of("step", "return error handled",
+ "condition", MutableMap.of("regex", ".*InvalidReference.*var_does_not_exist.*"))))),
+ null);
+ Asserts.assertEquals(lastInvocation.getUnchecked(), "error handled");
+ }
+
@Test
public void testTimeoutOnStep() throws Exception {
doTestTimeout(false, true);
diff --git a/core/src/test/java/org/apache/brooklyn/util/core/predicates/DslPredicateTest.java b/core/src/test/java/org/apache/brooklyn/util/core/predicates/DslPredicateTest.java
index a413c72591..ca605756fe 100644
--- a/core/src/test/java/org/apache/brooklyn/util/core/predicates/DslPredicateTest.java
+++ b/core/src/test/java/org/apache/brooklyn/util/core/predicates/DslPredicateTest.java
@@ -75,6 +75,11 @@ public class DslPredicateTest extends BrooklynMgmtUnitTestSupport {
});
}
+ DslPredicates.DslPredicate predicate(String key, Object value) {
+ return TypeCoercions.coerce(MutableMap.of(
+ key, value), DslPredicates.DslPredicate.class);
+ }
+
@Test
public void testGlob() {
DslPredicates.DslPredicate p = TypeCoercions.coerce(MutableMap.of(
@@ -86,11 +91,15 @@ public class DslPredicateTest extends BrooklynMgmtUnitTestSupport {
@Test
public void testRegex() {
- DslPredicates.DslPredicate p = TypeCoercions.coerce(MutableMap.of(
- "regex", "x.*z"), DslPredicates.DslPredicate.class);
+ DslPredicates.DslPredicate p = predicate("regex", "x.*z");
Asserts.assertTrue(p.test("xz"));
Asserts.assertTrue(p.test("xaz"));
Asserts.assertFalse(p.test("yxaz"));
+
+ Asserts.assertFalse(predicate("regex", "y").test("xyz"));
+ Asserts.assertFalse(predicate("regex", "y").test("y\nx"));
+ Asserts.assertTrue(predicate("regex", "y\\s+x").test("y\nx"));
+ Asserts.assertTrue(predicate("regex", ".*y.*").test("y\nx"));
}
@Test