From f9a1e840e080d2bbc3a64756df2da2ac852fc078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fournier?= Date: Sat, 16 Apr 2022 17:49:53 +0200 Subject: [PATCH] Fix test strings not being MessageFormat --- .../net/sourceforge/pmd/RulePriority.java | 1 + .../pmd/util/log/MessageReporter.java | 3 +++ .../pmd/RulesetFactoryTestBase.java | 22 ++++++++++++++++++- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RulePriority.java b/pmd-core/src/main/java/net/sourceforge/pmd/RulePriority.java index 8e66affa84..4211ef881e 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RulePriority.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/RulePriority.java @@ -109,6 +109,7 @@ public enum RulePriority { return null; } } + /** * Returns the priority which corresponds to the given number as returned by * {@link RulePriority#getPriority()}. If the number is an invalid value, diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/util/log/MessageReporter.java b/pmd-core/src/main/java/net/sourceforge/pmd/util/log/MessageReporter.java index c907a24739..97756c86b2 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/util/log/MessageReporter.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/util/log/MessageReporter.java @@ -25,6 +25,9 @@ import net.sourceforge.pmd.annotation.InternalApi; @InternalApi public interface MessageReporter { + // todo change String to MessageFormat in those arg lists, it's too confusing + // where to apply MessageFormat otherwise... + boolean isLoggable(Level level); default void log(Level level, String message, Object... formatArgs) { diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/RulesetFactoryTestBase.java b/pmd-core/src/test/java/net/sourceforge/pmd/RulesetFactoryTestBase.java index 152bd2a5ae..ef509dae9b 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/RulesetFactoryTestBase.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/RulesetFactoryTestBase.java @@ -13,6 +13,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; +import java.text.MessageFormat; import java.util.Map; import java.util.function.Consumer; import java.util.function.Predicate; @@ -56,7 +57,8 @@ public class RulesetFactoryTestBase { return new Predicate() { @Override public boolean test(String it) { - return it.contains(part); + String format = MessageFormat.format(it, new Object[0]); + return format.contains(part); } @Override @@ -66,10 +68,16 @@ public class RulesetFactoryTestBase { }; } + /** + * @param messageTest This is a MessageFormat string! + */ protected void verifyFoundAWarningWithMessage(Predicate messageTest) { verifyFoundWarningWithMessage(times(1), messageTest); } + /** + * @param messageTest This is a MessageFormat string! + */ protected void verifyFoundWarningWithMessage(VerificationMode mode, Predicate messageTest) { verify(mockReporter, mode) .logEx(eq(Level.WARN), argThat(messageTest::test), any(), any()); @@ -87,6 +95,11 @@ public class RulesetFactoryTestBase { return loader.loadFromResource(resourceDir + "/" + ruleSetFilename); } + /* + DSL to build a ruleset XML file with method calls. + */ + + protected static @NonNull String rulesetXml(String... contents) { return "\n" + "\n" + " { }, body); + } + + /** + * Default attributes used by {@link #dummyRule(Consumer, String...)}. + */ protected static Map dummyRuleDefAttrs() { return buildMap( map -> {