Before:
  Save g:ale_r_lintr_options

  unlet! g:ale_r_lintr_options
  unlet! b:ale_r_lintr_options

  runtime ale_linters/r/lintr.vim

After:
  Restore

  unlet! b:ale_r_lintr_options

  call ale#linter#Reset()

Execute(The default lintr command should be correct):
  AssertEqual
  \   'cd ' . ale#Escape(getcwd()) . ' && '
  \   . 'Rscript -e '
  \   . ale#Escape('suppressPackageStartupMessages(library(lintr));'
      \   .            'lint(cache = FALSE, commandArgs(TRUE), '
      \   .            'with_defaults())')
  \   . ' %t',
  \ ale_linters#r#lintr#GetCommand(bufnr(''))

Execute(The lintr options should be configurable):
  let b:ale_r_lintr_options = 'with_defaults(object_usage_linter = NULL)'

  AssertEqual
  \   'cd ' . ale#Escape(getcwd()) . ' && '
  \   . 'Rscript -e '
  \   . ale#Escape('suppressPackageStartupMessages(library(lintr));'
      \   .            'lint(cache = FALSE, commandArgs(TRUE), '
      \   .            'with_defaults(object_usage_linter = NULL))')
  \   . ' %t',
  \ ale_linters#r#lintr#GetCommand(bufnr(''))

Execute(If the lint_package flag is set, lintr::lint_package should be called):
  let b:ale_r_lintr_lint_package = 1

  AssertEqual
  \   'cd ' . ale#Escape(getcwd()) . ' && '
  \   . 'Rscript -e '
  \   . ale#Escape('suppressPackageStartupMessages(library(lintr));'
      \    .           'lint_package(cache = FALSE, '
      \    .           'linters = with_defaults())')
  \   . ' %t',
  \ ale_linters#r#lintr#GetCommand(bufnr(''))