Before:
  runtime ale_linters/d/dmd.vim
  call ale#test#SetDirectory('/testplugin/test/dmd')
  call ale#test#SetFilename('test.d')

After:
  call ale#linter#Reset()
  call ale#test#RestoreDirectory()

Execute(Basic errors should be handled by dmd):
  AssertEqual
  \ [
  \   {
  \     'filename': ale#path#Simplify(g:dir . '/test.d'),
  \     'lnum': '5',
  \     'col' : '8',
  \     'type': 'E',
  \     'text': 'module weak_reference is in file ''dstruct/weak_reference.d'' which cannot be read'
  \   },
  \   {
  \     'filename': ale#path#Simplify(g:dir . '/test.d'),
  \     'lnum': '20',
  \     'col' : '10',
  \     'type': 'W',
  \     'text': 'function test.thisoldfunc is deprecated'
  \   },
  \   {
  \     'filename': ale#path#Simplify(g:dir . '/foo.d'),
  \     'lnum': '230',
  \     'col' : '9',
  \     'type': 'W',
  \     'text': 'statement is not reachable'
  \   }
  \ ],
  \ ale_linters#d#dmd#Handle(bufnr(''), [
  \ 'test.d(5,8): Error: module weak_reference is in file ''dstruct/weak_reference.d'' which cannot be read',
  \ 'import path[0] = source',
  \ 'import path[1] = /usr/include/dlang/dmd',
  \ ale#path#Simplify(g:dir . '/test.d') . '(20,10): Deprecation: function test.thisoldfunc is deprecated',
  \ 'foo.d(230,9): Warning: statement is not reachable',
  \ ])
