Skip to content

Commit

Permalink
Add autofix to font-family-name-quotes (#5806)
Browse files Browse the repository at this point in the history
Co-authored-by: Masafumi Koba <473530+ybiquitous@users.noreply.github.com>
  • Loading branch information
MrBrN197 and ybiquitous committed Feb 4, 2022
1 parent 72a56a5 commit 82bd404
Show file tree
Hide file tree
Showing 4 changed files with 408 additions and 19 deletions.
2 changes: 1 addition & 1 deletion docs/user-guide/rules/list.md
Expand Up @@ -110,7 +110,7 @@ Within each cateogory, the rules are grouped by the [_thing_](http://apps.workfl

### Font family

- [`font-family-name-quotes`](../../../lib/rules/font-family-name-quotes/README.md): Specify whether or not quotation marks should be used around font family names.
- [`font-family-name-quotes`](../../../lib/rules/font-family-name-quotes/README.md): Specify whether or not quotation marks should be used around font family names (Autofixable).

### Font weight

Expand Down
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') },
],
},
],
});

0 comments on commit 82bd404

Please sign in to comment.