--- /dev/null
+Before:
+ " Load the file which defines the linter.
+ runtime ale_linters/terraform/terraform.vim
+ call ale#test#SetDirectory('/testplugin/test/test-files/terraform')
+ call ale#test#SetFilename('providers.tf')
+
+After:
+ " Unload all linters again.
+ call ale#linter#Reset()
+ call ale#test#RestoreDirectory()
+
+Execute(The output should be correct):
+ AssertEqual
+ \ [
+ \ {
+ \ 'lnum': 17,
+ \ 'col': 13,
+ \ 'filename': ale#path#Simplify(g:dir . '/providers.tf'),
+ \ 'type': 'W',
+ \ 'text': 'Terraform 0.13 and earlier allowed provider version',
+ \ },
+ \ {
+ \ 'lnum': 0,
+ \ 'col': 0,
+ \ 'filename': ale#path#Simplify(g:dir . '/providers.tf'),
+ \ 'type': 'E',
+ \ 'text': 'Plugin reinitialization required. Please run "terraform"',
+ \ }
+ \ ],
+ \ ale_linters#terraform#terraform#Handle(bufnr(''), [
+ \ '{',
+ \ '"valid": false,',
+ \ '"error_count": 1,',
+ \ '"warning_count": 1,',
+ \ '"diagnostics": [',
+ \ ' {',
+ \ ' "severity": "warning",',
+ \ ' "summary": "Version constraints inside provider configuration blocks are deprecated",',
+ \ ' "detail": "Terraform 0.13 and earlier allowed provider version",',
+ \ ' "range": {',
+ \ ' "filename": "providers.tf",',
+ \ ' "start": {',
+ \ ' "line": 17,',
+ \ ' "column": 13,',
+ \ ' "byte": 669',
+ \ ' },',
+ \ ' "end": {',
+ \ ' "line": 17,',
+ \ ' "column": 24,',
+ \ ' "byte": 680',
+ \ ' }',
+ \ ' }',
+ \ ' },',
+ \ ' {',
+ \ ' "severity": "error",',
+ \ ' "summary": "Could not load plugin",',
+ \ ' "detail": "Plugin reinitialization required. Please run \"terraform\""',
+ \ ' }',
+ \ ' ]',
+ \ '}',
+ \ ])
+
+Execute(Should use summary if detail not available):
+ AssertEqual
+ \ [
+ \ {
+ \ 'lnum': 91,
+ \ 'col': 41,
+ \ 'filename': ale#path#Simplify(g:dir . '/main.tf'),
+ \ 'type': 'E',
+ \ 'text': 'storage_os_disk: required field is not set',
+ \ }
+ \ ],
+ \ ale_linters#terraform#terraform#Handle(bufnr(''), [
+ \ '{',
+ \ ' "valid": false,',
+ \ ' "error_count": 1,',
+ \ ' "warning_count": 0,',
+ \ ' "diagnostics": [',
+ \ ' {',
+ \ ' "severity": "error",',
+ \ ' "summary": "storage_os_disk: required field is not set",',
+ \ ' "range": {',
+ \ ' "filename": "main.tf",',
+ \ ' "start": {',
+ \ ' "line": 91,',
+ \ ' "column": 41,',
+ \ ' "byte": 2381',
+ \ ' },',
+ \ ' "end": {',
+ \ ' "line": 91,',
+ \ ' "column": 41,',
+ \ ' "byte": 2381',
+ \ ' }',
+ \ ' }',
+ \ ' }',
+ \ ' ]',
+ \ '}'
+ \ ])
+
+Execute(Should use summary if detail available but empty):
+ AssertEqual
+ \ [
+ \ {
+ \ 'lnum': 91,
+ \ 'col': 41,
+ \ 'filename': ale#path#Simplify(g:dir . '/main.tf'),
+ \ 'type': 'E',
+ \ 'text': 'storage_os_disk: required field is not set',
+ \ }
+ \ ],
+ \ ale_linters#terraform#terraform#Handle(bufnr(''), [
+ \ '{',
+ \ ' "valid": false,',
+ \ ' "error_count": 1,',
+ \ ' "warning_count": 0,',
+ \ ' "diagnostics": [',
+ \ ' {',
+ \ ' "severity": "error",',
+ \ ' "summary": "storage_os_disk: required field is not set",',
+ \ ' "detail": "",',
+ \ ' "range": {',
+ \ ' "filename": "main.tf",',
+ \ ' "start": {',
+ \ ' "line": 91,',
+ \ ' "column": 41,',
+ \ ' "byte": 2381',
+ \ ' },',
+ \ ' "end": {',
+ \ ' "line": 91,',
+ \ ' "column": 41,',
+ \ ' "byte": 2381',
+ \ ' }',
+ \ ' }',
+ \ ' }',
+ \ ' ]',
+ \ '}'
+ \ ])