eslint-plugin-jest-formatting 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.circleci/config.yml +2 -2
- package/.eslintrc +15 -4
- package/CHANGELOG.md +28 -6
- package/README.md +21 -13
- package/docs/rules/padding-around-all.md +13 -0
- package/lib/ast-utils.js +41 -0
- package/lib/index.js +159 -76
- package/lib/rules/padding.js +131 -158
- package/package.json +20 -19
- package/src/ast-utils.ts +80 -0
- package/src/index.ts +166 -81
- package/src/rules/padding.ts +263 -252
- package/tests/catfood.js +41 -0
- package/tests/dogfood.spec.js +2 -0
- package/tests/lib/ast-utils.spec.ts +94 -0
- package/tests/lib/rules/padding-around-after-all-blocks.spec.js +3 -8
- package/tests/lib/rules/padding-around-after-each-blocks.spec.js +3 -8
- package/tests/lib/rules/padding-around-before-all-blocks.spec.js +3 -8
- package/tests/lib/rules/padding-around-before-each-blocks.spec.js +3 -8
- package/tests/lib/rules/padding-around-describe-blocks.spec.js +7 -12
- package/tests/lib/rules/padding-around-expect-groups.spec.js +3 -8
- package/tests/lib/rules/padding-around-test-blocks.spec.js +15 -12
- package/tsconfig.json +1 -1
- package/lib/utils.js +0 -15
- package/src/utils.ts +0 -40
- package/tests/lib/rules/padding-before-after-all-blocks.spec.js +0 -104
- package/tests/lib/rules/padding-before-after-each-blocks.spec.js +0 -104
- package/tests/lib/rules/padding-before-before-all-blocks.spec.js +0 -104
- package/tests/lib/rules/padding-before-before-each-blocks.spec.js +0 -104
- package/tests/lib/rules/padding-before-describe-blocks.spec.js +0 -150
- package/tests/lib/rules/padding-before-expect-statements.spec.js +0 -144
- package/tests/lib/rules/padding-before-test-blocks.spec.js +0 -159
- package/yarn.lock +0 -4232
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { isValidParent, isTokenASemicolon, areTokensOnSameLine } from "../../src/ast-utils";
|
|
2
|
+
import { AST } from "eslint";
|
|
3
|
+
import { Node } from "estree";
|
|
4
|
+
|
|
5
|
+
describe('isValidParent', () => {
|
|
6
|
+
test.each`
|
|
7
|
+
type | expected
|
|
8
|
+
${'Program'} | ${true}
|
|
9
|
+
${'BlockStatement'} | ${true}
|
|
10
|
+
${'SwitchCase'} | ${true}
|
|
11
|
+
${'SwitchStatement'} | ${true}
|
|
12
|
+
${'Statement'} | ${false}
|
|
13
|
+
`('returns $expected for parent value of $type', ({ type, expected }) => {
|
|
14
|
+
expect(isValidParent(type)).toBe(expected);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
describe('isTokenASemicolon', () => {
|
|
19
|
+
test.each`
|
|
20
|
+
type | value | expected
|
|
21
|
+
${'Punctuator'} | ${';'} | ${true}
|
|
22
|
+
${'Punctuator'} | ${'.'} | ${false}
|
|
23
|
+
${'String'} | ${';'} | ${false}
|
|
24
|
+
`('returns $expected for $type and $value', ({ type, value, expected}) => {
|
|
25
|
+
const token: AST.Token = {
|
|
26
|
+
type,
|
|
27
|
+
value,
|
|
28
|
+
range: [0, 1],
|
|
29
|
+
loc: {
|
|
30
|
+
start: {
|
|
31
|
+
line: 0,
|
|
32
|
+
column: 0,
|
|
33
|
+
},
|
|
34
|
+
end: {
|
|
35
|
+
line: 0,
|
|
36
|
+
column: 1,
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
expect(isTokenASemicolon(token)).toBe(expected);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
describe('areTokensOnSameLine', () => {
|
|
46
|
+
const makeNode = (line: number): Node => {
|
|
47
|
+
return {
|
|
48
|
+
type: 'Identifier',
|
|
49
|
+
name: 'describe',
|
|
50
|
+
loc: {
|
|
51
|
+
start: {
|
|
52
|
+
line,
|
|
53
|
+
column: 10
|
|
54
|
+
},
|
|
55
|
+
end: {
|
|
56
|
+
line,
|
|
57
|
+
column: 10
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const makeToken = (line: number): AST.Token => {
|
|
64
|
+
return {
|
|
65
|
+
type: 'Punctuator',
|
|
66
|
+
value: ';',
|
|
67
|
+
range: [0, 1],
|
|
68
|
+
loc: {
|
|
69
|
+
start: {
|
|
70
|
+
line,
|
|
71
|
+
column: 10
|
|
72
|
+
},
|
|
73
|
+
end: {
|
|
74
|
+
line,
|
|
75
|
+
column: 10
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
test.each`
|
|
82
|
+
left | right | expected
|
|
83
|
+
${makeNode(1)} | ${makeNode(1)} | ${true}
|
|
84
|
+
${makeNode(1)} | ${makeToken(1)} | ${true}
|
|
85
|
+
${makeToken(1)} | ${makeNode(1)} | ${true}
|
|
86
|
+
${makeToken(1)} | ${makeToken(1)} | ${true}
|
|
87
|
+
${makeNode(1)} | ${makeNode(2)} | ${false}
|
|
88
|
+
${makeNode(1)} | ${makeToken(2)} | ${false}
|
|
89
|
+
${makeToken(1)} | ${makeNode(2)} | ${false}
|
|
90
|
+
${makeToken(1)} | ${makeToken(2)} | ${false}
|
|
91
|
+
`('returns $expected for left node/token ending on $left.loc.end.line and right node/token starting on $right.loc.start.line', ({ left, right, expected }) => {
|
|
92
|
+
expect(areTokensOnSameLine(left, right)).toBe(expected);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
@@ -71,13 +71,7 @@ describe('someText', () => {
|
|
|
71
71
|
`;
|
|
72
72
|
|
|
73
73
|
ruleTester.run('padding-before-after-all-blocks', rule, {
|
|
74
|
-
valid: [
|
|
75
|
-
valid,
|
|
76
|
-
{
|
|
77
|
-
code: invalid,
|
|
78
|
-
filename: 'src/component.jsx'
|
|
79
|
-
}
|
|
80
|
-
],
|
|
74
|
+
valid: [valid],
|
|
81
75
|
invalid: [
|
|
82
76
|
{
|
|
83
77
|
code: invalid,
|
|
@@ -114,7 +108,8 @@ ruleTester.run('padding-before-after-all-blocks', rule, {
|
|
|
114
108
|
line: 18,
|
|
115
109
|
column: 3
|
|
116
110
|
},
|
|
117
|
-
]
|
|
111
|
+
],
|
|
112
|
+
output: valid,
|
|
118
113
|
},
|
|
119
114
|
]
|
|
120
115
|
});
|
|
@@ -69,13 +69,7 @@ describe('someText', () => {
|
|
|
69
69
|
`;
|
|
70
70
|
|
|
71
71
|
ruleTester.run('padding-before-after-each-blocks', rule, {
|
|
72
|
-
valid: [
|
|
73
|
-
valid,
|
|
74
|
-
{
|
|
75
|
-
code: invalid,
|
|
76
|
-
filename: 'src/component.jsx'
|
|
77
|
-
}
|
|
78
|
-
],
|
|
72
|
+
valid: [valid],
|
|
79
73
|
invalid: [
|
|
80
74
|
{
|
|
81
75
|
code: invalid,
|
|
@@ -112,7 +106,8 @@ ruleTester.run('padding-before-after-each-blocks', rule, {
|
|
|
112
106
|
line: 17,
|
|
113
107
|
column: 3
|
|
114
108
|
},
|
|
115
|
-
]
|
|
109
|
+
],
|
|
110
|
+
output: valid,
|
|
116
111
|
},
|
|
117
112
|
]
|
|
118
113
|
});
|
|
@@ -71,13 +71,7 @@ describe('someText', () => {
|
|
|
71
71
|
`;
|
|
72
72
|
|
|
73
73
|
ruleTester.run('padding-before-before-all-blocks', rule, {
|
|
74
|
-
valid: [
|
|
75
|
-
valid,
|
|
76
|
-
{
|
|
77
|
-
code: invalid,
|
|
78
|
-
filename: 'src/component.jsx'
|
|
79
|
-
}
|
|
80
|
-
],
|
|
74
|
+
valid: [valid],
|
|
81
75
|
invalid: [
|
|
82
76
|
{
|
|
83
77
|
code: invalid,
|
|
@@ -114,7 +108,8 @@ ruleTester.run('padding-before-before-all-blocks', rule, {
|
|
|
114
108
|
line: 18,
|
|
115
109
|
column: 3
|
|
116
110
|
},
|
|
117
|
-
]
|
|
111
|
+
],
|
|
112
|
+
output: valid,
|
|
118
113
|
},
|
|
119
114
|
]
|
|
120
115
|
});
|
|
@@ -71,13 +71,7 @@ describe('someText', () => {
|
|
|
71
71
|
`;
|
|
72
72
|
|
|
73
73
|
ruleTester.run('padding-before-before-each-blocks', rule, {
|
|
74
|
-
valid: [
|
|
75
|
-
valid,
|
|
76
|
-
{
|
|
77
|
-
code: invalid,
|
|
78
|
-
filename: 'src/component.jsx'
|
|
79
|
-
}
|
|
80
|
-
],
|
|
74
|
+
valid: [valid],
|
|
81
75
|
invalid: [
|
|
82
76
|
{
|
|
83
77
|
code: invalid,
|
|
@@ -114,7 +108,8 @@ ruleTester.run('padding-before-before-each-blocks', rule, {
|
|
|
114
108
|
line: 18,
|
|
115
109
|
column: 3
|
|
116
110
|
},
|
|
117
|
-
]
|
|
111
|
+
],
|
|
112
|
+
output: valid,
|
|
118
113
|
},
|
|
119
114
|
]
|
|
120
115
|
});
|
|
@@ -39,7 +39,7 @@ describe('someText', () => {
|
|
|
39
39
|
});
|
|
40
40
|
});
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
xdescribe('someObject', () => {
|
|
43
43
|
// Another comment
|
|
44
44
|
describe('some condition', () => {
|
|
45
45
|
const anotherThing = 500;
|
|
@@ -49,7 +49,7 @@ describe('someObject', () => {
|
|
|
49
49
|
});
|
|
50
50
|
});
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
fdescribe('weird', () => {});
|
|
53
53
|
|
|
54
54
|
describe.skip('skip me', () => {});
|
|
55
55
|
|
|
@@ -77,14 +77,14 @@ describe('someText', () => {
|
|
|
77
77
|
describe('some other condition', () => {
|
|
78
78
|
});
|
|
79
79
|
});
|
|
80
|
-
|
|
80
|
+
xdescribe('someObject', () => {
|
|
81
81
|
// Another comment
|
|
82
82
|
describe('some condition', () => {
|
|
83
83
|
const anotherThing = 500;
|
|
84
84
|
describe('yet another condition', () => { // A comment over here!
|
|
85
85
|
});
|
|
86
86
|
});
|
|
87
|
-
});
|
|
87
|
+
});fdescribe('weird', () => {});
|
|
88
88
|
describe.skip('skip me', () => {});
|
|
89
89
|
const BOOP = "boop";
|
|
90
90
|
describe
|
|
@@ -94,13 +94,7 @@ describe
|
|
|
94
94
|
`;
|
|
95
95
|
|
|
96
96
|
ruleTester.run('padding-around-describe-blocks', rule, {
|
|
97
|
-
valid: [
|
|
98
|
-
valid,
|
|
99
|
-
{
|
|
100
|
-
code: invalid,
|
|
101
|
-
filename: 'src/component.jsx',
|
|
102
|
-
}
|
|
103
|
-
],
|
|
97
|
+
valid: [valid],
|
|
104
98
|
invalid: [
|
|
105
99
|
{
|
|
106
100
|
code: invalid,
|
|
@@ -152,7 +146,8 @@ ruleTester.run('padding-around-describe-blocks', rule, {
|
|
|
152
146
|
line: 27,
|
|
153
147
|
column: 1
|
|
154
148
|
},
|
|
155
|
-
]
|
|
149
|
+
],
|
|
150
|
+
output: valid,
|
|
156
151
|
},
|
|
157
152
|
]
|
|
158
153
|
});
|
|
@@ -106,13 +106,7 @@ describe('someText', () => {
|
|
|
106
106
|
`;
|
|
107
107
|
|
|
108
108
|
ruleTester.run('padding-around-expect-groups', rule, {
|
|
109
|
-
valid: [
|
|
110
|
-
valid,
|
|
111
|
-
{
|
|
112
|
-
code: invalid,
|
|
113
|
-
filename: 'src/component.jsx',
|
|
114
|
-
}
|
|
115
|
-
],
|
|
109
|
+
valid: [valid],
|
|
116
110
|
invalid: [
|
|
117
111
|
{
|
|
118
112
|
code: invalid,
|
|
@@ -154,7 +148,8 @@ ruleTester.run('padding-around-expect-groups', rule, {
|
|
|
154
148
|
line: 32,
|
|
155
149
|
column: 7
|
|
156
150
|
},
|
|
157
|
-
]
|
|
151
|
+
],
|
|
152
|
+
output: valid,
|
|
158
153
|
},
|
|
159
154
|
]
|
|
160
155
|
});
|
|
@@ -27,7 +27,7 @@ it('foo', () => {
|
|
|
27
27
|
// stuff
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
fit('bar', () => {
|
|
31
31
|
// stuff
|
|
32
32
|
});
|
|
33
33
|
|
|
@@ -51,10 +51,12 @@ describe('other bar', () => {
|
|
|
51
51
|
it.skip('skipping too', () => {});
|
|
52
52
|
});
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
xtest('weird', () => {});
|
|
55
55
|
|
|
56
56
|
test
|
|
57
57
|
.skip('skippy skip', () => {});
|
|
58
|
+
|
|
59
|
+
xit('bar foo', () => {});
|
|
58
60
|
`;
|
|
59
61
|
|
|
60
62
|
const invalid = `
|
|
@@ -63,7 +65,7 @@ const bar = 'baz';
|
|
|
63
65
|
it('foo', () => {
|
|
64
66
|
// stuff
|
|
65
67
|
});
|
|
66
|
-
|
|
68
|
+
fit('bar', () => {
|
|
67
69
|
// stuff
|
|
68
70
|
});
|
|
69
71
|
test('foo foo', () => {});
|
|
@@ -79,24 +81,19 @@ describe('other bar', () => {
|
|
|
79
81
|
});
|
|
80
82
|
test.skip('skipping', () => {}); // Another comment
|
|
81
83
|
it.skip('skipping too', () => {});
|
|
82
|
-
});
|
|
84
|
+
});xtest('weird', () => {});
|
|
83
85
|
test
|
|
84
86
|
.skip('skippy skip', () => {});
|
|
87
|
+
xit('bar foo', () => {});
|
|
85
88
|
`;
|
|
86
89
|
|
|
87
90
|
ruleTester.run('padding-around-test-blocks', rule, {
|
|
88
|
-
valid: [
|
|
89
|
-
valid,
|
|
90
|
-
{
|
|
91
|
-
code: invalid,
|
|
92
|
-
filename: 'src/component.jsx'
|
|
93
|
-
}
|
|
94
|
-
],
|
|
91
|
+
valid: [valid],
|
|
95
92
|
invalid: [
|
|
96
93
|
{
|
|
97
94
|
code: invalid,
|
|
98
95
|
filename: 'src/component.test.jsx',
|
|
99
|
-
errors:
|
|
96
|
+
errors: 11,
|
|
100
97
|
output: valid,
|
|
101
98
|
},
|
|
102
99
|
{
|
|
@@ -153,7 +150,13 @@ ruleTester.run('padding-around-test-blocks', rule, {
|
|
|
153
150
|
line: 24,
|
|
154
151
|
column: 1
|
|
155
152
|
},
|
|
153
|
+
{
|
|
154
|
+
message: 'Expected blank line before this statement.',
|
|
155
|
+
line: 26,
|
|
156
|
+
column: 1
|
|
157
|
+
},
|
|
156
158
|
],
|
|
159
|
+
output: valid,
|
|
157
160
|
},
|
|
158
161
|
],
|
|
159
162
|
});
|
package/tsconfig.json
CHANGED
package/lib/utils.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const padding_1 = require("./rules/padding");
|
|
4
|
-
exports.makeRule = (options) => {
|
|
5
|
-
return {
|
|
6
|
-
meta: {
|
|
7
|
-
fixable: 'whitespace',
|
|
8
|
-
},
|
|
9
|
-
create(context) {
|
|
10
|
-
const ctx = Object.create(context, { options: { value: options } });
|
|
11
|
-
Object.freeze(ctx);
|
|
12
|
-
return padding_1.default.create(ctx);
|
|
13
|
-
},
|
|
14
|
-
};
|
|
15
|
-
};
|
package/src/utils.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Rule } from 'eslint';
|
|
2
|
-
import padding from './rules/padding';
|
|
3
|
-
|
|
4
|
-
type TokenIdentifier =
|
|
5
|
-
| '*'
|
|
6
|
-
| 'afterAll'
|
|
7
|
-
| 'afterEach'
|
|
8
|
-
| 'beforeAll'
|
|
9
|
-
| 'beforeEach'
|
|
10
|
-
| 'describe'
|
|
11
|
-
| 'expect'
|
|
12
|
-
| 'it'
|
|
13
|
-
| 'test';
|
|
14
|
-
|
|
15
|
-
interface RuleOption {
|
|
16
|
-
blankLine: 'always' | 'any' | 'never';
|
|
17
|
-
prev: TokenIdentifier | TokenIdentifier[];
|
|
18
|
-
next: TokenIdentifier | TokenIdentifier[];
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// Returns a rule that wraps a call to padding.create and adds the given options
|
|
22
|
-
// to the RuleContext so users don't have to.
|
|
23
|
-
export const makeRule = (options: RuleOption[]): Rule.RuleModule => {
|
|
24
|
-
return {
|
|
25
|
-
meta: {
|
|
26
|
-
fixable: 'whitespace',
|
|
27
|
-
},
|
|
28
|
-
create(context: Rule.RuleContext) {
|
|
29
|
-
// Copy the RuleContext and overwrite options; it's frozen and
|
|
30
|
-
// we can't set them directly.
|
|
31
|
-
const ctx = Object.create(context, { options: { value: options } });
|
|
32
|
-
|
|
33
|
-
// Freeze it again
|
|
34
|
-
Object.freeze(ctx);
|
|
35
|
-
|
|
36
|
-
// Call the original create method with new context
|
|
37
|
-
return padding.create(ctx);
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
};
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Enforces single line padding before afterAll blocks
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
//------------------------------------------------------------------------------
|
|
6
|
-
// Requirements
|
|
7
|
-
//------------------------------------------------------------------------------
|
|
8
|
-
|
|
9
|
-
const { RuleTester } = require('eslint');
|
|
10
|
-
const rule = require('../../../lib').rules['padding-before-after-all-blocks'];
|
|
11
|
-
|
|
12
|
-
const ruleTester = new RuleTester({
|
|
13
|
-
parserOptions: {
|
|
14
|
-
ecmaVersion: 6,
|
|
15
|
-
},
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
//------------------------------------------------------------------------------
|
|
19
|
-
// Tests
|
|
20
|
-
//------------------------------------------------------------------------------
|
|
21
|
-
|
|
22
|
-
const invalid = `
|
|
23
|
-
const someText = 'abc';
|
|
24
|
-
afterAll(() => {
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
describe('someText', () => {
|
|
28
|
-
const something = 'abc';
|
|
29
|
-
// A comment
|
|
30
|
-
afterAll(() => {
|
|
31
|
-
// stuff
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
describe('someText', () => {
|
|
36
|
-
const something = 'abc';
|
|
37
|
-
afterAll(() => {
|
|
38
|
-
// stuff
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
`;
|
|
42
|
-
|
|
43
|
-
const valid = `
|
|
44
|
-
const someText = 'abc';
|
|
45
|
-
|
|
46
|
-
afterAll(() => {
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
describe('someText', () => {
|
|
50
|
-
const something = 'abc';
|
|
51
|
-
|
|
52
|
-
// A comment
|
|
53
|
-
afterAll(() => {
|
|
54
|
-
// stuff
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
describe('someText', () => {
|
|
59
|
-
const something = 'abc';
|
|
60
|
-
|
|
61
|
-
afterAll(() => {
|
|
62
|
-
// stuff
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
`;
|
|
66
|
-
|
|
67
|
-
ruleTester.run('padding-before-after-all-blocks', rule, {
|
|
68
|
-
valid: [
|
|
69
|
-
valid,
|
|
70
|
-
{
|
|
71
|
-
code: invalid,
|
|
72
|
-
filename: 'src/component.jsx'
|
|
73
|
-
}
|
|
74
|
-
],
|
|
75
|
-
invalid: [
|
|
76
|
-
{
|
|
77
|
-
code: invalid,
|
|
78
|
-
filename: 'src/component.test.jsx',
|
|
79
|
-
errors: 3,
|
|
80
|
-
output: valid,
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
code: invalid,
|
|
84
|
-
filename: 'src/component.test.js',
|
|
85
|
-
errors: [
|
|
86
|
-
{
|
|
87
|
-
message: 'Expected blank line before this statement.',
|
|
88
|
-
line: 3,
|
|
89
|
-
column: 1
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
message: 'Expected blank line before this statement.',
|
|
93
|
-
line: 9,
|
|
94
|
-
column: 3
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
message: 'Expected blank line before this statement.',
|
|
98
|
-
line: 16,
|
|
99
|
-
column: 3
|
|
100
|
-
},
|
|
101
|
-
]
|
|
102
|
-
},
|
|
103
|
-
]
|
|
104
|
-
});
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Enforces single line padding before afterEach blocks
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
//------------------------------------------------------------------------------
|
|
6
|
-
// Requirements
|
|
7
|
-
//------------------------------------------------------------------------------
|
|
8
|
-
|
|
9
|
-
const { RuleTester } = require('eslint');
|
|
10
|
-
const rule = require('../../../lib').rules['padding-before-after-each-blocks'];
|
|
11
|
-
|
|
12
|
-
const ruleTester = new RuleTester({
|
|
13
|
-
parserOptions: {
|
|
14
|
-
ecmaVersion: 6,
|
|
15
|
-
},
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
//------------------------------------------------------------------------------
|
|
19
|
-
// Tests
|
|
20
|
-
//------------------------------------------------------------------------------
|
|
21
|
-
|
|
22
|
-
const invalid = `
|
|
23
|
-
const someText = 'abc';
|
|
24
|
-
afterEach(() => {
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
describe('someText', () => {
|
|
28
|
-
const something = 'abc';
|
|
29
|
-
// A comment
|
|
30
|
-
afterEach(() => {
|
|
31
|
-
// stuff
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
describe('someText', () => {
|
|
36
|
-
const something = 'abc';
|
|
37
|
-
afterEach(() => {
|
|
38
|
-
// stuff
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
`;
|
|
42
|
-
|
|
43
|
-
const valid = `
|
|
44
|
-
const someText = 'abc';
|
|
45
|
-
|
|
46
|
-
afterEach(() => {
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
describe('someText', () => {
|
|
50
|
-
const something = 'abc';
|
|
51
|
-
|
|
52
|
-
// A comment
|
|
53
|
-
afterEach(() => {
|
|
54
|
-
// stuff
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
describe('someText', () => {
|
|
59
|
-
const something = 'abc';
|
|
60
|
-
|
|
61
|
-
afterEach(() => {
|
|
62
|
-
// stuff
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
`;
|
|
66
|
-
|
|
67
|
-
ruleTester.run('padding-before-after-each-blocks', rule, {
|
|
68
|
-
valid: [
|
|
69
|
-
valid,
|
|
70
|
-
{
|
|
71
|
-
code: invalid,
|
|
72
|
-
filename: 'src/component.jsx'
|
|
73
|
-
}
|
|
74
|
-
],
|
|
75
|
-
invalid: [
|
|
76
|
-
{
|
|
77
|
-
code: invalid,
|
|
78
|
-
errors: 3,
|
|
79
|
-
filename: 'src/component.test.jsx',
|
|
80
|
-
output: valid,
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
code: invalid,
|
|
84
|
-
filename: 'src/component.test.js',
|
|
85
|
-
errors: [
|
|
86
|
-
{
|
|
87
|
-
message: 'Expected blank line before this statement.',
|
|
88
|
-
line: 3,
|
|
89
|
-
column: 1
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
message: 'Expected blank line before this statement.',
|
|
93
|
-
line: 9,
|
|
94
|
-
column: 3
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
message: 'Expected blank line before this statement.',
|
|
98
|
-
line: 16,
|
|
99
|
-
column: 3
|
|
100
|
-
},
|
|
101
|
-
]
|
|
102
|
-
},
|
|
103
|
-
]
|
|
104
|
-
});
|