From ac2e97826362ddeadea749e5e69a958b040da5e7 Mon Sep 17 00:00:00 2001 From: Kevin Dew Date: Sat, 8 Aug 2020 23:16:26 +0100 Subject: [PATCH] Deprecate *-blacklist/*-requirelist/*-whitelist rules This applies deprecation warnings when these rules are used, tests to check there is a deprecation warning and re-includes them in documentation. --- docs/user-guide/rules/list.md | 26 +++++++++++++++++++ lib/rules/at-rule-blacklist/README.md | 2 ++ .../at-rule-blacklist/__tests__/index.js | 23 ++++++++++++++++ lib/rules/at-rule-blacklist/index.js | 5 ++++ .../at-rule-property-requirelist/README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../at-rule-property-requirelist/index.js | 8 ++++++ lib/rules/at-rule-whitelist/README.md | 2 ++ .../at-rule-whitelist/__tests__/index.js | 23 ++++++++++++++++ lib/rules/at-rule-whitelist/index.js | 5 ++++ lib/rules/comment-word-blacklist/README.md | 2 ++ .../comment-word-blacklist/__tests__/index.js | 23 ++++++++++++++++ lib/rules/comment-word-blacklist/index.js | 5 ++++ .../README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../index.js | 8 ++++++ .../README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../index.js | 8 ++++++ .../README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../index.js | 8 ++++++ .../README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../index.js | 8 ++++++ lib/rules/function-blacklist/README.md | 2 ++ .../function-blacklist/__tests__/index.js | 23 ++++++++++++++++ lib/rules/function-blacklist/index.js | 5 ++++ .../function-url-scheme-blacklist/README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../function-url-scheme-blacklist/index.js | 8 ++++++ .../function-url-scheme-whitelist/README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../function-url-scheme-whitelist/index.js | 8 ++++++ lib/rules/function-whitelist/README.md | 2 ++ .../function-whitelist/__tests__/index.js | 23 ++++++++++++++++ lib/rules/function-whitelist/index.js | 5 ++++ .../media-feature-name-blacklist/README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../media-feature-name-blacklist/index.js | 8 ++++++ .../README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../index.js | 8 ++++++ .../media-feature-name-whitelist/README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../media-feature-name-whitelist/index.js | 8 ++++++ lib/rules/property-blacklist/README.md | 2 ++ .../property-blacklist/__tests__/index.js | 23 ++++++++++++++++ lib/rules/property-blacklist/index.js | 5 ++++ lib/rules/property-whitelist/README.md | 2 ++ .../property-whitelist/__tests__/index.js | 23 ++++++++++++++++ lib/rules/property-whitelist/index.js | 5 ++++ .../README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../index.js | 8 ++++++ .../README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../index.js | 8 ++++++ .../selector-combinator-blacklist/README.md | 2 ++ .../__tests__/index.js | 22 ++++++++++++++++ .../selector-combinator-blacklist/index.js | 8 ++++++ .../selector-combinator-whitelist/README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../selector-combinator-whitelist/index.js | 8 ++++++ .../selector-pseudo-class-blacklist/README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../selector-pseudo-class-blacklist/index.js | 8 ++++++ .../selector-pseudo-class-whitelist/README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../selector-pseudo-class-whitelist/index.js | 8 ++++++ .../README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../index.js | 8 ++++++ .../README.md | 2 ++ .../__tests__/index.js | 23 ++++++++++++++++ .../index.js | 8 ++++++ lib/rules/unit-blacklist/README.md | 2 ++ lib/rules/unit-blacklist/__tests__/index.js | 23 ++++++++++++++++ lib/rules/unit-blacklist/index.js | 5 ++++ lib/rules/unit-whitelist/README.md | 2 ++ lib/rules/unit-whitelist/__tests__/index.js | 23 ++++++++++++++++ lib/rules/unit-whitelist/index.js | 5 ++++ 82 files changed, 889 insertions(+) diff --git a/docs/user-guide/rules/list.md b/docs/user-guide/rules/list.md index 2fb3483afa..b362c354e2 100644 --- a/docs/user-guide/rules/list.md +++ b/docs/user-guide/rules/list.md @@ -102,10 +102,14 @@ Grouped first by the following categories and then by the [_thing_](http://apps. ### Function - [`function-allowed-list`](../../../lib/rules/function-allowed-list/README.md): Specify a list of allowed functions. +- [`function-blacklist`](../../../lib/rules/function-blacklist/README.md): Specify a list of disallowed functions. **(deprecated)** - [`function-disallowed-list`](../../../lib/rules/function-disallowed-list/README.md): Specify a list of disallowed functions. - [`function-url-no-scheme-relative`](../../../lib/rules/function-url-no-scheme-relative/README.md): Disallow scheme-relative urls. - [`function-url-scheme-allowed-list`](../../../lib/rules/function-url-scheme-allowed-list/README.md): Specify a list of allowed URL schemes. +- [`function-url-scheme-blacklist`](../../../lib/rules/function-url-scheme-blacklist/README.md): Specify a list of disallowed URL schemes. **(deprecated)** - [`function-url-scheme-disallowed-list`](../../../lib/rules/function-url-scheme-disallowed-list/README.md): Specify a list of disallowed URL schemes. +- [`function-url-scheme-whitelist`](../../../lib/rules/function-url-scheme-whitelist/README.md): Specify a list of allowed URL schemes. **(deprecated)** +- [`function-whitelist`](../../../lib/rules/function-whitelist/README.md): Specify a list of allowed functions. **(deprecated)** ### Keyframes @@ -122,7 +126,9 @@ Grouped first by the following categories and then by the [_thing_](http://apps. ### Unit - [`unit-allowed-list`](../../../lib/rules/unit-allowed-list/README.md): Specify a list of allowed units. +- [`unit-blacklist`](../../../lib/rules/unit-blacklist/README.md): Specify a list of disallowed units. **(deprecated)** - [`unit-disallowed-list`](../../../lib/rules/unit-disallowed-list/README.md): Specify a list of disallowed units. +- [`unit-whitelist`](../../../lib/rules/unit-whitelist/README.md): Specify a list of allowed units. **(deprecated)** ### Shorthand property @@ -139,17 +145,23 @@ Grouped first by the following categories and then by the [_thing_](http://apps. ### Property - [`property-allowed-list`](../../../lib/rules/property-allowed-list/README.md): Specify a list of allowed properties. +- [`property-blacklist`](../../../lib/rules/property-blacklist/README.md): Specify a list of disallowed properties. **(deprecated)** - [`property-disallowed-list`](../../../lib/rules/property-disallowed-list/README.md): Specify a list of disallowed properties. - [`property-no-vendor-prefix`](../../../lib/rules/property-no-vendor-prefix/README.md): Disallow vendor prefixes for properties. +- [`property-whitelist`](../../../lib/rules/property-whitelist/README.md): Specify a list of allowed properties. **(deprecated)** ### Declaration - [`declaration-block-no-redundant-longhand-properties`](../../../lib/rules/declaration-block-no-redundant-longhand-properties/README.md): Disallow longhand properties that can be combined into one shorthand property. - [`declaration-no-important`](../../../lib/rules/declaration-no-important/README.md): Disallow `!important` within declarations. - [`declaration-property-unit-allowed-list`](../../../lib/rules/declaration-property-unit-allowed-list/README.md): Specify a list of allowed property and unit pairs within declarations. +- [`declaration-property-unit-blacklist`](../../../lib/rules/declaration-property-unit-blacklist/README.md): Specify a list of disallowed property and unit pairs within declarations. **(deprecated)** - [`declaration-property-unit-disallowed-list`](../../../lib/rules/declaration-property-unit-disallowed-list/README.md): Specify a list of disallowed property and unit pairs within declarations. +- [`declaration-property-unit-whitelist`](../../../lib/rules/declaration-property-unit-whitelist/README.md): Specify a list of allowed property and unit pairs within declarations. **(deprecated)** - [`declaration-property-value-allowed-list`](../../../lib/rules/declaration-property-value-allowed-list/README.md): Specify a list of allowed property and value pairs within declarations. +- [`declaration-property-value-blacklist`](../../../lib/rules/declaration-property-value-blacklist/README.md): Specify a list of disallowed property and value pairs within declarations. **(deprecated)** - [`declaration-property-value-disallowed-list`](../../../lib/rules/declaration-property-value-disallowed-list/README.md): Specify a list of disallowed property and value pairs within declarations. +- [`declaration-property-value-whitelist`](../../../lib/rules/declaration-property-value-whitelist/README.md): Specify a list of allowed property and value pairs within declarations. **(deprecated)** ### Declaration block @@ -158,10 +170,14 @@ Grouped first by the following categories and then by the [_thing_](http://apps. ### Selector - [`selector-attribute-operator-allowed-list`](../../../lib/rules/selector-attribute-operator-allowed-list/README.md): Specify a list of allowed attribute operators. +- [`selector-attribute-operator-blacklist`](../../../lib/rules/selector-attribute-operator-blacklist/README.md): Specify a list of disallowed attribute operators. **(deprecated)** - [`selector-attribute-operator-disallowed-list`](../../../lib/rules/selector-attribute-operator-disallowed-list/README.md): Specify a list of disallowed attribute operators. +- [`selector-attribute-operator-whitelist`](../../../lib/rules/selector-attribute-operator-whitelist/README.md): Specify a list of allowed attribute operators. **(deprecated)** - [`selector-class-pattern`](../../../lib/rules/selector-class-pattern/README.md): Specify a pattern for class selectors. - [`selector-combinator-allowed-list`](../../../lib/rules/selector-combinator-allowed-list/README.md): Specify a list of allowed combinators. +- [`selector-combinator-blacklist`](../../../lib/rules/selector-combinator-blacklist/README.md): Specify a list of disallowed combinators. **(deprecated)** - [`selector-combinator-disallowed-list`](../../../lib/rules/selector-combinator-disallowed-list/README.md): Specify a list of disallowed combinators. +- [`selector-combinator-whitelist`](../../../lib/rules/selector-combinator-whitelist/README.md): Specify a list of allowed combinators. **(deprecated)** - [`selector-id-pattern`](../../../lib/rules/selector-id-pattern/README.md): Specify a pattern for ID selectors. - [`selector-max-attribute`](../../../lib/rules/selector-max-attribute/README.md): Limit the number of attribute selectors in a selector. - [`selector-max-class`](../../../lib/rules/selector-max-class/README.md): Limit the number of classes in a selector. @@ -177,17 +193,23 @@ Grouped first by the following categories and then by the [_thing_](http://apps. - [`selector-no-qualifying-type`](../../../lib/rules/selector-no-qualifying-type/README.md): Disallow qualifying a selector by type. - [`selector-no-vendor-prefix`](../../../lib/rules/selector-no-vendor-prefix/README.md): Disallow vendor prefixes for selectors. - [`selector-pseudo-class-allowed-list`](../../../lib/rules/selector-pseudo-class-allowed-list/README.md): Specify a list of allowed pseudo-class selectors. +- [`selector-pseudo-class-blacklist`](../../../lib/rules/selector-pseudo-class-blacklist/README.md): Specify a list of disallowed pseudo-class selectors. **(deprecated)** - [`selector-pseudo-class-disallowed-list`](../../../lib/rules/selector-pseudo-class-disallowed-list/README.md): Specify a list of disallowed pseudo-class selectors. +- [`selector-pseudo-class-whitelist`](../../../lib/rules/selector-pseudo-class-whitelist/README.md): Specify a list of allowed pseudo-class selectors. **(deprecated)** - [`selector-pseudo-element-allowed-list`](../../../lib/rules/selector-pseudo-element-allowed-list/README.md): Specify a list of allowed pseudo-element selectors. +- [`selector-pseudo-element-blacklist`](../../../lib/rules/selector-pseudo-element-blacklist/README.md): Specify a list of disallowed pseudo-element selectors. **(deprecated)** - [`selector-pseudo-element-colon-notation`](../../../lib/rules/selector-pseudo-element-colon-notation/README.md): Specify single or double colon notation for applicable pseudo-elements (Autofixable). - [`selector-pseudo-element-disallowed-list`](../../../lib/rules/selector-pseudo-element-disallowed-list/README.md): Specify a list of disallowed pseudo-element selectors. +- [`selector-pseudo-element-whitelist`](../../../lib/rules/selector-pseudo-element-whitelist/README.md): Specify a list of allowed pseudo-element selectors. **(deprecated)** ### Media feature - [`media-feature-name-allowed-list`](../../../lib/rules/media-feature-name-allowed-list/README.md): Specify a list of allowed media feature names. +- [`media-feature-name-blacklist`](../../../lib/rules/media-feature-name-blacklist/README.md): Specify a list of disallowed media feature names. **(deprecated)** - [`media-feature-name-disallowed-list`](../../../lib/rules/media-feature-name-disallowed-list/README.md): Specify a list of disallowed media feature names. - [`media-feature-name-no-vendor-prefix`](../../../lib/rules/media-feature-name-no-vendor-prefix/README.md): Disallow vendor prefixes for media feature names. - [`media-feature-name-value-allowed-list`](../../../lib/rules/media-feature-name-value-allowed-list/README.md): Specify a list of allowed media feature name and value pairs. +- [`media-feature-name-whitelist`](../../../lib/rules/media-feature-name-whitelist/README.md): Specify a list of allowed media feature names. **(deprecated)** ### Custom media @@ -196,12 +218,16 @@ Grouped first by the following categories and then by the [_thing_](http://apps. ### At-rule - [`at-rule-allowed-list`](../../../lib/rules/at-rule-allowed-list/README.md): Specify a list of allowed at-rules. +- [`at-rule-blacklist`](../../../lib/rules/at-rule-blacklist/README.md): Specify a list of disallowed at-rules. **(deprecated)** - [`at-rule-disallowed-list`](../../../lib/rules/at-rule-disallowed-list/README.md): Specify a list of disallowed at-rules. - [`at-rule-no-vendor-prefix`](../../../lib/rules/at-rule-no-vendor-prefix/README.md): Disallow vendor prefixes for at-rules. - [`at-rule-property-required-list`](../../../lib/rules/at-rule-property-required-list/README.md): Specify a list of required properties for an at-rule. +- [`at-rule-property-requirelist`](../../../lib/rules/at-rule-property-requirelist/README.md): Specify a list of required properties for an at-rule. **(deprecated)** +- [`at-rule-whitelist`](../../../lib/rules/at-rule-whitelist/README.md): Specify a list of allowed at-rules. **(deprecated)** ### Comment +- [`comment-word-blacklist`](../../../lib/rules/comment-word-blacklist/README.md): Specify a list of disallowed words within comments. **(deprecated)** - [`comment-word-disallowed-list`](../../../lib/rules/comment-word-disallowed-list/README.md): Specify a list of disallowed words within comments. ### General / Sheet diff --git a/lib/rules/at-rule-blacklist/README.md b/lib/rules/at-rule-blacklist/README.md index ddbd9093dd..454160549b 100644 --- a/lib/rules/at-rule-blacklist/README.md +++ b/lib/rules/at-rule-blacklist/README.md @@ -1,5 +1,7 @@ # at-rule-blacklist +**_Deprecated: Instead use the [`at-rule-disallowed-list`](../at-rule-disallowed-list/README.md) rule._** + Specify a list of disallowed at-rules. diff --git a/lib/rules/at-rule-blacklist/__tests__/index.js b/lib/rules/at-rule-blacklist/__tests__/index.js index 44c2be5a20..08084ed8d5 100644 --- a/lib/rules/at-rule-blacklist/__tests__/index.js +++ b/lib/rules/at-rule-blacklist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['extend'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'at-rule-disallowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, diff --git a/lib/rules/at-rule-blacklist/index.js b/lib/rules/at-rule-blacklist/index.js index 94260622b6..1ccc09c6e3 100644 --- a/lib/rules/at-rule-blacklist/index.js +++ b/lib/rules/at-rule-blacklist/index.js @@ -29,6 +29,11 @@ function rule(listInput) { return; } + result.warn(`'${ruleName}' has been deprecated. Instead use 'at-rule-disallowed-list'.`, { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }); + root.walkAtRules((atRule) => { const name = atRule.name; diff --git a/lib/rules/at-rule-property-requirelist/README.md b/lib/rules/at-rule-property-requirelist/README.md index 5095d5a4aa..6108023b72 100644 --- a/lib/rules/at-rule-property-requirelist/README.md +++ b/lib/rules/at-rule-property-requirelist/README.md @@ -1,5 +1,7 @@ # at-rule-property-requirelist +**_Deprecated: Instead use the [`at-rule-property-required-list`](../at-rule-property-required-list/README.md) rule._** + Specify a list of required properties for an at-rule. diff --git a/lib/rules/at-rule-property-requirelist/__tests__/index.js b/lib/rules/at-rule-property-requirelist/__tests__/index.js index 9cc2658dac..2e85aebc79 100644 --- a/lib/rules/at-rule-property-requirelist/__tests__/index.js +++ b/lib/rules/at-rule-property-requirelist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: { page: ['margin'] }, + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'at-rule-property-required-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, config: { diff --git a/lib/rules/at-rule-property-requirelist/index.js b/lib/rules/at-rule-property-requirelist/index.js index 27f9a1bb5e..735329c65c 100644 --- a/lib/rules/at-rule-property-requirelist/index.js +++ b/lib/rules/at-rule-property-requirelist/index.js @@ -25,6 +25,14 @@ function rule(list) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'at-rule-property-required-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkAtRules((atRule) => { if (!isStandardSyntaxAtRule(atRule)) { return; diff --git a/lib/rules/at-rule-whitelist/README.md b/lib/rules/at-rule-whitelist/README.md index bcda7d7375..f6e0a006a3 100644 --- a/lib/rules/at-rule-whitelist/README.md +++ b/lib/rules/at-rule-whitelist/README.md @@ -1,5 +1,7 @@ # at-rule-whitelist +**_Deprecated: Instead use the [`at-rule-allowed-list`](../at-rule-allowed-list/README.md) rule._** + Specify a list of allowed at-rules. diff --git a/lib/rules/at-rule-whitelist/__tests__/index.js b/lib/rules/at-rule-whitelist/__tests__/index.js index 2873e4b816..93293ffeb3 100644 --- a/lib/rules/at-rule-whitelist/__tests__/index.js +++ b/lib/rules/at-rule-whitelist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['extend'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'at-rule-allowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, diff --git a/lib/rules/at-rule-whitelist/index.js b/lib/rules/at-rule-whitelist/index.js index 07fe77de6d..68ccac0763 100644 --- a/lib/rules/at-rule-whitelist/index.js +++ b/lib/rules/at-rule-whitelist/index.js @@ -29,6 +29,11 @@ function rule(listInput) { return; } + result.warn(`'${ruleName}' has been deprecated. Instead use 'at-rule-allowed-list'.`, { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }); + root.walkAtRules((atRule) => { const name = atRule.name; diff --git a/lib/rules/comment-word-blacklist/README.md b/lib/rules/comment-word-blacklist/README.md index e662d3800d..bcac8e8b90 100644 --- a/lib/rules/comment-word-blacklist/README.md +++ b/lib/rules/comment-word-blacklist/README.md @@ -1,5 +1,7 @@ # comment-word-blacklist +**_Deprecated: Instead use the [`comment-word-disallowed-list`](../comment-word-disallowed-list/README.md) rule._** + Specify a list of disallowed words within comments. diff --git a/lib/rules/comment-word-blacklist/__tests__/index.js b/lib/rules/comment-word-blacklist/__tests__/index.js index 745e881610..be4ed4497f 100644 --- a/lib/rules/comment-word-blacklist/__tests__/index.js +++ b/lib/rules/comment-word-blacklist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['bad-word'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'comment-word-disallowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, config: ['bad-word'], diff --git a/lib/rules/comment-word-blacklist/index.js b/lib/rules/comment-word-blacklist/index.js index fa05710599..05c15c365f 100644 --- a/lib/rules/comment-word-blacklist/index.js +++ b/lib/rules/comment-word-blacklist/index.js @@ -26,6 +26,11 @@ function rule(list) { return; } + result.warn(`'${ruleName}' has been deprecated. Instead use 'comment-word-disallowed-list'.`, { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }); + root.walkComments((comment) => { const text = comment.text; const rawComment = comment.toString(); diff --git a/lib/rules/declaration-property-unit-blacklist/README.md b/lib/rules/declaration-property-unit-blacklist/README.md index 1f017091ed..7537255e43 100644 --- a/lib/rules/declaration-property-unit-blacklist/README.md +++ b/lib/rules/declaration-property-unit-blacklist/README.md @@ -1,5 +1,7 @@ # declaration-property-unit-blacklist +**_Deprecated: Instead use the [`declaration-property-unit-disallowed-list`](../declaration-property-unit-disallowed-list/README.md) rule._** + Specify a list of disallowed property and unit pairs within declarations. diff --git a/lib/rules/declaration-property-unit-blacklist/__tests__/index.js b/lib/rules/declaration-property-unit-blacklist/__tests__/index.js index 4f95b06bfa..b125513cb9 100644 --- a/lib/rules/declaration-property-unit-blacklist/__tests__/index.js +++ b/lib/rules/declaration-property-unit-blacklist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: [{ margin: ['em'] }], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'declaration-property-unit-disallowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, diff --git a/lib/rules/declaration-property-unit-blacklist/index.js b/lib/rules/declaration-property-unit-blacklist/index.js index 24a31502f4..ff108db3cc 100644 --- a/lib/rules/declaration-property-unit-blacklist/index.js +++ b/lib/rules/declaration-property-unit-blacklist/index.js @@ -29,6 +29,14 @@ function rule(list) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'declaration-property-unit-disallowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkDecls((decl) => { const prop = decl.prop; const value = decl.value; diff --git a/lib/rules/declaration-property-unit-whitelist/README.md b/lib/rules/declaration-property-unit-whitelist/README.md index 96c74920b1..da73901d63 100644 --- a/lib/rules/declaration-property-unit-whitelist/README.md +++ b/lib/rules/declaration-property-unit-whitelist/README.md @@ -1,5 +1,7 @@ # declaration-property-unit-whitelist +**_Deprecated: Instead use the [`declaration-property-unit-allowed-list`](../declaration-property-unit-allowed-list/README.md) rule._** + Specify a list of allowed property and unit pairs within declarations. diff --git a/lib/rules/declaration-property-unit-whitelist/__tests__/index.js b/lib/rules/declaration-property-unit-whitelist/__tests__/index.js index fcb8dfc4f7..9925f9cd7d 100644 --- a/lib/rules/declaration-property-unit-whitelist/__tests__/index.js +++ b/lib/rules/declaration-property-unit-whitelist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: [{ margin: ['em'] }], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'declaration-property-unit-allowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, diff --git a/lib/rules/declaration-property-unit-whitelist/index.js b/lib/rules/declaration-property-unit-whitelist/index.js index 873d6c2e63..dcb24abbf3 100644 --- a/lib/rules/declaration-property-unit-whitelist/index.js +++ b/lib/rules/declaration-property-unit-whitelist/index.js @@ -29,6 +29,14 @@ function rule(list) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'declaration-property-unit-allowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkDecls((decl) => { const prop = decl.prop; const value = decl.value; diff --git a/lib/rules/declaration-property-value-blacklist/README.md b/lib/rules/declaration-property-value-blacklist/README.md index bb9c11d6d2..9edd6c9b1d 100644 --- a/lib/rules/declaration-property-value-blacklist/README.md +++ b/lib/rules/declaration-property-value-blacklist/README.md @@ -1,5 +1,7 @@ # declaration-property-value-blacklist +**_Deprecated: Instead use the [`declaration-property-value-disallowed-list`](../declaration-property-value-disallowed-list/README.md) rule._** + Specify a list of disallowed property and value pairs within declarations. diff --git a/lib/rules/declaration-property-value-blacklist/__tests__/index.js b/lib/rules/declaration-property-value-blacklist/__tests__/index.js index b190fdf21d..d51695b91f 100644 --- a/lib/rules/declaration-property-value-blacklist/__tests__/index.js +++ b/lib/rules/declaration-property-value-blacklist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: [{ color: ['red'] }], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'declaration-property-value-disallowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, diff --git a/lib/rules/declaration-property-value-blacklist/index.js b/lib/rules/declaration-property-value-blacklist/index.js index b044064d78..18645ce549 100644 --- a/lib/rules/declaration-property-value-blacklist/index.js +++ b/lib/rules/declaration-property-value-blacklist/index.js @@ -26,6 +26,14 @@ function rule(list) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'declaration-property-value-disallowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkDecls((decl) => { const prop = decl.prop; const value = decl.value; diff --git a/lib/rules/declaration-property-value-whitelist/README.md b/lib/rules/declaration-property-value-whitelist/README.md index 83165b5bb0..2e7f2b9848 100644 --- a/lib/rules/declaration-property-value-whitelist/README.md +++ b/lib/rules/declaration-property-value-whitelist/README.md @@ -1,5 +1,7 @@ # declaration-property-value-whitelist +**_Deprecated: Instead use the [`declaration-property-value-allowed-list`](../declaration-property-value-allowed-list/README.md) rule._** + Specify a list of allowed property and value pairs within declarations. diff --git a/lib/rules/declaration-property-value-whitelist/__tests__/index.js b/lib/rules/declaration-property-value-whitelist/__tests__/index.js index a9bff2a2de..326dbd8ef2 100644 --- a/lib/rules/declaration-property-value-whitelist/__tests__/index.js +++ b/lib/rules/declaration-property-value-whitelist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: [{ transform: ['/scale/'] }], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'declaration-property-value-allowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, diff --git a/lib/rules/declaration-property-value-whitelist/index.js b/lib/rules/declaration-property-value-whitelist/index.js index dbac8a326a..7abc35e172 100644 --- a/lib/rules/declaration-property-value-whitelist/index.js +++ b/lib/rules/declaration-property-value-whitelist/index.js @@ -26,6 +26,14 @@ function rule(list) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'declaration-property-value-allowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkDecls((decl) => { const prop = decl.prop; const value = decl.value; diff --git a/lib/rules/function-blacklist/README.md b/lib/rules/function-blacklist/README.md index 99bed31821..9cb80e361c 100644 --- a/lib/rules/function-blacklist/README.md +++ b/lib/rules/function-blacklist/README.md @@ -1,5 +1,7 @@ # function-blacklist +**_Deprecated: Instead use the [`function-disallowed-list`](../function-disallowed-list/README.md) rule._** + Specify a list of disallowed functions. diff --git a/lib/rules/function-blacklist/__tests__/index.js b/lib/rules/function-blacklist/__tests__/index.js index 583d756e86..6adacf6673 100644 --- a/lib/rules/function-blacklist/__tests__/index.js +++ b/lib/rules/function-blacklist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['rgba'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'function-disallowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, diff --git a/lib/rules/function-blacklist/index.js b/lib/rules/function-blacklist/index.js index e99e2bd8b0..b352ed19c9 100644 --- a/lib/rules/function-blacklist/index.js +++ b/lib/rules/function-blacklist/index.js @@ -29,6 +29,11 @@ function rule(list) { return; } + result.warn(`'${ruleName}' has been deprecated. Instead use 'function-disallowed-list'.`, { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }); + root.walkDecls((decl) => { const value = decl.value; diff --git a/lib/rules/function-url-scheme-blacklist/README.md b/lib/rules/function-url-scheme-blacklist/README.md index 60bd91af59..14fb678310 100644 --- a/lib/rules/function-url-scheme-blacklist/README.md +++ b/lib/rules/function-url-scheme-blacklist/README.md @@ -1,5 +1,7 @@ # function-url-scheme-blacklist +**_Deprecated: Instead use the [`function-url-scheme-disallowed-list`](../function-url-scheme-disallowed-list/README.md) rule._** + Specify a list of disallowed URL schemes. diff --git a/lib/rules/function-url-scheme-blacklist/__tests__/index.js b/lib/rules/function-url-scheme-blacklist/__tests__/index.js index 2cf73666e2..f444cfb9df 100644 --- a/lib/rules/function-url-scheme-blacklist/__tests__/index.js +++ b/lib/rules/function-url-scheme-blacklist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['https'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'function-url-scheme-disallowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, config: [[]], diff --git a/lib/rules/function-url-scheme-blacklist/index.js b/lib/rules/function-url-scheme-blacklist/index.js index 5028a1454a..477497ff64 100644 --- a/lib/rules/function-url-scheme-blacklist/index.js +++ b/lib/rules/function-url-scheme-blacklist/index.js @@ -28,6 +28,14 @@ function rule(list) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'function-url-scheme-disallowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkDecls((decl) => { functionArgumentsSearch(decl.toString().toLowerCase(), 'url', (args, index) => { const unspacedUrlString = _.trim(args, ' '); diff --git a/lib/rules/function-url-scheme-whitelist/README.md b/lib/rules/function-url-scheme-whitelist/README.md index 9f47527c8e..ece68797d7 100644 --- a/lib/rules/function-url-scheme-whitelist/README.md +++ b/lib/rules/function-url-scheme-whitelist/README.md @@ -1,5 +1,7 @@ # function-url-scheme-whitelist +**_Deprecated: Instead use the [`function-url-scheme-allowed-list`](../function-url-scheme-allowed-list/README.md) rule._** + Specify a list of allowed URL schemes. diff --git a/lib/rules/function-url-scheme-whitelist/__tests__/index.js b/lib/rules/function-url-scheme-whitelist/__tests__/index.js index 6604deb821..aa82499f2e 100644 --- a/lib/rules/function-url-scheme-whitelist/__tests__/index.js +++ b/lib/rules/function-url-scheme-whitelist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['https'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'function-url-scheme-allowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, config: ['https', 'data'], diff --git a/lib/rules/function-url-scheme-whitelist/index.js b/lib/rules/function-url-scheme-whitelist/index.js index eb0b48c885..5e8377ef15 100644 --- a/lib/rules/function-url-scheme-whitelist/index.js +++ b/lib/rules/function-url-scheme-whitelist/index.js @@ -28,6 +28,14 @@ function rule(list) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'function-url-scheme-allowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkDecls((decl) => { functionArgumentsSearch(decl.toString().toLowerCase(), 'url', (args, index) => { const unspacedUrlString = _.trim(args, ' '); diff --git a/lib/rules/function-whitelist/README.md b/lib/rules/function-whitelist/README.md index 92e80e164f..f3620b3b4b 100644 --- a/lib/rules/function-whitelist/README.md +++ b/lib/rules/function-whitelist/README.md @@ -1,5 +1,7 @@ # function-whitelist +**_Deprecated: Instead use the [`function-allowed-list`](../function-allowed-list/README.md) rule._** + Specify a list of allowed functions. diff --git a/lib/rules/function-whitelist/__tests__/index.js b/lib/rules/function-whitelist/__tests__/index.js index f7c188598f..4b4a7e8870 100644 --- a/lib/rules/function-whitelist/__tests__/index.js +++ b/lib/rules/function-whitelist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['rgba'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'function-allowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, diff --git a/lib/rules/function-whitelist/index.js b/lib/rules/function-whitelist/index.js index da52b50558..ea67001fdf 100644 --- a/lib/rules/function-whitelist/index.js +++ b/lib/rules/function-whitelist/index.js @@ -31,6 +31,11 @@ function rule(listInput) { return; } + result.warn(`'${ruleName}' has been deprecated. Instead use 'function-allowed-list'.`, { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }); + root.walkDecls((decl) => { const value = decl.value; diff --git a/lib/rules/media-feature-name-blacklist/README.md b/lib/rules/media-feature-name-blacklist/README.md index 194ce8a664..e89f5753cf 100644 --- a/lib/rules/media-feature-name-blacklist/README.md +++ b/lib/rules/media-feature-name-blacklist/README.md @@ -1,5 +1,7 @@ # media-feature-name-blacklist +**_Deprecated: Instead use the [`media-feature-name-disallowed-list`](../media-feature-name-disallowed-list/README.md) rule._** + Specify a list of disallowed media feature names. diff --git a/lib/rules/media-feature-name-blacklist/__tests__/index.js b/lib/rules/media-feature-name-blacklist/__tests__/index.js index c225362f33..dbeaf70dc7 100644 --- a/lib/rules/media-feature-name-blacklist/__tests__/index.js +++ b/lib/rules/media-feature-name-blacklist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['max-width'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'media-feature-name-disallowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, config: ['max-width', '--wide-viewport', 'width', '/^my-/', 'color'], diff --git a/lib/rules/media-feature-name-blacklist/index.js b/lib/rules/media-feature-name-blacklist/index.js index 1b30b68afa..81a1d97152 100644 --- a/lib/rules/media-feature-name-blacklist/index.js +++ b/lib/rules/media-feature-name-blacklist/index.js @@ -31,6 +31,14 @@ function rule(list) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'media-feature-name-disallowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkAtRules(/^media$/i, (atRule) => { mediaParser(atRule.params).walk(/^media-feature$/i, (mediaFeatureNode) => { const parent = mediaFeatureNode.parent; diff --git a/lib/rules/media-feature-name-value-whitelist/README.md b/lib/rules/media-feature-name-value-whitelist/README.md index 4d35659583..3a975e64d7 100644 --- a/lib/rules/media-feature-name-value-whitelist/README.md +++ b/lib/rules/media-feature-name-value-whitelist/README.md @@ -1,5 +1,7 @@ # media-feature-name-value-whitelist +**_Deprecated: Instead use the [`media-feature-name-value-allowed-list`](../media-feature-name-value-allowed-list/README.md) rule._** + Specify a list of allowed media feature name and value pairs. diff --git a/lib/rules/media-feature-name-value-whitelist/__tests__/index.js b/lib/rules/media-feature-name-value-whitelist/__tests__/index.js index 7ac33c41f6..9b18bbd4ee 100644 --- a/lib/rules/media-feature-name-value-whitelist/__tests__/index.js +++ b/lib/rules/media-feature-name-value-whitelist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: [{ color: [] }], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'media-feature-name-value-allowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, config: [ diff --git a/lib/rules/media-feature-name-value-whitelist/index.js b/lib/rules/media-feature-name-value-whitelist/index.js index a3e9313ade..dd5abd692b 100644 --- a/lib/rules/media-feature-name-value-whitelist/index.js +++ b/lib/rules/media-feature-name-value-whitelist/index.js @@ -30,6 +30,14 @@ function rule(list) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'media-feature-name-value-allowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkAtRules(/^media$/i, (atRule) => { mediaParser(atRule.params).walk(/^media-feature-expression$/i, (node) => { const mediaFeatureRangeContext = isRangeContextMediaFeature(node.parent.value); diff --git a/lib/rules/media-feature-name-whitelist/README.md b/lib/rules/media-feature-name-whitelist/README.md index e906ccc4ae..292ab9afe9 100644 --- a/lib/rules/media-feature-name-whitelist/README.md +++ b/lib/rules/media-feature-name-whitelist/README.md @@ -1,5 +1,7 @@ # media-feature-name-whitelist +**_Deprecated: Instead use the [`media-feature-name-allowed-list`](../media-feature-name-allowed-list/README.md) rule._** + Specify a list of allowed media feature names. diff --git a/lib/rules/media-feature-name-whitelist/__tests__/index.js b/lib/rules/media-feature-name-whitelist/__tests__/index.js index 6d8303f0cc..148bb129a5 100644 --- a/lib/rules/media-feature-name-whitelist/__tests__/index.js +++ b/lib/rules/media-feature-name-whitelist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['max-width'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'media-feature-name-allowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, config: ['max-width', '/^my-/', 'color'], diff --git a/lib/rules/media-feature-name-whitelist/index.js b/lib/rules/media-feature-name-whitelist/index.js index a575a4c0b4..27ea713268 100644 --- a/lib/rules/media-feature-name-whitelist/index.js +++ b/lib/rules/media-feature-name-whitelist/index.js @@ -31,6 +31,14 @@ function rule(list) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'media-feature-name-allowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkAtRules(/^media$/i, (atRule) => { mediaParser(atRule.params).walk(/^media-feature$/i, (mediaFeatureNode) => { const parent = mediaFeatureNode.parent; diff --git a/lib/rules/property-blacklist/README.md b/lib/rules/property-blacklist/README.md index 6566bfb9ad..b244fb8584 100644 --- a/lib/rules/property-blacklist/README.md +++ b/lib/rules/property-blacklist/README.md @@ -1,5 +1,7 @@ # property-blacklist +**_Deprecated: Instead use the [`property-disallowed-list`](../property-disallowed-list/README.md) rule._** + Specify a list of disallowed properties. diff --git a/lib/rules/property-blacklist/__tests__/index.js b/lib/rules/property-blacklist/__tests__/index.js index ff6a065fd7..c37d9b4ab7 100644 --- a/lib/rules/property-blacklist/__tests__/index.js +++ b/lib/rules/property-blacklist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: [], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'property-disallowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, diff --git a/lib/rules/property-blacklist/index.js b/lib/rules/property-blacklist/index.js index 41e019c8de..57a6daec0a 100644 --- a/lib/rules/property-blacklist/index.js +++ b/lib/rules/property-blacklist/index.js @@ -28,6 +28,11 @@ function rule(list) { return; } + result.warn(`'${ruleName}' has been deprecated. Instead use 'property-disallowed-list'.`, { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }); + root.walkDecls((decl) => { const prop = decl.prop; diff --git a/lib/rules/property-whitelist/README.md b/lib/rules/property-whitelist/README.md index 7ee6ea9ec3..1500c0ca19 100644 --- a/lib/rules/property-whitelist/README.md +++ b/lib/rules/property-whitelist/README.md @@ -1,5 +1,7 @@ # property-whitelist +**_Deprecated: Instead use the [`property-allowed-list`](../property-allowed-list/README.md) rule._** + Specify a list of allowed properties. diff --git a/lib/rules/property-whitelist/__tests__/index.js b/lib/rules/property-whitelist/__tests__/index.js index b868f89b5a..be5c0b16df 100644 --- a/lib/rules/property-whitelist/__tests__/index.js +++ b/lib/rules/property-whitelist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: [], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'property-allowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, diff --git a/lib/rules/property-whitelist/index.js b/lib/rules/property-whitelist/index.js index 55ae83e6da..74564e2864 100644 --- a/lib/rules/property-whitelist/index.js +++ b/lib/rules/property-whitelist/index.js @@ -28,6 +28,11 @@ function rule(list) { return; } + result.warn(`'${ruleName}' has been deprecated. Instead use 'property-allowed-list'.`, { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }); + root.walkDecls((decl) => { const prop = decl.prop; diff --git a/lib/rules/selector-attribute-operator-blacklist/README.md b/lib/rules/selector-attribute-operator-blacklist/README.md index 6ea009cac5..f3e54f4629 100644 --- a/lib/rules/selector-attribute-operator-blacklist/README.md +++ b/lib/rules/selector-attribute-operator-blacklist/README.md @@ -1,5 +1,7 @@ # selector-attribute-operator-blacklist +**_Deprecated: Instead use the [`selector-attribute-operator-disallowed-list`](../selector-attribute-operator-disallowed-list/README.md) rule._** + Specify a list of disallowed attribute operators. diff --git a/lib/rules/selector-attribute-operator-blacklist/__tests__/index.js b/lib/rules/selector-attribute-operator-blacklist/__tests__/index.js index c97dea3e70..437f9bb0d1 100644 --- a/lib/rules/selector-attribute-operator-blacklist/__tests__/index.js +++ b/lib/rules/selector-attribute-operator-blacklist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['~='], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'selector-attribute-operator-disallowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, diff --git a/lib/rules/selector-attribute-operator-blacklist/index.js b/lib/rules/selector-attribute-operator-blacklist/index.js index e8cea734c8..dcbf57dc1a 100644 --- a/lib/rules/selector-attribute-operator-blacklist/index.js +++ b/lib/rules/selector-attribute-operator-blacklist/index.js @@ -28,6 +28,14 @@ function rule(listInput) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'selector-attribute-operator-disallowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkRules((rule) => { if (!isStandardSyntaxRule(rule)) { return; diff --git a/lib/rules/selector-attribute-operator-whitelist/README.md b/lib/rules/selector-attribute-operator-whitelist/README.md index 84184ec69a..364d8266e6 100644 --- a/lib/rules/selector-attribute-operator-whitelist/README.md +++ b/lib/rules/selector-attribute-operator-whitelist/README.md @@ -1,5 +1,7 @@ # selector-attribute-operator-whitelist +**_Deprecated: Instead use the [`selector-attribute-operator-allowed-list`](../selector-attribute-operator-allowed-list/README.md) rule._** + Specify a list of allowed attribute operators. diff --git a/lib/rules/selector-attribute-operator-whitelist/__tests__/index.js b/lib/rules/selector-attribute-operator-whitelist/__tests__/index.js index 4e34462d57..70f3e1a12f 100644 --- a/lib/rules/selector-attribute-operator-whitelist/__tests__/index.js +++ b/lib/rules/selector-attribute-operator-whitelist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['='], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'selector-attribute-operator-allowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, diff --git a/lib/rules/selector-attribute-operator-whitelist/index.js b/lib/rules/selector-attribute-operator-whitelist/index.js index d8c4839739..e5f189f725 100644 --- a/lib/rules/selector-attribute-operator-whitelist/index.js +++ b/lib/rules/selector-attribute-operator-whitelist/index.js @@ -28,6 +28,14 @@ function rule(listInput) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'selector-attribute-operator-allowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkRules((rule) => { if (!isStandardSyntaxRule(rule)) { return; diff --git a/lib/rules/selector-combinator-blacklist/README.md b/lib/rules/selector-combinator-blacklist/README.md index 2510835c5a..cb64dfe82b 100644 --- a/lib/rules/selector-combinator-blacklist/README.md +++ b/lib/rules/selector-combinator-blacklist/README.md @@ -1,5 +1,7 @@ # selector-combinator-blacklist +**_Deprecated: Instead use the [`selector-combinator-disallowed-list`](../selector-combinator-disallowed-list/README.md) rule._** + Specify a list of disallowed combinators. diff --git a/lib/rules/selector-combinator-blacklist/__tests__/index.js b/lib/rules/selector-combinator-blacklist/__tests__/index.js index ad3c6e56dd..1574f8ca8b 100644 --- a/lib/rules/selector-combinator-blacklist/__tests__/index.js +++ b/lib/rules/selector-combinator-blacklist/__tests__/index.js @@ -1,7 +1,29 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['>'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'selector-combinator-disallowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); testRule({ ruleName, config: ['>', ' '], diff --git a/lib/rules/selector-combinator-blacklist/index.js b/lib/rules/selector-combinator-blacklist/index.js index cb6f258d8d..adc956a0ef 100644 --- a/lib/rules/selector-combinator-blacklist/index.js +++ b/lib/rules/selector-combinator-blacklist/index.js @@ -27,6 +27,14 @@ function rule(list) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'selector-combinator-disallowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkRules((rule) => { if (!isStandardSyntaxRule(rule)) { return; diff --git a/lib/rules/selector-combinator-whitelist/README.md b/lib/rules/selector-combinator-whitelist/README.md index 4c1e805c2c..49454ca37a 100644 --- a/lib/rules/selector-combinator-whitelist/README.md +++ b/lib/rules/selector-combinator-whitelist/README.md @@ -1,5 +1,7 @@ # selector-combinator-whitelist +**_Deprecated: Instead use the [`selector-combinator-allowed-list`](../selector-combinator-allowed-list/README.md) rule._** + Specify a list of allowed combinators. diff --git a/lib/rules/selector-combinator-whitelist/__tests__/index.js b/lib/rules/selector-combinator-whitelist/__tests__/index.js index 2d07cd78c9..e4a5296b06 100644 --- a/lib/rules/selector-combinator-whitelist/__tests__/index.js +++ b/lib/rules/selector-combinator-whitelist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['>'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'selector-combinator-allowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, config: ['>', ' '], diff --git a/lib/rules/selector-combinator-whitelist/index.js b/lib/rules/selector-combinator-whitelist/index.js index 57bdb42998..8505a53262 100644 --- a/lib/rules/selector-combinator-whitelist/index.js +++ b/lib/rules/selector-combinator-whitelist/index.js @@ -27,6 +27,14 @@ function rule(list) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'selector-combinator-allowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkRules((rule) => { if (!isStandardSyntaxRule(rule)) { return; diff --git a/lib/rules/selector-pseudo-class-blacklist/README.md b/lib/rules/selector-pseudo-class-blacklist/README.md index 3fb23301ae..be91d9a071 100644 --- a/lib/rules/selector-pseudo-class-blacklist/README.md +++ b/lib/rules/selector-pseudo-class-blacklist/README.md @@ -1,5 +1,7 @@ # selector-pseudo-class-blacklist +**_Deprecated: Instead use the [`selector-pseudo-class-disallowed-list`](../selector-pseudo-class-disallowed-list/README.md) rule._** + Specify a list of disallowed pseudo-class selectors. diff --git a/lib/rules/selector-pseudo-class-blacklist/__tests__/index.js b/lib/rules/selector-pseudo-class-blacklist/__tests__/index.js index 08ecbb317e..056a211a40 100644 --- a/lib/rules/selector-pseudo-class-blacklist/__tests__/index.js +++ b/lib/rules/selector-pseudo-class-blacklist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['focus'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'selector-pseudo-class-disallowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, config: ['focus', 'global', 'input-placeholder', 'not', 'nth-last-child', 'has'], diff --git a/lib/rules/selector-pseudo-class-blacklist/index.js b/lib/rules/selector-pseudo-class-blacklist/index.js index 733e379b67..cbdd34051b 100644 --- a/lib/rules/selector-pseudo-class-blacklist/index.js +++ b/lib/rules/selector-pseudo-class-blacklist/index.js @@ -28,6 +28,14 @@ function rule(list) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'selector-pseudo-class-disallowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkRules((rule) => { if (!isStandardSyntaxRule(rule)) { return; diff --git a/lib/rules/selector-pseudo-class-whitelist/README.md b/lib/rules/selector-pseudo-class-whitelist/README.md index 35be1c33c3..294f80300a 100644 --- a/lib/rules/selector-pseudo-class-whitelist/README.md +++ b/lib/rules/selector-pseudo-class-whitelist/README.md @@ -1,5 +1,7 @@ # selector-pseudo-class-whitelist +**_Deprecated: Instead use the [`selector-pseudo-class-allowed-list`](../selector-pseudo-class-allowed-list/README.md) rule._** + Specify a list of allowed pseudo-class selectors. diff --git a/lib/rules/selector-pseudo-class-whitelist/__tests__/index.js b/lib/rules/selector-pseudo-class-whitelist/__tests__/index.js index d9adad4dfe..1dc1a4c7b1 100644 --- a/lib/rules/selector-pseudo-class-whitelist/__tests__/index.js +++ b/lib/rules/selector-pseudo-class-whitelist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['hover'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'selector-pseudo-class-allowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, config: ['hover', 'nth-child', 'root', 'placeholder', 'has'], diff --git a/lib/rules/selector-pseudo-class-whitelist/index.js b/lib/rules/selector-pseudo-class-whitelist/index.js index 0c0c58c67d..2d214d87cc 100644 --- a/lib/rules/selector-pseudo-class-whitelist/index.js +++ b/lib/rules/selector-pseudo-class-whitelist/index.js @@ -28,6 +28,14 @@ function rule(list) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'selector-pseudo-class-allowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkRules((rule) => { if (!isStandardSyntaxRule(rule)) { return; diff --git a/lib/rules/selector-pseudo-element-blacklist/README.md b/lib/rules/selector-pseudo-element-blacklist/README.md index d57e742fc2..bcb9cf2908 100644 --- a/lib/rules/selector-pseudo-element-blacklist/README.md +++ b/lib/rules/selector-pseudo-element-blacklist/README.md @@ -1,5 +1,7 @@ # selector-pseudo-element-blacklist +**_Deprecated: Instead use the [`selector-pseudo-element-disallowed-list`](../selector-pseudo-element-disallowed-list/README.md) rule._** + Specify a list of disallowed pseudo-element selectors. diff --git a/lib/rules/selector-pseudo-element-blacklist/__tests__/index.js b/lib/rules/selector-pseudo-element-blacklist/__tests__/index.js index 7909c34097..ef6cd3ef83 100644 --- a/lib/rules/selector-pseudo-element-blacklist/__tests__/index.js +++ b/lib/rules/selector-pseudo-element-blacklist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['before'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'selector-pseudo-element-disallowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, config: ['before', 'selection', /^my/i], diff --git a/lib/rules/selector-pseudo-element-blacklist/index.js b/lib/rules/selector-pseudo-element-blacklist/index.js index 437920b27b..5a7655ed5a 100644 --- a/lib/rules/selector-pseudo-element-blacklist/index.js +++ b/lib/rules/selector-pseudo-element-blacklist/index.js @@ -28,6 +28,14 @@ function rule(list) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'selector-pseudo-element-disallowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkRules((rule) => { if (!isStandardSyntaxRule(rule)) { return; diff --git a/lib/rules/selector-pseudo-element-whitelist/README.md b/lib/rules/selector-pseudo-element-whitelist/README.md index 64d54f839f..2a24022cb0 100644 --- a/lib/rules/selector-pseudo-element-whitelist/README.md +++ b/lib/rules/selector-pseudo-element-whitelist/README.md @@ -1,5 +1,7 @@ # selector-pseudo-element-whitelist +**_Deprecated: Instead use the [`selector-pseudo-element-allowed-list`](../selector-pseudo-element-allowed-list/README.md) rule._** + Specify a list of allowed pseudo-element selectors. diff --git a/lib/rules/selector-pseudo-element-whitelist/__tests__/index.js b/lib/rules/selector-pseudo-element-whitelist/__tests__/index.js index 6228fd300e..d0d73e1522 100644 --- a/lib/rules/selector-pseudo-element-whitelist/__tests__/index.js +++ b/lib/rules/selector-pseudo-element-whitelist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['before'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'selector-pseudo-element-allowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, config: ['before', 'selection', /^my/i], diff --git a/lib/rules/selector-pseudo-element-whitelist/index.js b/lib/rules/selector-pseudo-element-whitelist/index.js index a313e8c1da..688d479ee4 100644 --- a/lib/rules/selector-pseudo-element-whitelist/index.js +++ b/lib/rules/selector-pseudo-element-whitelist/index.js @@ -28,6 +28,14 @@ function rule(list) { return; } + result.warn( + `'${ruleName}' has been deprecated. Instead use 'selector-pseudo-element-allowed-list'.`, + { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }, + ); + root.walkRules((rule) => { if (!isStandardSyntaxRule(rule)) { return; diff --git a/lib/rules/unit-blacklist/README.md b/lib/rules/unit-blacklist/README.md index ce6c453fcd..bcfa8710b3 100644 --- a/lib/rules/unit-blacklist/README.md +++ b/lib/rules/unit-blacklist/README.md @@ -1,5 +1,7 @@ # unit-blacklist +**_Deprecated: Instead use the [`unit-disallowed-list`](../unit-disallowed-list/README.md) rule._** + Specify a list of disallowed units. diff --git a/lib/rules/unit-blacklist/__tests__/index.js b/lib/rules/unit-blacklist/__tests__/index.js index cdb0a828e5..36e7df5abf 100644 --- a/lib/rules/unit-blacklist/__tests__/index.js +++ b/lib/rules/unit-blacklist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['px'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'unit-disallowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, diff --git a/lib/rules/unit-blacklist/index.js b/lib/rules/unit-blacklist/index.js index 67d464adce..9d5816214e 100644 --- a/lib/rules/unit-blacklist/index.js +++ b/lib/rules/unit-blacklist/index.js @@ -53,6 +53,11 @@ function rule(listInput, options) { return; } + result.warn(`'${ruleName}' has been deprecated. Instead use 'unit-disallowed-list'.`, { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }); + function check(node, nodeIndex, valueNode, input, option) { const unit = getUnitFromValueNode(valueNode); diff --git a/lib/rules/unit-whitelist/README.md b/lib/rules/unit-whitelist/README.md index d87382ba97..c32c1333d7 100644 --- a/lib/rules/unit-whitelist/README.md +++ b/lib/rules/unit-whitelist/README.md @@ -1,5 +1,7 @@ # unit-whitelist +**_Deprecated: Instead use the [`unit-allowed-list`](../unit-allowed-list/README.md) rule._** + Specify a list of allowed units. diff --git a/lib/rules/unit-whitelist/__tests__/index.js b/lib/rules/unit-whitelist/__tests__/index.js index 3ca8cd83dc..9879b0654b 100644 --- a/lib/rules/unit-whitelist/__tests__/index.js +++ b/lib/rules/unit-whitelist/__tests__/index.js @@ -1,7 +1,30 @@ 'use strict'; +const standalone = require('../../../standalone'); const { messages, ruleName } = require('..'); +it('warns that the rule is deprecated', () => { + const config = { + rules: { + [ruleName]: ['px'], + }, + }; + + const code = ''; + + return standalone({ code, config }).then((output) => { + const result = output.results[0]; + + expect(result.deprecations).toHaveLength(1); + expect(result.deprecations[0].text).toEqual( + `'${ruleName}' has been deprecated. Instead use 'unit-allowed-list'.`, + ); + expect(result.deprecations[0].reference).toEqual( + `https://stylelint.io/user-guide/rules/${ruleName}/`, + ); + }); +}); + testRule({ ruleName, diff --git a/lib/rules/unit-whitelist/index.js b/lib/rules/unit-whitelist/index.js index ff6b1bf71e..ca5f7bd58a 100644 --- a/lib/rules/unit-whitelist/index.js +++ b/lib/rules/unit-whitelist/index.js @@ -43,6 +43,11 @@ function rule(listInput, options) { return; } + result.warn(`'${ruleName}' has been deprecated. Instead use 'unit-allowed-list'.`, { + stylelintType: 'deprecation', + stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`, + }); + function check(node, value, getIndex) { // make sure multiplication operations (*) are divided - not handled // by postcss-value-parser