summaryrefslogtreecommitdiff
path: root/test/handler/test_eslint_handler.vader
blob: 6d84ff7ea1849f9b5e40b8119341fccf44864922 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Before:
  runtime ale_linters/javascript/eslint.vim

Execute(The eslint handler should parse lines correctly):
  AssertEqual
  \ [
  \   {
  \     'bufnr': 347,
  \     'lnum': 47,
  \     'col': 14,
  \     'text': 'Missing trailing comma. [Warning/comma-dangle]',
  \     'type': 'W',
  \   },
  \   {
  \     'bufnr': 347,
  \     'lnum': 56,
  \     'col': 41,
  \     'text': 'Missing semicolon. [Error/semi]',
  \     'type': 'E',
  \   },
  \   {
  \     'bufnr': 347,
  \     'lnum': 13,
  \     'col': 3,
  \     'text': 'Parsing error: Unexpected token',
  \     'type': 'E',
  \   },
  \ ],
  \ ale_linters#javascript#eslint#Handle(347, [
  \   'This line should be ignored completely',
  \   '/path/to/some-filename.js:47:14: Missing trailing comma. [Warning/comma-dangle]',
  \   '/path/to/some-filename.js:56:41: Missing semicolon. [Error/semi]',
  \   'This line should be ignored completely',
  \   '/path/to/some-filename.js:13:3: Parsing error: Unexpected token',
  \ ])

Execute(The eslint handler should print a message about a missing configuration file):
  let g:config_error_lines = [
  \   '',
  \   'Oops! Something went wrong! :(',
  \   '',
  \   'ESLint couldn''t find a configuration file. To set up a configuration file for this project, please run:',
  \   '    eslint --init',
  \   '',
  \   'ESLint looked for configuration files in /some/path/or/other and its ancestors.',
  \   '',
  \   'If you think you already have a configuration file or if you need more help, please stop by the ESLint chat room: https://gitter.im/eslint/eslint',
  \   '',
  \ ]

  AssertEqual
  \ [{
  \   'lnum': 1,
  \   'text': 'eslint configuration error (type :ALEDetail for more information)',
  \   'detail': join(g:config_error_lines, "\n"),
  \ }],
  \ ale_linters#javascript#eslint#Handle(347, g:config_error_lines[:])

Execute(The eslint handler should print a message for config parsing errors):
  let g:config_error_lines = [
  \ 'Cannot read config file: /some/path/or/other/.eslintrc.js',
  \ 'Error: Unexpected token <<',
  \ '/some/path/or/other/.eslintrc.js:1',
  \ '(function (exports, require, module, __filename, __dirname) { <<<>>>',
  \ '                                                              ^^',
  \ 'SyntaxError: Unexpected token <<',
  \ '    at Object.exports.runInThisContext (vm.js:76:16)',
  \ '    at Module._compile (module.js:528:28)',
  \ '    at Object.Module._extensions..js (module.js:565:10)',
  \ '    at Module.load (module.js:473:32)',
  \ '    at tryModuleLoad (module.js:432:12)',
  \ '    at Function.Module._load (module.js:424:3)',
  \ '    at Module.require (module.js:483:17)',
  \ '    at require (internal/module.js:20:19)',
  \ '    at module.exports (/usr/local/lib/node_modules/eslint/node_modules/require-uncached/index.js:14:12)',
  \ '    at loadJSConfigFile (/usr/local/lib/node_modules/eslint/lib/config/config-file.js:160:16)',
  \]

  AssertEqual
  \ [{
  \   'lnum': 1,
  \   'text': 'eslint configuration error (type :ALEDetail for more information)',
  \   'detail': join(g:config_error_lines, "\n"),
  \ }],
  \ ale_linters#javascript#eslint#Handle(347, g:config_error_lines[:])

After:
  unlet! g:config_error_lines
  call ale#linter#Reset()

Execute(The eslint handler should print a message for invalid configuration settings):
  let g:config_error_lines = [
  \ '/home/w0rp/git/wazoku/wazoku-spotlight/.eslintrc.js:',
  \ ' Configuration for rule "indent" is invalid:',
  \ ' Value "off" is the wrong type.',
  \ '',
  \ 'Error: /home/w0rp/git/wazoku/wazoku-spotlight/.eslintrc.js:',
  \ ' Configuration for rule "indent" is invalid:',
  \ ' Value "off" is the wrong type.',
  \ '',
  \ '    at validateRuleOptions (/usr/local/lib/node_modules/eslint/lib/config/config-validator.js:115:15)',
  \ '    at /usr/local/lib/node_modules/eslint/lib/config/config-validator.js:162:13',
  \ '    at Array.forEach (native)',
  \ '    at Object.validate (/usr/local/lib/node_modules/eslint/lib/config/config-validator.js:161:35)',
  \ '    at Object.load (/usr/local/lib/node_modules/eslint/lib/config/config-file.js:522:19)',
  \ '    at loadConfig (/usr/local/lib/node_modules/eslint/lib/config.js:63:33)',
  \ '    at getLocalConfig (/usr/local/lib/node_modules/eslint/lib/config.js:130:29)',
  \ '    at Config.getConfig (/usr/local/lib/node_modules/eslint/lib/config.js:256:22)',
  \ '    at processText (/usr/local/lib/node_modules/eslint/lib/cli-engine.js:224:33)',
  \ '    at CLIEngine.executeOnText (/usr/local/lib/node_modules/eslint/lib/cli-engine.js:756:26)',
  \]

  AssertEqual
  \ [{
  \   'lnum': 1,
  \   'text': 'eslint configuration error (type :ALEDetail for more information)',
  \   'detail': join(g:config_error_lines, "\n"),
  \ }],
  \ ale_linters#javascript#eslint#Handle(347, g:config_error_lines[:])