Before:
  call ale#assert#SetUpLinterTest('cpp', 'clazy')
  call ale#test#SetFilename('test.cpp')

After:
  call ale#assert#TearDownLinterTest()

Execute(The clazy command default should be correct):
  AssertLinter 'clazy-standalone',
  \ ale#Escape('clazy-standalone') . ' -checks=' . ale#Escape('level1') . ' %s'

Execute(You should be able to remove the -checks option for clazy-standalone):
  let b:ale_cpp_clazy_checks = []

  AssertLinter 'clazy-standalone', ale#Escape('clazy-standalone') . ' %s'

Execute(You should be able to set other checks for clazy-standalone):
  let b:ale_cpp_clazy_checks = ['level2', 'level3']

  AssertLinter 'clazy-standalone',
  \ ale#Escape('clazy-standalone')
  \   . ' -checks=' . ale#Escape('level2,level3') . ' %s'

Execute(You should be able to manually set compiler flags for clazy-standalone):
  let b:ale_cpp_clazy_options = '-qt4-compat'

  AssertLinter 'clazy-standalone',
  \ ale#Escape('clazy-standalone') . ' -checks=' . ale#Escape('level1') . ' -qt4-compat' . ' %s'
  \
Execute(The build directory should be configurable):
  let b:ale_c_build_dir = '/foo/bar'

  AssertLinter 'clazy-standalone',
  \ ale#Escape('clazy-standalone')
  \   . ' -checks=' . ale#Escape('level1') . ' -p ' . ale#Escape('/foo/bar') . ' %s'

Execute(The build directory should be ignored for header files):
  call ale#test#SetFilename('test.h')

  let b:ale_c_build_dir = '/foo/bar'

  AssertLinter 'clazy-standalone',
  \ ale#Escape('clazy-standalone') . ' -checks=' . ale#Escape('level1') . ' %s'

  call ale#test#SetFilename('test.hpp')

  AssertLinter 'clazy-standalone',
  \ ale#Escape('clazy-standalone') . ' -checks=' . ale#Escape('level1') . ' %s'

Execute(The executable should be configurable):
  let b:ale_cpp_clazy_executable = 'foobar'

  AssertLinter 'foobar',
  \ ale#Escape('foobar') . ' -checks=' . ale#Escape('level1') . ' %s'