diff --git a/config/pitest-suppressions/pitest-filters-suppressions.xml b/config/pitest-suppressions/pitest-filters-suppressions.xml
index 93116cfbabc..44c8c4f69c4 100644
--- a/config/pitest-suppressions/pitest-filters-suppressions.xml
+++ b/config/pitest-suppressions/pitest-filters-suppressions.xml
@@ -162,15 +162,6 @@
tagMessageRegexp = null;
-
- SuppressionXpathSingleFilter.java
- com.puppycrawl.tools.checkstyle.filters.SuppressionXpathSingleFilter
- setMessage
- org.pitest.mutationtest.engine.gregor.mutators.experimental.MemberVariableMutator
- Removed assignment to member variable message
- this.message = null;
-
-
XpathFilterElement.java
com.puppycrawl.tools.checkstyle.filters.XpathFilterElement
diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/filters/SuppressionXpathSingleFilterTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/filters/SuppressionXpathSingleFilterTest.java
index 3906f9b9fcd..18e90f7def0 100644
--- a/src/test/java/com/puppycrawl/tools/checkstyle/filters/SuppressionXpathSingleFilterTest.java
+++ b/src/test/java/com/puppycrawl/tools/checkstyle/filters/SuppressionXpathSingleFilterTest.java
@@ -492,6 +492,47 @@ public void testUpdateFilterChecksSettingInRunTime() throws Exception {
.isTrue();
}
+ /**
+ * This test is required to cover pitest mutation
+ * for reset of 'message' field in SuppressionXpathSingleFilter.
+ * This not possible to reproduce by natural execution of Checkstyle
+ * as config is never changed in runtime.
+ * Projects that use us by api can reproduce this case.
+ * We need to allow users to reset module property to default state.
+ *
+ * @throws Exception when there is problem to load Input file
+ */
+
+ @Test
+ public void testSetMessageHandlesNullCorrectly() throws Exception {
+ final File file = new File(getPath("InputSuppressionXpathSingleFilterComplexQuery.java"));
+
+ final SuppressionXpathSingleFilter filter = new SuppressionXpathSingleFilter();
+ filter.setMessage("MagicNumber");
+ filter.finishLocalSetup();
+
+ final Violation violation = new Violation(27, 21, TokenTypes.NUM_DOUBLE, "",
+ "", null, null, null,
+ MagicNumberCheck.class, "MagicNumber");
+
+ final FileContents fileContents =
+ new FileContents(new FileText(file, StandardCharsets.UTF_8.name()));
+
+ final TreeWalkerAuditEvent ev = new TreeWalkerAuditEvent(fileContents, file.getName(),
+ violation, JavaParser.parseFile(file, JavaParser.Options.WITHOUT_COMMENTS));
+
+ assertWithMessage("match is expected as 'message' is set")
+ .that(filter.accept(ev))
+ .isFalse();
+
+ filter.setMessage(null);
+ filter.finishLocalSetup();
+
+ assertWithMessage("no match is expected as whole filter is defaulted (empty)")
+ .that(filter.accept(ev))
+ .isTrue();
+ }
+
private static SuppressionXpathSingleFilter createSuppressionXpathSingleFilter(
String files, String checks, String message, String moduleId, String query) {
final SuppressionXpathSingleFilter filter = new SuppressionXpathSingleFilter();