Skip to content

Commit e3126a7

Browse files
jfmengelssindresorhus
authored andcommitted
Get nice feedback with RuleTester using AVA (#35)
1 parent 5494fbb commit e3126a7

File tree

6 files changed

+267
-276
lines changed

6 files changed

+267
-276
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
"ava": "*",
5252
"coveralls": "^2.11.9",
5353
"eslint": "^2.7.0",
54+
"eslint-ava-rule-tester": "^0.1.1",
5455
"nyc": "^6.4.0",
5556
"pify": "^2.3.0",
5657
"xo": "*"

test/catch-error-name.js

Lines changed: 40 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import test from 'ava';
2-
import {RuleTester} from 'eslint';
2+
import avaRuleTester from 'eslint-ava-rule-tester';
33
import rule from '../rules/catch-error-name';
44

5-
const ruleTester = new RuleTester({
5+
const ruleTester = avaRuleTester(test, {
66
env: {
77
es6: true
88
}
@@ -16,44 +16,42 @@ function testCase(code, name, error) {
1616
};
1717
}
1818

19-
test(() => {
20-
ruleTester.run('catch-error-name', rule, {
21-
valid: [
22-
testCase('try {} catch (err) {}'),
23-
testCase('try {} catch (error) {}', 'error'),
24-
testCase('try {} catch (outerError) { try {} catch (innerError) {} }'),
25-
testCase('obj.catch(err => {})'),
26-
testCase('obj.catch(() => {})'),
27-
testCase('obj.catch(error => {})', 'error'),
28-
testCase('obj.catch(outerError => { return obj2.catch(innerError => {}) })'),
29-
testCase('obj.catch(function (err) {})'),
30-
testCase('obj.catch(function () {})'),
31-
testCase('obj.catch(function (error) {})', 'error'),
32-
testCase('obj.catch(function (outerError) { return obj2.catch(function (innerError) {}) })'),
33-
testCase('obj.catch()'),
34-
testCase('foo(function (err) {})'),
35-
testCase('foo().then(function (err) {})'),
36-
testCase('foo().catch(function (err) {})')
37-
],
38-
invalid: [
39-
testCase('try {} catch (error) {}', null, true),
40-
testCase('try {} catch (err) {}', 'error', true),
41-
testCase('try {} catch (outerError) {}', null, true),
42-
testCase('try {} catch (innerError) {}', null, true),
43-
testCase('obj.catch(error => {})', null, true),
44-
testCase('obj.catch(err => {})', 'error', true),
45-
testCase('obj.catch(function (error) {})', null, true),
46-
testCase('obj.catch(function (err) {})', 'error', true),
47-
{
48-
code: `
49-
obj.catch(error => {});
50-
obj.catch(error => {});
51-
`,
52-
errors: [
53-
{ruleId: 'catch-error-name'},
54-
{ruleId: 'catch-error-name'}
55-
]
56-
}
57-
]
58-
});
19+
ruleTester.run('catch-error-name', rule, {
20+
valid: [
21+
testCase('try {} catch (err) {}'),
22+
testCase('try {} catch (error) {}', 'error'),
23+
testCase('try {} catch (outerError) { try {} catch (innerError) {} }'),
24+
testCase('obj.catch(err => {})'),
25+
testCase('obj.catch(() => {})'),
26+
testCase('obj.catch(error => {})', 'error'),
27+
testCase('obj.catch(outerError => { return obj2.catch(innerError => {}) })'),
28+
testCase('obj.catch(function (err) {})'),
29+
testCase('obj.catch(function () {})'),
30+
testCase('obj.catch(function (error) {})', 'error'),
31+
testCase('obj.catch(function (outerError) { return obj2.catch(function (innerError) {}) })'),
32+
testCase('obj.catch()'),
33+
testCase('foo(function (err) {})'),
34+
testCase('foo().then(function (err) {})'),
35+
testCase('foo().catch(function (err) {})')
36+
],
37+
invalid: [
38+
testCase('try {} catch (error) {}', null, true),
39+
testCase('try {} catch (err) {}', 'error', true),
40+
testCase('try {} catch (outerError) {}', null, true),
41+
testCase('try {} catch (innerError) {}', null, true),
42+
testCase('obj.catch(error => {})', null, true),
43+
testCase('obj.catch(err => {})', 'error', true),
44+
testCase('obj.catch(function (error) {})', null, true),
45+
testCase('obj.catch(function (err) {})', 'error', true),
46+
{
47+
code: `
48+
obj.catch(error => {});
49+
obj.catch(error => {});
50+
`,
51+
errors: [
52+
{ruleId: 'catch-error-name'},
53+
{ruleId: 'catch-error-name'}
54+
]
55+
}
56+
]
5957
});

test/filename-case.js

Lines changed: 137 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import test from 'ava';
2-
import {RuleTester} from 'eslint';
2+
import avaRuleTester from 'eslint-ava-rule-tester';
33
import rule from '../rules/filename-case';
44

5-
const ruleTester = new RuleTester({
5+
const ruleTester = avaRuleTester(test, {
66
env: {
77
es6: true
88
}
@@ -20,141 +20,139 @@ function testCase(filename, chosenCase, errorMessage) {
2020
};
2121
}
2222

23-
test(() => {
24-
ruleTester.run('filename-case', rule, {
25-
valid: [
26-
testCase('src/foo/bar.js', 'camelCase'),
27-
testCase('src/foo/fooBar.js', 'camelCase'),
28-
testCase('src/foo/bar.test.js', 'camelCase'),
29-
testCase('src/foo/fooBar.test.js', 'camelCase'),
30-
testCase('src/foo/fooBar.testUtils.js', 'camelCase'),
31-
testCase('src/foo/foo.js', 'snakeCase'),
32-
testCase('src/foo/foo_bar.js', 'snakeCase'),
33-
testCase('src/foo/foo.test.js', 'snakeCase'),
34-
testCase('src/foo/foo_bar.test.js', 'snakeCase'),
35-
testCase('src/foo/foo_bar.test_utils.js', 'snakeCase'),
36-
testCase('src/foo/foo.js', 'kebabCase'),
37-
testCase('src/foo/foo-bar.js', 'kebabCase'),
38-
testCase('src/foo/foo.test.js', 'kebabCase'),
39-
testCase('src/foo/foo-bar.test.js', 'kebabCase'),
40-
testCase('src/foo/foo-bar.test-utils.js', 'kebabCase'),
41-
testCase('src/foo/Foo.js', 'pascalCase'),
42-
testCase('src/foo/FooBar.js', 'pascalCase'),
43-
testCase('src/foo/Foo.Test.js', 'pascalCase'),
44-
testCase('src/foo/FooBar.Test.js', 'pascalCase'),
45-
testCase('src/foo/FooBar.TestUtils.js', 'pascalCase'),
46-
testCase('spec/iss47Spec.js', 'camelCase'),
47-
testCase('spec/iss47Spec100.js', 'camelCase'),
48-
testCase('spec/i18n.js', 'camelCase'),
49-
testCase('spec/iss47-spec.js', 'kebabCase'),
50-
testCase('spec/iss-47-spec.js', 'kebabCase'),
51-
testCase('spec/iss47-100spec.js', 'kebabCase'),
52-
testCase('spec/i18n.js', 'kebabCase'),
53-
testCase('spec/iss47_spec.js', 'snakeCase'),
54-
testCase('spec/iss_47_spec.js', 'snakeCase'),
55-
testCase('spec/iss47_100spec.js', 'snakeCase'),
56-
testCase('spec/i18n.js', 'snakeCase'),
57-
testCase('spec/Iss47Spec.js', 'pascalCase'),
58-
testCase('spec/Iss47.100Spec.js', 'pascalCase'),
59-
testCase('spec/I18n.js', 'pascalCase'),
60-
testCase('<text>', 'camelCase'),
61-
testCase('<text>', 'snakeCase'),
62-
testCase('<text>', 'kebabCase'),
63-
testCase('<text>', 'pascalCase'),
64-
testCase('src/foo/_fooBar.js', 'camelCase'),
65-
testCase('src/foo/___fooBar.js', 'camelCase'),
66-
testCase('src/foo/_foo_bar.js', 'snakeCase'),
67-
testCase('src/foo/___foo_bar.js', 'snakeCase'),
68-
testCase('src/foo/_foo-bar.js', 'kebabCase'),
69-
testCase('src/foo/___foo-bar.js', 'kebabCase'),
70-
testCase('src/foo/_FooBar.js', 'pascalCase'),
71-
testCase('src/foo/___FooBar.js', 'pascalCase')
72-
],
73-
invalid: [
74-
testCase('src/foo/foo_bar.js',
75-
undefined,
76-
'Filename is not in camel case. Rename it to `fooBar.js`.'
77-
),
78-
testCase('src/foo/foo_bar.js',
79-
'camelCase',
80-
'Filename is not in camel case. Rename it to `fooBar.js`.'
81-
),
82-
testCase('src/foo/foo_bar.test.js',
83-
'camelCase',
84-
'Filename is not in camel case. Rename it to `fooBar.test.js`.'
85-
),
86-
testCase('test/foo/foo_bar.test_utils.js',
87-
'camelCase',
88-
'Filename is not in camel case. Rename it to `fooBar.testUtils.js`.'
89-
),
90-
testCase('test/foo/fooBar.js',
91-
'snakeCase',
92-
'Filename is not in snake case. Rename it to `foo_bar.js`.'
93-
),
94-
testCase('test/foo/fooBar.test.js',
95-
'snakeCase',
96-
'Filename is not in snake case. Rename it to `foo_bar.test.js`.'
97-
),
98-
testCase('test/foo/fooBar.testUtils.js',
99-
'snakeCase',
100-
'Filename is not in snake case. Rename it to `foo_bar.test_utils.js`.'
101-
),
102-
testCase('test/foo/fooBar.js',
103-
'kebabCase',
104-
'Filename is not in kebab case. Rename it to `foo-bar.js`.'
105-
),
106-
testCase('test/foo/fooBar.test.js',
107-
'kebabCase',
108-
'Filename is not in kebab case. Rename it to `foo-bar.test.js`.'
109-
),
110-
testCase('test/foo/fooBar.testUtils.js',
111-
'kebabCase',
112-
'Filename is not in kebab case. Rename it to `foo-bar.test-utils.js`.'
113-
),
114-
testCase('test/foo/fooBar.js',
115-
'pascalCase',
116-
'Filename is not in pascal case. Rename it to `FooBar.js`.'
117-
),
118-
testCase('test/foo/foo_bar.test.js',
119-
'pascalCase',
120-
'Filename is not in pascal case. Rename it to `FooBar.Test.js`.'
121-
),
122-
testCase('test/foo/foo-bar.test-utils.js',
123-
'pascalCase',
124-
'Filename is not in pascal case. Rename it to `FooBar.TestUtils.js`.'
125-
),
126-
testCase('src/foo/_FOO-BAR.js',
127-
'camelCase',
128-
'Filename is not in camel case. Rename it to `_fooBar.js`.'
129-
),
130-
testCase('src/foo/___FOO-BAR.js',
131-
'camelCase',
132-
'Filename is not in camel case. Rename it to `___fooBar.js`.'
133-
),
134-
testCase('src/foo/_FOO-BAR.js',
135-
'snakeCase',
136-
'Filename is not in snake case. Rename it to `_foo_bar.js`.'
137-
),
138-
testCase('src/foo/___FOO-BAR.js',
139-
'snakeCase',
140-
'Filename is not in snake case. Rename it to `___foo_bar.js`.'
141-
),
142-
testCase('src/foo/_FOO-BAR.js',
143-
'kebabCase',
144-
'Filename is not in kebab case. Rename it to `_foo-bar.js`.'
145-
),
146-
testCase('src/foo/___FOO-BAR.js',
147-
'kebabCase',
148-
'Filename is not in kebab case. Rename it to `___foo-bar.js`.'
149-
),
150-
testCase('src/foo/_FOO-BAR.js',
151-
'pascalCase',
152-
'Filename is not in pascal case. Rename it to `_FooBar.js`.'
153-
),
154-
testCase('src/foo/___FOO-BAR.js',
155-
'pascalCase',
156-
'Filename is not in pascal case. Rename it to `___FooBar.js`.'
157-
)
158-
]
159-
});
23+
ruleTester.run('filename-case', rule, {
24+
valid: [
25+
testCase('src/foo/bar.js', 'camelCase'),
26+
testCase('src/foo/fooBar.js', 'camelCase'),
27+
testCase('src/foo/bar.test.js', 'camelCase'),
28+
testCase('src/foo/fooBar.test.js', 'camelCase'),
29+
testCase('src/foo/fooBar.testUtils.js', 'camelCase'),
30+
testCase('src/foo/foo.js', 'snakeCase'),
31+
testCase('src/foo/foo_bar.js', 'snakeCase'),
32+
testCase('src/foo/foo.test.js', 'snakeCase'),
33+
testCase('src/foo/foo_bar.test.js', 'snakeCase'),
34+
testCase('src/foo/foo_bar.test_utils.js', 'snakeCase'),
35+
testCase('src/foo/foo.js', 'kebabCase'),
36+
testCase('src/foo/foo-bar.js', 'kebabCase'),
37+
testCase('src/foo/foo.test.js', 'kebabCase'),
38+
testCase('src/foo/foo-bar.test.js', 'kebabCase'),
39+
testCase('src/foo/foo-bar.test-utils.js', 'kebabCase'),
40+
testCase('src/foo/Foo.js', 'pascalCase'),
41+
testCase('src/foo/FooBar.js', 'pascalCase'),
42+
testCase('src/foo/Foo.Test.js', 'pascalCase'),
43+
testCase('src/foo/FooBar.Test.js', 'pascalCase'),
44+
testCase('src/foo/FooBar.TestUtils.js', 'pascalCase'),
45+
testCase('spec/iss47Spec.js', 'camelCase'),
46+
testCase('spec/iss47Spec100.js', 'camelCase'),
47+
testCase('spec/i18n.js', 'camelCase'),
48+
testCase('spec/iss47-spec.js', 'kebabCase'),
49+
testCase('spec/iss-47-spec.js', 'kebabCase'),
50+
testCase('spec/iss47-100spec.js', 'kebabCase'),
51+
testCase('spec/i18n.js', 'kebabCase'),
52+
testCase('spec/iss47_spec.js', 'snakeCase'),
53+
testCase('spec/iss_47_spec.js', 'snakeCase'),
54+
testCase('spec/iss47_100spec.js', 'snakeCase'),
55+
testCase('spec/i18n.js', 'snakeCase'),
56+
testCase('spec/Iss47Spec.js', 'pascalCase'),
57+
testCase('spec/Iss47.100Spec.js', 'pascalCase'),
58+
testCase('spec/I18n.js', 'pascalCase'),
59+
testCase('<text>', 'camelCase'),
60+
testCase('<text>', 'snakeCase'),
61+
testCase('<text>', 'kebabCase'),
62+
testCase('<text>', 'pascalCase'),
63+
testCase('src/foo/_fooBar.js', 'camelCase'),
64+
testCase('src/foo/___fooBar.js', 'camelCase'),
65+
testCase('src/foo/_foo_bar.js', 'snakeCase'),
66+
testCase('src/foo/___foo_bar.js', 'snakeCase'),
67+
testCase('src/foo/_foo-bar.js', 'kebabCase'),
68+
testCase('src/foo/___foo-bar.js', 'kebabCase'),
69+
testCase('src/foo/_FooBar.js', 'pascalCase'),
70+
testCase('src/foo/___FooBar.js', 'pascalCase')
71+
],
72+
invalid: [
73+
testCase('src/foo/foo_bar.js',
74+
undefined,
75+
'Filename is not in camel case. Rename it to `fooBar.js`.'
76+
),
77+
testCase('src/foo/foo_bar.js',
78+
'camelCase',
79+
'Filename is not in camel case. Rename it to `fooBar.js`.'
80+
),
81+
testCase('src/foo/foo_bar.test.js',
82+
'camelCase',
83+
'Filename is not in camel case. Rename it to `fooBar.test.js`.'
84+
),
85+
testCase('test/foo/foo_bar.test_utils.js',
86+
'camelCase',
87+
'Filename is not in camel case. Rename it to `fooBar.testUtils.js`.'
88+
),
89+
testCase('test/foo/fooBar.js',
90+
'snakeCase',
91+
'Filename is not in snake case. Rename it to `foo_bar.js`.'
92+
),
93+
testCase('test/foo/fooBar.test.js',
94+
'snakeCase',
95+
'Filename is not in snake case. Rename it to `foo_bar.test.js`.'
96+
),
97+
testCase('test/foo/fooBar.testUtils.js',
98+
'snakeCase',
99+
'Filename is not in snake case. Rename it to `foo_bar.test_utils.js`.'
100+
),
101+
testCase('test/foo/fooBar.js',
102+
'kebabCase',
103+
'Filename is not in kebab case. Rename it to `foo-bar.js`.'
104+
),
105+
testCase('test/foo/fooBar.test.js',
106+
'kebabCase',
107+
'Filename is not in kebab case. Rename it to `foo-bar.test.js`.'
108+
),
109+
testCase('test/foo/fooBar.testUtils.js',
110+
'kebabCase',
111+
'Filename is not in kebab case. Rename it to `foo-bar.test-utils.js`.'
112+
),
113+
testCase('test/foo/fooBar.js',
114+
'pascalCase',
115+
'Filename is not in pascal case. Rename it to `FooBar.js`.'
116+
),
117+
testCase('test/foo/foo_bar.test.js',
118+
'pascalCase',
119+
'Filename is not in pascal case. Rename it to `FooBar.Test.js`.'
120+
),
121+
testCase('test/foo/foo-bar.test-utils.js',
122+
'pascalCase',
123+
'Filename is not in pascal case. Rename it to `FooBar.TestUtils.js`.'
124+
),
125+
testCase('src/foo/_FOO-BAR.js',
126+
'camelCase',
127+
'Filename is not in camel case. Rename it to `_fooBar.js`.'
128+
),
129+
testCase('src/foo/___FOO-BAR.js',
130+
'camelCase',
131+
'Filename is not in camel case. Rename it to `___fooBar.js`.'
132+
),
133+
testCase('src/foo/_FOO-BAR.js',
134+
'snakeCase',
135+
'Filename is not in snake case. Rename it to `_foo_bar.js`.'
136+
),
137+
testCase('src/foo/___FOO-BAR.js',
138+
'snakeCase',
139+
'Filename is not in snake case. Rename it to `___foo_bar.js`.'
140+
),
141+
testCase('src/foo/_FOO-BAR.js',
142+
'kebabCase',
143+
'Filename is not in kebab case. Rename it to `_foo-bar.js`.'
144+
),
145+
testCase('src/foo/___FOO-BAR.js',
146+
'kebabCase',
147+
'Filename is not in kebab case. Rename it to `___foo-bar.js`.'
148+
),
149+
testCase('src/foo/_FOO-BAR.js',
150+
'pascalCase',
151+
'Filename is not in pascal case. Rename it to `_FooBar.js`.'
152+
),
153+
testCase('src/foo/___FOO-BAR.js',
154+
'pascalCase',
155+
'Filename is not in pascal case. Rename it to `___FooBar.js`.'
156+
)
157+
]
160158
});

0 commit comments

Comments
 (0)