test_elmmake_handler.vader
1 Before: 2 runtime ale_linters/elm/make.vim 3 4 After: 5 unlet! g:config_error_lines 6 7 call ale#linter#Reset() 8 9 10 " Elm 0.19 11 12 Execute(The elm-make handler should parse Elm 0.19 general problems correctly): 13 AssertEqual 14 \ [ 15 \ { 16 \ 'lnum': 1, 17 \ 'type': 'E', 18 \ 'text': "error details\n\nstyled details" 19 \ } 20 \ ], 21 \ ale_linters#elm#make#Handle(347, [ 22 \ json_encode({ 23 \ 'type': 'error', 24 \ 'path': ale#util#Tempname() . '/Module.elm', 25 \ 'title': 'UNKNOWN IMPORT', 26 \ 'message': ["error details\n\n", { 'string': 'styled details' }] 27 \ }), 28 \ ]) 29 30 Execute(The elm-make handler should parse Elm 0.19 compilation errors correctly): 31 AssertEqual 32 \ [ 33 \ { 34 \ 'lnum': 404, 35 \ 'col': 1, 36 \ 'end_lnum': 408, 37 \ 'end_col': 18, 38 \ 'type': 'E', 39 \ 'text': "error details 1\n\nstyled details" 40 \ }, 41 \ { 42 \ 'lnum': 406, 43 \ 'col': 5, 44 \ 'end_lnum': 407, 45 \ 'end_col': 17, 46 \ 'type': 'E', 47 \ 'text': 'error details 2', 48 \ }, 49 \ { 50 \ 'lnum': 406, 51 \ 'col': 5, 52 \ 'end_lnum': 406, 53 \ 'end_col': 93, 54 \ 'type': 'E', 55 \ 'text': 'error details 3', 56 \ }, 57 \ ], 58 \ ale_linters#elm#make#Handle(347, [ 59 \ json_encode({ 60 \ 'type': 'compile-errors', 61 \ 'errors': [ 62 \ { 63 \ 'path': ale#util#Tempname() . '/Module.elm', 64 \ 'problems': [ 65 \ { 66 \ 'title': 'TYPE MISMATCH', 67 \ 'message': ["error details 1\n\n", { 'string': 'styled details' }], 68 \ 'region': { 'start': { 'line': 404, 'column': 1 }, 'end': { 'line': 408, 'column': 18 } } 69 \ }, 70 \ { 71 \ 'title': 'TYPE MISMATCH', 72 \ 'message': ['error details 2'], 73 \ 'region': { 'start': {'line': 406, 'column': 5}, 'end': {'line': 407, 'column': 17 } } 74 \ }, 75 \ { 76 \ 'title': 'TYPE MISMATCH', 77 \ 'message': ['error details 3'], 78 \ 'region': { 'start': { 'line': 406, 'column': 5}, 'end': {'line': 406, 'column': 93 } } 79 \ } 80 \ ] 81 \ } 82 \ ] 83 \ }), 84 \ ]) 85 86 Execute(The elm-make handler should handle errors in Elm 0.19 imported modules): 87 AssertEqual 88 \ [ 89 \ { 90 \ 'lnum': 1, 91 \ 'type': 'E', 92 \ 'text': "src/Module.elm - error details\n\nstyled details", 93 \ 'detail': "src/Module.elm ----------\n\nerror details\n\nstyled details" 94 \ }, 95 \ { 96 \ 'lnum': 1, 97 \ 'type': 'E', 98 \ 'text': "Elm - error details\n\nstyled details", 99 \ 'detail': "Elm ----------\n\nerror details\n\nstyled details" 100 \ }, 101 \ { 102 \ 'lnum': 1, 103 \ 'type': 'E', 104 \ 'text': "src/Module.elm:404 - error details\n\nstyled details", 105 \ 'detail': "src/Module.elm:404 ----------\n\nerror details\n\nstyled details" 106 \ }, 107 \ ], 108 \ ale_linters#elm#make#Handle(347, [ 109 \ json_encode({ 110 \ 'type': 'error', 111 \ 'path': 'src/Module.elm', 112 \ 'title': 'UNKNOWN IMPORT', 113 \ 'message': ["error details\n\n", { 'string': 'styled details' }] 114 \ }), 115 \ json_encode({ 116 \ 'type': 'error', 117 \ 'path': v:null, 118 \ 'title': 'UNKNOWN IMPORT', 119 \ 'message': ["error details\n\n", { 'string': 'styled details' }] 120 \ }), 121 \ json_encode({ 122 \ 'type': 'compile-errors', 123 \ 'errors': [ 124 \ { 125 \ 'path': 'src/Module.elm', 126 \ 'problems': [ 127 \ { 128 \ 'title': 'TYPE MISMATCH', 129 \ 'message': ["error details\n\n", { 'string': 'styled details' }], 130 \ 'region': { 'start': { 'line': 404, 'column': 1 }, 'end': { 'line': 408, 'column': 18 } } 131 \ } 132 \ ] 133 \ } 134 \ ] 135 \ }), 136 \ ]) 137 138 139 " Elm 0.18 140 141 Execute(The elm-make handler should parse Elm 0.18 compilation errors correctly): 142 AssertEqual 143 \ [ 144 \ { 145 \ 'lnum': 33, 146 \ 'col': 1, 147 \ 'end_lnum': 33, 148 \ 'end_col': 19, 149 \ 'type': 'W', 150 \ 'text': 'warning overview', 151 \ 'detail': "warning overview\n\nwarning details", 152 \ }, 153 \ { 154 \ 'lnum': 404, 155 \ 'col': 1, 156 \ 'end_lnum': 408, 157 \ 'end_col': 18, 158 \ 'type': 'E', 159 \ 'text': 'error overview 1', 160 \ 'detail': "error overview 1\n\nerror details 1", 161 \ }, 162 \ { 163 \ 'lnum': 406, 164 \ 'col': 5, 165 \ 'end_lnum': 407, 166 \ 'end_col': 17, 167 \ 'type': 'E', 168 \ 'text': 'error overview 2', 169 \ 'detail': "error overview 2\n\nerror details 2", 170 \ }, 171 \ { 172 \ 'lnum': 406, 173 \ 'col': 5, 174 \ 'end_lnum': 406, 175 \ 'end_col': 93, 176 \ 'type': 'E', 177 \ 'text': 'error overview 3', 178 \ 'detail': "error overview 3\n\nerror details 3", 179 \ }, 180 \ ], 181 \ ale_linters#elm#make#Handle(347, [ 182 \ json_encode([ 183 \ { 184 \ 'tag': 'unused import', 185 \ 'overview': 'warning overview', 186 \ 'details': 'warning details', 187 \ 'region': {'start': { 'line': 33, 'column': 1 }, 'end': { 'line': 33, 'column': 19 } }, 188 \ 'type': 'warning', 189 \ 'file': ale#util#Tempname() . '/Module.elm', 190 \ } 191 \ ]), 192 \ json_encode([ 193 \ { 194 \ 'tag': 'TYPE MISMATCH', 195 \ 'overview': 'error overview 1', 196 \ 'subregion': { 'start': { 'line': 406, 'column': 5 }, 'end': { 'line': 408, 'column': 18 } }, 197 \ 'details': 'error details 1', 198 \ 'region': { 'start': { 'line': 404, 'column': 1 }, 'end': { 'line': 408, 'column': 18 } }, 199 \ 'type': 'error', 200 \ 'file': ale#util#Tempname() . '/Module.elm', 201 \ }, 202 \ { 203 \ 'tag': 'TYPE MISMATCH', 204 \ 'overview': 'error overview 2', 205 \ 'subregion': { 'start': { 'line': 407, 'column': 12 }, 'end': { 'line': 407, 'column': 17 } }, 206 \ 'details': 'error details 2', 207 \ 'region': { 'start': { 'line': 406, 'column': 5}, 'end': { 'line': 407, 'column': 17 } }, 208 \ 'type':'error', 209 \ 'file': ale#util#Tempname() . '/Module.elm', 210 \ }, 211 \ { 212 \ 'tag': 'TYPE MISMATCH', 213 \ 'overview': 'error overview 3', 214 \ 'subregion': { 'start': { 'line': 406, 'column': 88 }, 'end': { 'line': 406, 'column': 93 } }, 215 \ 'details': 'error details 3', 216 \ 'region': { 'start': { 'line': 406, 'column': 5 }, 'end': { 'line': 406, 'column': 93 } }, 217 \ 'type':'error', 218 \ 'file': ale#util#Tempname() . '/Module.elm', 219 \ } 220 \ ]), 221 \ ]) 222 223 Execute(The elm-make handler should handle errors in Elm 0.18 imported modules): 224 AssertEqual 225 \ [ 226 \ { 227 \ 'lnum': 1, 228 \ 'type': 'E', 229 \ 'text': 'src/Module.elm:33 - error overview', 230 \ 'detail': "src/Module.elm:33 ----------\n\nerror overview\n\nerror details" 231 \ } 232 \ ], 233 \ ale_linters#elm#make#Handle(347, [ 234 \ json_encode([ 235 \ { 236 \ 'tag': 'unused import', 237 \ 'overview': 'warning overview', 238 \ 'details': 'warning details', 239 \ 'region': {'start': { 'line': 33, 'column': 1 }, 'end': { 'line': 33, 'column': 19 } }, 240 \ 'type': 'warning', 241 \ 'file': 'src/Module.elm', 242 \ }, 243 \ { 244 \ 'tag': 'type error', 245 \ 'overview': 'error overview', 246 \ 'details': 'error details', 247 \ 'region': {'start': { 'line': 33, 'column': 1 }, 'end': { 'line': 33, 'column': 19 } }, 248 \ 'type': 'error', 249 \ 'file': 'src/Module.elm', 250 \ } 251 \ ]), 252 \ ]) 253 254 " Generic 255 256 Execute(The elm-make handler should put an error on the first line if a line cannot be parsed): 257 AssertEqual 258 \ [ 259 \ { 260 \ 'lnum': 404, 261 \ 'col': 1, 262 \ 'end_lnum': 408, 263 \ 'end_col': 18, 264 \ 'type': 'E', 265 \ 'text': "error details 1\n\nstyled details" 266 \ }, 267 \ { 268 \ 'lnum': 1, 269 \ 'type': 'E', 270 \ 'text': 'Not JSON', 271 \ 'detail': "Not JSON\nAlso not JSON", 272 \ }, 273 \ ], 274 \ ale_linters#elm#make#Handle(347, [ 275 \ json_encode({ 276 \ 'type': 'compile-errors', 277 \ 'errors': [ 278 \ { 279 \ 'path': ale#util#Tempname() . '/Module.elm', 280 \ 'problems': [ 281 \ { 282 \ 'title': 'TYPE MISMATCH', 283 \ 'message': ["error details 1\n\n", { 'string': 'styled details' }], 284 \ 'region': { 'start': { 'line': 404, 'column': 1 }, 'end': { 'line': 408, 'column': 18 } } 285 \ } 286 \ ] 287 \ } 288 \ ] 289 \ }), 290 \ 'Not JSON', 291 \ 'Also not JSON', 292 \ ]) 293 294 Execute(The elm-make handler should ignore success lines): 295 AssertEqual 296 \ [], 297 \ ale_linters#elm#make#Handle(347, [ 298 \ 'Successfully generated /dev/null', 299 \ ])