diff --git a/src/it/java/org/checkstyle/suppressionxpathfilter/XpathRegressionEmptyBlockTest.java b/src/it/java/org/checkstyle/suppressionxpathfilter/XpathRegressionEmptyBlockTest.java new file mode 100644 index 00000000000..f9fc6eadf73 --- /dev/null +++ b/src/it/java/org/checkstyle/suppressionxpathfilter/XpathRegressionEmptyBlockTest.java @@ -0,0 +1,80 @@ +//////////////////////////////////////////////////////////////////////////////// +// checkstyle: Checks Java source code for adherence to a set of rules. +// Copyright (C) 2001-2021 the original author or authors. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +//////////////////////////////////////////////////////////////////////////////// + +package org.checkstyle.suppressionxpathfilter; + +import java.io.File; +import java.util.Collections; +import java.util.List; + +import org.junit.jupiter.api.Test; + +import com.puppycrawl.tools.checkstyle.DefaultConfiguration; +import com.puppycrawl.tools.checkstyle.checks.blocks.EmptyBlockCheck; + +public class XpathRegressionEmptyBlockTest extends AbstractXpathTestSupport { + private final String checkName = EmptyBlockCheck.class.getSimpleName(); + + @Override + protected String getCheckName() { + return checkName; + } + + @Test + public void testEmptyForLoopEmptyBlock() throws Exception { + final File fileToProcess = + new File(getPath("SuppressionXpathRegressionEmptyBlockEmpty.java")); + final DefaultConfiguration moduleConfig = + createModuleConfig(EmptyBlockCheck.class); + moduleConfig.addAttribute("option", "TEXT"); + final String[] expectedViolation = { + "5:38: " + getCheckMessage(EmptyBlockCheck.class, + EmptyBlockCheck.MSG_KEY_BLOCK_EMPTY, "for"), + }; + final List expectedXpathQueries = Collections.singletonList( + "/COMPILATION_UNIT" + + "/CLASS_DEF[./IDENT[@text='SuppressionXpathRegressionEmptyBlockEmpty']]" + + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='emptyLoop']]" + + "/SLIST/LITERAL_FOR/SLIST" + ); + runVerifications(moduleConfig, fileToProcess, expectedViolation, + expectedXpathQueries); + } + + @Test + public void testEmptyForLoopEmptyStatement() throws Exception { + final File fileToProcess = + new File(getPath("SuppressionXpathRegressionEmptyBlockEmpty.java")); + final DefaultConfiguration moduleConfig = + createModuleConfig(EmptyBlockCheck.class); + final String[] expectedViolation = { + "5:38: " + getCheckMessage(EmptyBlockCheck.class, + EmptyBlockCheck.MSG_KEY_BLOCK_NO_STATEMENT), + }; + final List expectedXpathQueries = Collections.singletonList( + "/COMPILATION_UNIT" + + "/CLASS_DEF[./IDENT[@text='SuppressionXpathRegressionEmptyBlockEmpty']]" + + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='emptyLoop']]" + + "/SLIST/LITERAL_FOR/SLIST" + ); + runVerifications(moduleConfig, fileToProcess, expectedViolation, + expectedXpathQueries); + } + +} diff --git a/src/it/resources/org/checkstyle/suppressionxpathfilter/emptyblock/SuppressionXpathRegressionEmptyBlockEmpty.java b/src/it/resources/org/checkstyle/suppressionxpathfilter/emptyblock/SuppressionXpathRegressionEmptyBlockEmpty.java new file mode 100644 index 00000000000..7a078b8dcee --- /dev/null +++ b/src/it/resources/org/checkstyle/suppressionxpathfilter/emptyblock/SuppressionXpathRegressionEmptyBlockEmpty.java @@ -0,0 +1,8 @@ +package org.checkstyle.suppressionxpathfilter.emptyblock; + +public class SuppressionXpathRegressionEmptyBlockEmpty { + private void emptyLoop() { + for (int i = 0; i < 10; i++) {} // warn + + } +} diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/internal/XpathRegressionTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/internal/XpathRegressionTest.java index f75adc567bf..2866bd8a7d4 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/internal/XpathRegressionTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/internal/XpathRegressionTest.java @@ -105,7 +105,6 @@ public class XpathRegressionTest extends AbstractModuleTestSupport { "ConstantName", "DescendantToken", "DesignForExtension", - "EmptyBlock", "EqualsAvoidNull", "EqualsHashCode", "ExecutableStatementCount",