diff options
Diffstat (limited to 'sonar-css-plugin/src')
| -rw-r--r-- | sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/SelectorPseudoElementNoUnknown.java | 28 | ||||
| -rw-r--r-- | sonar-css-plugin/src/test/java/org/sonar/css/plugin/rules/CssRuleTest.java | 15 | 
2 files changed, 43 insertions, 0 deletions
| diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/SelectorPseudoElementNoUnknown.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/SelectorPseudoElementNoUnknown.java index c26dfc2..8682859 100644 --- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/SelectorPseudoElementNoUnknown.java +++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/SelectorPseudoElementNoUnknown.java @@ -19,13 +19,41 @@   */  package org.sonar.css.plugin.rules; +import java.util.Arrays; +import java.util.List;  import org.sonar.check.Rule; +import org.sonar.check.RuleProperty; + +import static org.sonar.css.plugin.rules.RuleUtils.splitAndTrim;  @Rule(key = "S4660")  public class SelectorPseudoElementNoUnknown implements CssRule { +  private static final String DEFAULT_IGNORE_PSEUDO_ELEMENTS = "ng-deep"; +    @Override    public String stylelintKey() {      return "selector-pseudo-element-no-unknown";    } + +  @RuleProperty( +    key = "ignorePseudoElements", +    description = "Comma-separated list of regular expressions or strings to ignore (e.g. /^custom-/).", +    defaultValue = "" + DEFAULT_IGNORE_PSEUDO_ELEMENTS) +  String ignorePseudoElements = DEFAULT_IGNORE_PSEUDO_ELEMENTS; + +  @Override +  public List<Object> stylelintOptions() { +    return Arrays.asList(true, new StylelintIgnorePseudoElementsOption(splitAndTrim(ignorePseudoElements))); +  } + +  private static class StylelintIgnorePseudoElementsOption { +    // Used by GSON serialization +    private final List<String> ignorePseudoElements; + +    StylelintIgnorePseudoElementsOption(List<String> ignorePseudoElements) { +      this.ignorePseudoElements = ignorePseudoElements; +    } +  } +  } diff --git a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/rules/CssRuleTest.java b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/rules/CssRuleTest.java index e7945b7..bd18c4b 100644 --- a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/rules/CssRuleTest.java +++ b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/rules/CssRuleTest.java @@ -46,6 +46,7 @@ public class CssRuleTest {        DeclarationBlockNoDuplicateProperties.class,        PropertyNoUnknown.class,        SelectorPseudoClassNoUnknown.class, +      SelectorPseudoElementNoUnknown.class,        SelectorTypeNoUnknown.class,        UnitNoUnknown.class); @@ -86,6 +87,20 @@ public class CssRuleTest {    }    @Test +  public void selector_pseudo_element_no_unknown_default() { +    String optionsAsJson = new Gson().toJson(new SelectorPseudoElementNoUnknown().stylelintOptions()); +    assertThat(optionsAsJson).isEqualTo("[true,{\"ignorePseudoElements\":[\"ng-deep\"]}]"); +  } + +  @Test +  public void selector_pseudo_element_no_unknown_custom() { +    SelectorPseudoElementNoUnknown selectorPseudoElementNoUnknown = new SelectorPseudoElementNoUnknown(); +    selectorPseudoElementNoUnknown.ignorePseudoElements =  "ng-deep, /^custom-/"; +    String optionsAsJson = new Gson().toJson(selectorPseudoElementNoUnknown.stylelintOptions()); +    assertThat(optionsAsJson).isEqualTo("[true,{\"ignorePseudoElements\":[\"ng-deep\",\"/^custom-/\"]}]"); +  } + +  @Test    public void units_no_unknown_options() {      String optionsAsJson = new Gson().toJson(new UnitNoUnknown().stylelintOptions());      assertThat(optionsAsJson).isEqualTo("[true,{\"ignoreUnits\":[\"x\"]}]"); | 
