Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add autofix to font-family-name-quotes #5806

Merged
merged 22 commits into from Feb 4, 2022
Merged
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
752936f
add autofix for `font-family-name-quotes` rule
MrBrN197 Dec 30, 2021
89311d3
Add tests for `font-family-name-quotes`
MrBrN197 Dec 30, 2021
e150def
Add test for `font-family-name-quotes`
MrBrN197 Dec 30, 2021
502e693
Add test for `font-family-name-quotes` rules
MrBrN197 Dec 30, 2021
ae35acc
Update `font-family-name-quotes` README.md
MrBrN197 Jan 15, 2022
6fe4c39
Move `fixed:` next to `code:` like other cases?
MrBrN197 Jan 15, 2022
bd8a71e
Use double quotes
MrBrN197 Jan 15, 2022
4e09eea
Replace single quotes with double in tests
MrBrN197 Jan 15, 2022
1e5f8d9
Create `makeNodeValueMutable` function
MrBrN197 Jan 24, 2022
d259535
Refactor fix code into ixDeclarationValue function
MrBrN197 Jan 24, 2022
c3c37c0
Improve variable definitions of checkFamilyName function
MrBrN197 Jan 24, 2022
b83830c
"Fix: remove `decl` arg in `makeNodeValueMutable`"
MrBrN197 Jan 24, 2022
d352442
Create `MakeMutableFontFamilies` function
MrBrN197 Jan 30, 2022
cfb9c97
Add tests for `font-family-name-quotes`
MrBrN197 Jan 30, 2022
572d488
Update lib/rules/font-family-name-quotes/index.js
MrBrN197 Feb 3, 2022
3ff6dbb
Update lib/rules/font-family-name-quotes/index.js
MrBrN197 Feb 3, 2022
5f03a32
Update lib/rules/font-family-name-quotes/index.js
MrBrN197 Feb 3, 2022
a5f4b32
Update lib/rules/font-family-name-quotes/index.js
MrBrN197 Feb 3, 2022
934287f
`MakeMutableFontFamilies` to lower-case function name
MrBrN197 Feb 3, 2022
32abfc4
Fix: rename `fontFamiliess` to `fontFamilyNodes`
MrBrN197 Feb 3, 2022
2419a98
Mark `font-family-name-quotes` as fixable
MrBrN197 Feb 4, 2022
c93126e
Merge branch 'main' into autofix-font-family-name-quotes
MrBrN197 Feb 4, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions lib/rules/font-family-name-quotes/README.md
Expand Up @@ -13,6 +13,8 @@ This rule checks the `font` and `font-family` properties.

This rule ignores `$sass`, `@less`, and `var(--custom-property)` variable syntaxes.

The [`fix` option](../../../docs/user-guide/usage/options.md#fix) can automatically fix most of the problems reported by this rule.

## Options

`string`: `"always-where-required"|"always-where-recommended"|"always-unless-keyword"`
Expand Down
298 changes: 298 additions & 0 deletions lib/rules/font-family-name-quotes/__tests__/index.js
Expand Up @@ -390,3 +390,301 @@ testRule({
},
],
});

