Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
epidemian
GitHub Repository: epidemian/eslint-plugin-import
Path: blob/main/tests/src/cli.js
829 views
1
/**
2
* tests that require fully booting up ESLint
3
*/
4
import path from 'path';
5
6
import { expect } from 'chai';
7
import { CLIEngine, ESLint } from 'eslint';
8
import eslintPkg from 'eslint/package.json';
9
import semver from 'semver';
10
import * as importPlugin from '../../src/index';
11
12
describe('CLI regression tests', function () {
13
describe('issue #210', function () {
14
let eslint;
15
let cli;
16
before(function () {
17
if (ESLint) {
18
eslint = new ESLint({
19
useEslintrc: false,
20
overrideConfigFile: './tests/files/issue210.config.js',
21
rulePaths: ['./src/rules'],
22
overrideConfig: {
23
rules: {
24
'named': 2,
25
},
26
},
27
plugins: { 'eslint-plugin-import': importPlugin },
28
});
29
} else {
30
cli = new CLIEngine({
31
useEslintrc: false,
32
configFile: './tests/files/issue210.config.js',
33
rulePaths: ['./src/rules'],
34
rules: {
35
'named': 2,
36
},
37
});
38
cli.addPlugin('eslint-plugin-import', importPlugin);
39
}
40
});
41
it("doesn't throw an error on gratuitous, erroneous self-reference", function () {
42
if (eslint) {
43
return eslint.lintFiles(['./tests/files/issue210.js'])
44
.catch(() => expect.fail());
45
} else {
46
expect(() => cli.executeOnFiles(['./tests/files/issue210.js'])).not.to.throw();
47
}
48
});
49
});
50
51
describe('issue #1645', function () {
52
let eslint;
53
let cli;
54
beforeEach(function () {
55
if (semver.satisfies(eslintPkg.version, '< 6')) {
56
this.skip();
57
} else {
58
if (ESLint) {
59
eslint = new ESLint({
60
useEslintrc: false,
61
overrideConfigFile: './tests/files/just-json-files/.eslintrc.json',
62
rulePaths: ['./src/rules'],
63
ignore: false,
64
plugins: { 'eslint-plugin-import': importPlugin },
65
});
66
} else {
67
cli = new CLIEngine({
68
useEslintrc: false,
69
configFile: './tests/files/just-json-files/.eslintrc.json',
70
rulePaths: ['./src/rules'],
71
ignore: false,
72
});
73
cli.addPlugin('eslint-plugin-import', importPlugin);
74
}
75
}
76
});
77
78
it('throws an error on invalid JSON', () => {
79
const invalidJSON = './tests/files/just-json-files/invalid.json';
80
if (eslint) {
81
return eslint.lintFiles([invalidJSON]).then(results => {
82
expect(results).to.eql(
83
[
84
{
85
filePath: path.resolve(invalidJSON),
86
messages: [
87
{
88
column: 2,
89
endColumn: 3,
90
endLine: 1,
91
line: 1,
92
message: 'Expected a JSON object, array or literal.',
93
nodeType: results[0].messages[0].nodeType, // we don't care about this one
94
ruleId: 'json/*',
95
severity: 2,
96
source: results[0].messages[0].source, // NewLine-characters might differ depending on git-settings
97
},
98
],
99
errorCount: 1,
100
...(semver.satisfies(eslintPkg.version, '>= 7.32 || ^8.0.0') && {
101
fatalErrorCount: 0,
102
}),
103
warningCount: 0,
104
fixableErrorCount: 0,
105
fixableWarningCount: 0,
106
source: results[0].source, // NewLine-characters might differ depending on git-settings
107
usedDeprecatedRules: results[0].usedDeprecatedRules, // we don't care about this one
108
},
109
],
110
);
111
});
112
} else {
113
const results = cli.executeOnFiles([invalidJSON]);
114
expect(results).to.eql({
115
results: [
116
{
117
filePath: path.resolve(invalidJSON),
118
messages: [
119
{
120
column: 2,
121
endColumn: 3,
122
endLine: 1,
123
line: 1,
124
message: 'Expected a JSON object, array or literal.',
125
nodeType: results.results[0].messages[0].nodeType, // we don't care about this one
126
ruleId: 'json/*',
127
severity: 2,
128
source: results.results[0].messages[0].source, // NewLine-characters might differ depending on git-settings
129
},
130
],
131
errorCount: 1,
132
warningCount: 0,
133
fixableErrorCount: 0,
134
fixableWarningCount: 0,
135
source: results.results[0].source, // NewLine-characters might differ depending on git-settings
136
},
137
],
138
errorCount: 1,
139
warningCount: 0,
140
fixableErrorCount: 0,
141
fixableWarningCount: 0,
142
usedDeprecatedRules: results.usedDeprecatedRules, // we don't care about this one
143
});
144
}
145
});
146
});
147
});
148
149