diff options
author | BBG <djydewang@gmail.com> | 2017-12-18 22:14:43 +0800 |
---|---|---|
committer | rnveach <rveach02@gmail.com> | 2017-12-22 21:20:33 -0500 |
commit | 776171b71897fde845e1f1c08f7bd2250e1b203d (patch) | |
tree | a5be223a11597b64c3251ef3520819875132f2a7 | |
parent | bd9612530bc6ff5fe4e18ee7d6b42e93f1d9f9c9 (diff) | |
download | checkstyle-776171b71897fde845e1f1c08f7bd2250e1b203d.tar.gz |
Issue #5004: pitest: increase mutation coverage for pitest-checks-imports profile to 100%
5 files changed, 84 insertions, 9 deletions
diff --git a/shippable.yml b/shippable.yml index dd82f65d2..47cb3b31d 100644 --- a/shippable.yml +++ b/shippable.yml @@ -9,7 +9,7 @@ env: - PROFILE="-Ppitest-checkstyle-xpath,no-validations"; POST_ACTION=check_survived_uncovered - PROFILE="-Ppitest-checkstyle-filters,no-validations"; POST_ACTION=check_survived_uncovered - PROFILE="-Ppitest-checks-javadoc,no-validations" - - PROFILE="-Ppitest-checks-imports,no-validations"; POST_ACTION=check_survived_imports + - PROFILE="-Ppitest-checks-imports,no-validations"; POST_ACTION=check_survived_uncovered - PROFILE="-Ppitest-checks-metrics,no-validations"; POST_ACTION=check_survived_uncovered - PROFILE="-Ppitest-checks-regexp,no-validations"; POST_ACTION=check_survived_uncovered - PROFILE="-Ppitest-checks-sizes,no-validations"; POST_ACTION=check_survived_uncovered @@ -64,11 +64,6 @@ build: echo "Survived items found in reports, build will be failed" exit 1 fi - if [[ $POST_ACTION == 'check_survived_imports' && $(grep -RE "class='survived'" --exclude="CustomImportOrderCheck.*" target/ | cat | wc -l) > 0 ]]; then - echo "Survived items:"$(grep -RE "class='survived'" --exclude="CustomImportOrderCheck.*" target/ | cat) - echo "Survived items found in reports, build will be failed" - exit 1 - fi if [[ $POST_ACTION == 'check_survived_misc' && $(grep -RE "class='survived'" --exclude="TranslationCheck.*" target/ | cat | wc -l) > 0 ]]; then echo "Survived items:"$(grep -RE "class='survived'" --exclude="TranslationCheck.*" target/ | cat) echo "Survived items found in reports, build will be failed" diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheck.java index cc32ef218..c4d2d6d57 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheck.java @@ -436,7 +436,6 @@ public class CustomImportOrderCheck extends AbstractCheck { * user value. */ public final void setCustomImportOrderRules(final String inputCustomImportOrder) { - customImportOrderRules.clear(); for (String currentState : GROUP_SEPARATOR_PATTERN.split(inputCustomImportOrder)) { addRulesToList(currentState); } @@ -636,7 +635,7 @@ public class CustomImportOrderCheck extends AbstractCheck { } if (SPECIAL_IMPORTS_RULE_GROUP.equals(group)) { bestMatch = findBetterPatternMatch(importPath, - SPECIAL_IMPORTS_RULE_GROUP, specialImportsRegExp, bestMatch); + group, specialImportsRegExp, bestMatch); } } } @@ -691,7 +690,7 @@ public class CustomImportOrderCheck extends AbstractCheck { final String separator = "\\."; final String[] import1Tokens = import1.split(separator); final String[] import2Tokens = import2.split(separator); - for (int i = 0; i < import1Tokens.length && i != import2Tokens.length; i++) { + for (int i = 0; i != import1Tokens.length && i != import2Tokens.length; i++) { final String import1Token = import1Tokens[i]; final String import2Token = import2Tokens[i]; result = import1Token.compareTo(import2Token); @@ -699,6 +698,9 @@ public class CustomImportOrderCheck extends AbstractCheck { break; } } + if (result == 0) { + result = Integer.compare(import1Tokens.length, import2Tokens.length); + } return result; } diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheckTest.java index 29759138f..1aa1e08d6 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheckTest.java @@ -29,11 +29,13 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import java.io.File; import java.lang.reflect.Method; import org.junit.Test; import com.puppycrawl.tools.checkstyle.AbstractModuleTestSupport; +import com.puppycrawl.tools.checkstyle.Checker; import com.puppycrawl.tools.checkstyle.DefaultConfiguration; import com.puppycrawl.tools.checkstyle.api.CheckstyleException; import com.puppycrawl.tools.checkstyle.api.DetailAST; @@ -336,6 +338,59 @@ public class CustomImportOrderCheckTest extends AbstractModuleTestSupport { } @Test + public void testCompareImports() throws Exception { + final DefaultConfiguration checkConfig = + createModuleConfig(CustomImportOrderCheck.class); + checkConfig.addAttribute("specialImportsRegExp", "com"); + checkConfig.addAttribute("sortImportsInGroupAlphabetically", "true"); + checkConfig.addAttribute("customImportOrderRules", + "STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS"); + final String[] expected = { + "4: " + getCheckMessage(MSG_LEX, "java.util.Map", + "java.util.Map.Entry"), + }; + + verify(checkConfig, getPath("InputCustomImportOrderCompareImports.java"), expected); + } + + @Test + public void testFindBetterPatternMatch() throws Exception { + final DefaultConfiguration checkConfig = + createModuleConfig(CustomImportOrderCheck.class); + checkConfig.addAttribute("standardPackageRegExp", "java|javax|event.*"); + checkConfig.addAttribute("specialImportsRegExp", "An|lang|java|collect|event"); + checkConfig.addAttribute("thirdPartyPackageRegExp", "com"); + checkConfig.addAttribute("separateLineBetweenGroups", "true"); + checkConfig.addAttribute("customImportOrderRules", + "STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE"); + final String[] expected = { + "8: " + getCheckMessage(MSG_ORDER, THIRD, SPECIAL, + "com.google.common.annotations.Beta"), + }; + + verify(checkConfig, getPath("InputCustomImportOrderFindBetterPatternMatch.java"), expected); + } + + @Test + public void testBeginTreeClear() throws Exception { + final DefaultConfiguration checkConfig = + createModuleConfig(CustomImportOrderCheck.class); + checkConfig.addAttribute("specialImportsRegExp", "com"); + checkConfig.addAttribute("separateLineBetweenGroups", "false"); + checkConfig.addAttribute("customImportOrderRules", + "STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS"); + final String[] expected = CommonUtils.EMPTY_STRING_ARRAY; + final Checker checker = createChecker(checkConfig); + final String fileName1 = getPath("InputCustomImportOrderImportsContainingJava.java"); + final String fileName2 = getPath("InputCustomImportOrderNoValid.java"); + final File[] files = { + new File(fileName1), + new File(fileName2), + }; + verify(checker, files, fileName1, expected); + } + + @Test public void testImportsContainingJava() throws Exception { final DefaultConfiguration checkConfig = createModuleConfig(CustomImportOrderCheck.class); checkConfig.addAttribute("customImportOrderRules", diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/imports/customimportorder/InputCustomImportOrderCompareImports.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/imports/customimportorder/InputCustomImportOrderCompareImports.java new file mode 100644 index 000000000..a32b01951 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/imports/customimportorder/InputCustomImportOrderCompareImports.java @@ -0,0 +1,10 @@ +package com.puppycrawl.tools.checkstyle.checks.imports.customimportorder; + +import java.util.Map.Entry; +import java.util.Map; + +import com.google.common.*; +import com.google.common.annotations.*; + +public class InputCustomImportOrderCompareImports { +} diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/imports/customimportorder/InputCustomImportOrderFindBetterPatternMatch.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/imports/customimportorder/InputCustomImportOrderFindBetterPatternMatch.java new file mode 100644 index 000000000..0e316b9bc --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/imports/customimportorder/InputCustomImportOrderFindBetterPatternMatch.java @@ -0,0 +1,13 @@ +package com.puppycrawl.tools.checkstyle.checks.imports.customimportorder; + +import javax.lang.model.element.AnnotationValue; +import java.awt.event.ActionEvent; +import java.lang.*; +import java.awt.color.ColorSpace; + +import com.google.common.annotations.Beta; + +import com.google.common.collect.HashMultimap; + +public class InputCustomImportOrderFindBetterPatternMatch { +} |