mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-02 18:11:04 +08:00
This CL adds the eslint-plugin-jsdoc plugin and enables just one rule, `jsdoc/check-alignment`, which ensures that all the lines in a comment are correctly aligned. For example: ``` /** * foo * bar */ ``` Would fail the check and be corrected to: ``` /** * foo * bar */ ``` DISABLE_THIRD_PARTY_CHECK=deliberate install + use of eslint-plugin-jsdoc node_module Bug: none Change-Id: I969983cd550653654a334ede3409b8c850467245 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/4110906 Commit-Queue: Andres Olivares <andoli@chromium.org> Reviewed-by: Andres Olivares <andoli@chromium.org> Auto-Submit: Jack Franklin <jacktfranklin@chromium.org> Commit-Queue: Jack Franklin <jacktfranklin@chromium.org>
228 lines
5.0 KiB
TypeScript
228 lines
5.0 KiB
TypeScript
import descriptionTokenizer from '../../src/parser/tokenizers/description';
|
|
import { seedSpec, seedTokens } from '../../src/util';
|
|
|
|
const sourceSingle = [
|
|
{
|
|
number: 1,
|
|
source: '...',
|
|
tokens: seedTokens({ description: ' one two ' }),
|
|
},
|
|
];
|
|
|
|
const sourceMultiple = [
|
|
{
|
|
number: 1,
|
|
source: '...',
|
|
tokens: seedTokens({ description: 'one two ' }),
|
|
},
|
|
{
|
|
number: 2,
|
|
source: '...',
|
|
tokens: seedTokens({ description: '' }),
|
|
},
|
|
{
|
|
number: 3,
|
|
source: '...',
|
|
tokens: seedTokens({ description: ' three four' }),
|
|
},
|
|
{
|
|
number: 4,
|
|
source: '...',
|
|
tokens: seedTokens({ description: '' }),
|
|
},
|
|
];
|
|
|
|
test('compact - single line', () => {
|
|
const tokenize = descriptionTokenizer('compact');
|
|
const input = seedSpec({ source: sourceSingle });
|
|
const output = seedSpec({ source: sourceSingle, description: 'one two' });
|
|
expect(tokenize(input)).toEqual(output);
|
|
});
|
|
|
|
test('compact - multiple lines', () => {
|
|
const tokenize = descriptionTokenizer('compact');
|
|
const input = seedSpec({ source: sourceMultiple });
|
|
const output = seedSpec({
|
|
source: sourceMultiple,
|
|
description: 'one two three four',
|
|
});
|
|
expect(tokenize(input)).toEqual(output);
|
|
});
|
|
|
|
test('preserve - multiple lines', () => {
|
|
const tokenize = descriptionTokenizer('preserve');
|
|
const input = seedSpec({ source: sourceMultiple });
|
|
const output = seedSpec({
|
|
source: sourceMultiple,
|
|
description: 'one two \n\n three four\n',
|
|
});
|
|
|
|
expect(tokenize(input)).toEqual(output);
|
|
});
|
|
|
|
test('preserve - one-liner', () => {
|
|
const tokenize = descriptionTokenizer('preserve');
|
|
const input = seedSpec({
|
|
source: [
|
|
{
|
|
number: 1,
|
|
source: '...',
|
|
tokens: seedTokens({
|
|
delimiter: '/**',
|
|
postDelimiter: ' ',
|
|
description: 'description',
|
|
end: '*/',
|
|
}),
|
|
},
|
|
],
|
|
});
|
|
const output = seedSpec({
|
|
description: 'description',
|
|
source: [
|
|
{
|
|
number: 1,
|
|
source: '...',
|
|
tokens: seedTokens({
|
|
delimiter: '/**',
|
|
postDelimiter: ' ',
|
|
description: 'description',
|
|
end: '*/',
|
|
}),
|
|
},
|
|
],
|
|
});
|
|
|
|
expect(tokenize(input)).toEqual(output);
|
|
});
|
|
|
|
test('preserve - leading empty lines', () => {
|
|
const source = [
|
|
{
|
|
number: 1,
|
|
source: '...',
|
|
tokens: seedTokens({ delimiter: '/**' }),
|
|
},
|
|
{
|
|
number: 2,
|
|
source: '...',
|
|
tokens: seedTokens(),
|
|
},
|
|
{
|
|
number: 3,
|
|
source: '...',
|
|
tokens: seedTokens({ description: ' line 1 ' }),
|
|
},
|
|
{
|
|
number: 4,
|
|
source: '...',
|
|
tokens: seedTokens({ description: ' line 2 ' }),
|
|
},
|
|
{
|
|
number: 5,
|
|
source: '...',
|
|
tokens: seedTokens({ description: '' }),
|
|
},
|
|
];
|
|
|
|
const tokenize = descriptionTokenizer('preserve');
|
|
|
|
const input = seedSpec({ source });
|
|
const output = seedSpec({
|
|
source,
|
|
description: '\n line 1 \n line 2 \n',
|
|
});
|
|
|
|
expect(tokenize(input)).toEqual(output);
|
|
});
|
|
|
|
test('preserve - leading type lines', () => {
|
|
const source = [
|
|
{
|
|
number: 1,
|
|
source: '...',
|
|
tokens: seedTokens({ delimiter: '/**' }),
|
|
},
|
|
{
|
|
number: 2,
|
|
source: '...',
|
|
tokens: seedTokens(),
|
|
},
|
|
{
|
|
number: 3,
|
|
source: '...',
|
|
tokens: seedTokens({ type: '{function(' }),
|
|
},
|
|
{
|
|
number: 4,
|
|
source: '...',
|
|
tokens: seedTokens({ type: ' number' }),
|
|
},
|
|
{
|
|
number: 5,
|
|
source: '...',
|
|
tokens: seedTokens({
|
|
type: ')}',
|
|
postType: ' ',
|
|
description: 'line 1 ',
|
|
}),
|
|
},
|
|
{
|
|
number: 6,
|
|
source: '...',
|
|
tokens: seedTokens({ description: ' line 2 ' }),
|
|
},
|
|
{
|
|
number: 7,
|
|
source: '...',
|
|
tokens: seedTokens({ description: '' }),
|
|
},
|
|
];
|
|
|
|
const tokenize = descriptionTokenizer('preserve');
|
|
|
|
const input = seedSpec({ source });
|
|
const output = seedSpec({
|
|
source,
|
|
description: 'line 1 \n line 2 \n',
|
|
});
|
|
|
|
expect(tokenize(input)).toEqual(output);
|
|
});
|
|
|
|
test('custom joiner - single line', () => {
|
|
const tokenize = descriptionTokenizer((lines) => {
|
|
return lines
|
|
.reduce((str, { tokens: { description } }) => {
|
|
const trimmed = description.trim();
|
|
if (!trimmed) {
|
|
return str;
|
|
}
|
|
return str + ' ' + trimmed;
|
|
}, '')
|
|
.slice(1);
|
|
});
|
|
const input = seedSpec({ source: sourceSingle });
|
|
const output = seedSpec({ source: sourceSingle, description: 'one two' });
|
|
expect(tokenize(input)).toEqual(output);
|
|
});
|
|
|
|
test('custom joiner - multiple lines', () => {
|
|
const tokenize = descriptionTokenizer((lines) => {
|
|
return lines
|
|
.reduce((str, { tokens: { description } }) => {
|
|
const trimmed = description.trim();
|
|
if (!trimmed) {
|
|
return str;
|
|
}
|
|
return str + ' ' + trimmed;
|
|
}, '')
|
|
.slice(1);
|
|
});
|
|
const input = seedSpec({ source: sourceMultiple });
|
|
const output = seedSpec({
|
|
source: sourceMultiple,
|
|
description: 'one two three four',
|
|
});
|
|
expect(tokenize(input)).toEqual(output);
|
|
});
|