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',
  \ '        }',
  \ '      }',
  \ '    }',
  \ '  ]',
  \ '}'
  \ ])
