aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBBG <djydewang@gmail.com>2017-12-18 22:14:43 +0800
committerrnveach <rveach02@gmail.com>2017-12-22 21:20:33 -0500
commit776171b71897fde845e1f1c08f7bd2250e1b203d (patch)
treea5be223a11597b64c3251ef3520819875132f2a7
parentbd9612530bc6ff5fe4e18ee7d6b42e93f1d9f9c9 (diff)
downloadcheckstyle-776171b71897fde845e1f1c08f7bd2250e1b203d.tar.gz
Issue #5004: pitest: increase mutation coverage for pitest-checks-imports profile to 100%
-rw-r--r--shippable.yml7
-rw-r--r--src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheck.java8
-rw-r--r--src/test/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheckTest.java55
-rw-r--r--src/test/resources/com/puppycrawl/tools/checkstyle/checks/imports/customimportorder/InputCustomImportOrderCompareImports.java10
-rw-r--r--src/test/resources/com/puppycrawl/tools/checkstyle/checks/imports/customimportorder/InputCustomImportOrderFindBetterPatternMatch.java13
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 {
+}