testRule({
ruleName,
config: ['always-unless-keyword'],
fix: true,
reject: [
{
code: 'a { font-family: "Lucida Grande", "Arial", "sans-serif"; }',
fixed: 'a { font-family: "Lucida Grande", "Arial", sans-serif; }',
message: messages.rejected('sans-serif'),
line: 1,
column: 45,
},
{
code: 'a { font: 1em "Lucida Grande", "Arial", "sans-serif"; }',
fixed: 'a { font: 1em "Lucida Grande", "Arial", sans-serif; }',
message: messages.rejected('sans-serif'),
line: 1,
column: 42,
},
{
code: 'a { fOnT-fAmIlY: "Lucida Grande", "Arial", "sans-serif"; }',
fixed: 'a { fOnT-fAmIlY: "Lucida Grande", "Arial", sans-serif; }',
message: messages.rejected('sans-serif'),
line: 1,
column: 45,
},
{
code: 'a { font-family: Lucida Grande, "Arial", sans-serif; }',
fixed: 'a { font-family: "Lucida Grande", "Arial", sans-serif; }',
message: messages.expected('Lucida Grande'),
line: 1,
column: 18,
},
{
code: "a { font-family: 'Lucida Grande', Arial, sans-serif; }",
fixed: 'a { font-family: \'Lucida Grande\', "Arial", sans-serif; }',
message: messages.expected('Arial'),
line: 1,
column: 35,
},
{
code: 'a { font-family: "inherit"; }',
fixed: 'a { font-family: inherit; }',
message: messages.rejected('inherit'),
},
{
code: "a { font-family: 'system-ui', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; }",
fixed:
"a { font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; }",
message: messages.rejected('system-ui'),
},
{
code: "a { font-family: system-ui, '-apple-system', BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; }",
fixed:
"a { font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; }",
message: messages.rejected('-apple-system'),
},
{
code: "a { font-family: system-ui, -apple-system, 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', sans-serif; }",
fixed:
"a { font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; }",
message: messages.rejected('BlinkMacSystemFont'),
},
{
code: 'a { font: italic 300 16px/30px Arial, serif; }',
fixed: 'a { font: italic 300 16px/30px "Arial", serif; }',
message: messages.expected('Arial'),
line: 1,
column: 32,
},
{
code: 'a { font: italic 1000 16px/30px Arial, serif; }',
fixed: 'a { font: italic 1000 16px/30px "Arial", serif; }',
message: messages.expected('Arial'),
line: 1,
column: 33,
},
{
code: 'a { font: italic 892 16px/30px Arial, serif; }',
fixed: 'a { font: italic 892 16px/30px "Arial", serif; }',
message: messages.expected('Arial'),
line: 1,
column: 32,
},
{
code: 'a { font-family: \u1100; }',
fixed: 'a { font-family: "\u1100"; }',
message: messages.expected('\u1100'),
line: 1,
column: 18,
},
{
code: 'a { font-family: ሀ; }',
fixed: 'a { font-family: "ሀ"; }',
message: messages.expected('ሀ'),
line: 1,
column: 18,
},
{
code: "a { font-family: -apple-system, Hawaii 5-0, 'BlinkMacSystemFont', Segoe UI, 'Roboto', 'sans-serif'; }",
fixed:
'a { font-family: -apple-system, "Hawaii 5-0", BlinkMacSystemFont, "Segoe UI", \'Roboto\', sans-serif; }',
description: 'multiple fixes on one declaration',
warnings: [
{ message: messages.expected('Hawaii 5-0') },
{ message: messages.rejected('BlinkMacSystemFont') },
{ message: messages.expected('Segoe UI') },
{ message: messages.rejected('sans-serif') },
],
},
],
});

testRule({
ruleName,
config: ['always-where-recommended'],
fix: true,

reject: [
{
code: 'a { font: 1em Lucida Grande, Arial, sans-serif; }',
fixed: 'a { font: 1em "Lucida Grande", Arial, sans-serif; }',
message: messages.expected('Lucida Grande'),
line: 1,
column: 15,
},
{
code: 'a { font-family: Lucida Grande, Arial, sans-serif; }',
fixed: 'a { font-family: "Lucida Grande", Arial, sans-serif; }',
message: messages.expected('Lucida Grande'),
line: 1,
column: 18,
},
{
code: 'a { fOnT-fAmIlY: Lucida Grande, Arial, sans-serif; }',
fixed: 'a { fOnT-fAmIlY: "Lucida Grande", Arial, sans-serif; }',
message: messages.expected('Lucida Grande'),
line: 1,
column: 18,
},
{
code: 'a { FONT-FAMILY: Lucida Grande, Arial, sans-serif; }',
fixed: 'a { FONT-FAMILY: "Lucida Grande", Arial, sans-serif; }',
message: messages.expected('Lucida Grande'),
line: 1,
column: 18,
},
{
code: 'a { font-family: "Lucida Grande", Arial, "sans-serif"; }',
fixed: 'a { font-family: "Lucida Grande", Arial, sans-serif; }',
message: messages.rejected('sans-serif'),
line: 1,
column: 43,
},
{
code: 'a { font-family: Red/Black, Arial, sans-serif; }',
fixed: 'a { font-family: "Red/Black", Arial, sans-serif; }',
message: messages.expected('Red/Black'),
},
{
code: 'a { font-family: Arial, Ahem!, sans-serif; }',
fixed: 'a { font-family: Arial, "Ahem!", sans-serif; }',
message: messages.expected('Ahem!'),
},
{
code: 'a { font-family: Hawaii 5-0, Arial, sans-serif; }',
fixed: 'a { font-family: "Hawaii 5-0", Arial, sans-serif; }',
message: messages.expected('Hawaii 5-0'),
},
{
code: 'a { font-family: Times, Times New Roman, serif; }',
fixed: 'a { font-family: Times, "Times New Roman", serif; }',
message: messages.expected('Times New Roman'),
},
{
code: 'a { font-family: Something6; }',
fixed: 'a { font-family: "Something6"; }',
message: messages.expected('Something6'),
},
{
code: 'a { font-family: snake_case; }',
fixed: 'a { font-family: "snake_case"; }',
message: messages.expected('snake_case'),
},
{
code: 'a { font-family: "Arial"; }',
fixed: 'a { font-family: Arial; }',
message: messages.rejected('Arial'),
},
{
code: "a { font-family: '-apple-system', BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; }",
fixed:
"a { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; }",
message: messages.rejected('-apple-system'),
},
{
code: "a { font-family: -apple-system, 'BlinkMacSystemFont', 'Segoe UI', Roboto, sans-serif; }",
fixed:
"a { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; }",
message: messages.rejected('BlinkMacSystemFont'),
},
{
code: "a { font-family: -apple-system, Hawaii 5-0, 'BlinkMacSystemFont', Segoe UI, 'Roboto', 'sans-serif'; }",
fixed:
'a { font-family: -apple-system, "Hawaii 5-0", BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; }',
description: 'multiple fixes on one declaration',
warnings: [
{ message: messages.expected('Hawaii 5-0') },
{ message: messages.rejected('BlinkMacSystemFont') },
{ message: messages.expected('Segoe UI') },
{ message: messages.rejected('Roboto') },
{ message: messages.rejected('sans-serif') },
],
},
],
});

testRule({
ruleName,
config: ['always-where-required'],
fix: true,

reject: [
{
code: 'a { font: 1em "Lucida Grande", Arial, sans-serif; }',
fixed: 'a { font: 1em Lucida Grande, Arial, sans-serif; }',
message: messages.rejected('Lucida Grande'),
line: 1,
column: 16,
},
{
code: 'a { font-family: "Lucida Grande", Arial, sans-serif; }',
fixed: 'a { font-family: Lucida Grande, Arial, sans-serif; }',
message: messages.rejected('Lucida Grande'),
line: 1,
column: 19,
},
{
code: 'a { fOnT-fAmIlY: "Lucida Grande", Arial, sans-serif; }',
fixed: 'a { fOnT-fAmIlY: Lucida Grande, Arial, sans-serif; }',
message: messages.rejected('Lucida Grande'),
line: 1,
column: 19,
},
{
code: 'a { FONT-FAMILY: "Lucida Grande", Arial, sans-serif; }',
fixed: 'a { FONT-FAMILY: Lucida Grande, Arial, sans-serif; }',
message: messages.rejected('Lucida Grande'),
line: 1,
column: 19,
},
{
code: 'a { font-family: Lucida Grande, Arial, "sans-serif"; }',
fixed: 'a { font-family: Lucida Grande, Arial, sans-serif; }',
message: messages.rejected('sans-serif'),
line: 1,
column: 41,
},
{
code: 'a { font-family: Red/Black, Arial, sans-serif; }',
fixed: 'a { font-family: "Red/Black", Arial, sans-serif; }',
message: messages.expected('Red/Black'),
},
{
code: 'a { font-family: Arial, Ahem!, sans-serif; }',
fixed: 'a { font-family: Arial, "Ahem!", sans-serif; }',
message: messages.expected('Ahem!'),
},
{
code: 'a { font-family: Hawaii 5-0, Arial, sans-serif; }',
fixed: 'a { font-family: "Hawaii 5-0", Arial, sans-serif; }',
message: messages.expected('Hawaii 5-0'),
},
{
code: "a { font-family: '-apple-system', BlinkMacSystemFont, Segoe UI, Roboto, sans-serif; }",
fixed: 'a { font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif; }',
message: messages.rejected('-apple-system'),
},
{
code: "a { font-family: -apple-system, 'BlinkMacSystemFont', Segoe UI, Roboto, sans-serif; }",
fixed: 'a { font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif; }',
message: messages.rejected('BlinkMacSystemFont'),
},
{
code: "a { font-family: -apple-system, Hawaii 5-0, 'BlinkMacSystemFont', Segoe UI, 'Roboto', 'sans-serif'; }",
fixed:
'a { font-family: -apple-system, "Hawaii 5-0", BlinkMacSystemFont, Segoe UI, Roboto, sans-serif; }',
description: 'multiple fixes on one declaration',
warnings: [
{ message: messages.expected('Hawaii 5-0') },
{ message: messages.rejected('BlinkMacSystemFont') },
{ message: messages.rejected('Roboto') },
{ message: messages.rejected('sans-serif') },
],
},
],
});