diff options
Diffstat (limited to '')
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | indent/terraform.vim | 4 | ||||
| -rwxr-xr-x | scripts/build | 15 | ||||
| -rwxr-xr-x | scripts/test | 70 | ||||
| -rw-r--r-- | scripts/test_filetypes.vim | 2 | ||||
| -rw-r--r-- | tests/extensions.vim | 4 | ||||
| -rw-r--r-- | tests/filetypes.vim | 13 | ||||
| -rw-r--r-- | tests/indent/2.1/test.js | 10 | ||||
| -rw-r--r-- | tests/indent/4.1/test.js | 10 | 
9 files changed, 94 insertions, 36 deletions
| @@ -7,4 +7,4 @@ test:  	@ scripts/test  dev: -	@ echo "packages.yaml\nheuristics.yaml\nscripts/test\nscripts/build\nscripts/test_extensions.vim" | DEV=1 entr bash -c 'make && make test' +	@ echo "packages.yaml\nheuristics.yaml\nscripts/test\nscripts/build\ntests/extensions.vim" | DEV=1 entr bash -c 'make && make test' diff --git a/indent/terraform.vim b/indent/terraform.vim index c035c216..4f536c48 100644 --- a/indent/terraform.vim +++ b/indent/terraform.vim @@ -10,11 +10,11 @@ let s:cpo_save = &cpoptions  set cpoptions&vim  setlocal nolisp -setlocal autoindent shiftwidth=2 tabstop=2 softtabstop=2 +setlocal autoindent shiftwidth=2 tabstop=2 softtabstop=2 expandtab  setlocal indentexpr=TerraformIndent(v:lnum)  setlocal indentkeys+=<:>,0=},0=)  let b:undo_indent = 'setlocal lisp< autoindent< shiftwidth< tabstop< softtabstop<' -  \ . ' indentexpr< indentkeys<' +  \ . ' expandtab< indentexpr< indentkeys<'  let &cpoptions = s:cpo_save  unlet s:cpo_save diff --git a/scripts/build b/scripts/build index 598fc2c5..44b03e95 100755 --- a/scripts/build +++ b/scripts/build @@ -643,15 +643,10 @@ end  def generate_tests(packages)    output = <<~EOS      function! TestFiletype(filetype) -      try -        enew -        exec 'set ft=' . a:filetype -      catch -        echo 'Error loading filetype ' . a:filetype  . ':' -        echo v:exception -        echo v:throwpoint -        exec ':cq!' -      endtry +      call Log('Loading ' . a:filetype . ' filetype...') + +      enew +      exec 'set ft=' . a:filetype      endfunction    EOS @@ -662,7 +657,7 @@ def generate_tests(packages)      end    end -  File.write('scripts/test_filetypes.vim', output) +  File.write('tests/filetypes.vim', output)  end diff --git a/scripts/test b/scripts/test index 227174d7..db6de5da 100755 --- a/scripts/test +++ b/scripts/test @@ -1,16 +1,60 @@ -#!/bin/bash +#!/usr/bin/env ruby -set -e +def run_script(src) +  system("bash", "-c", src) +end -vim --clean -N -u <(echo " -  let &rtp='$PWD,'.&rtp -  let g:polyglot_test = 1 -  source tests/extensions.vim -  source tests/filetypes.vim -  qa! -") +def run_vimscript(src) +  wrapper = <<~EOF +    vim --clean --not-a-term -u <(cat <<- "EOM" +    let g:polyglot_test = 1 +    let &rtp='$PWD,' . &rtp +    runtime filetype.vim +    set t_ti= t_te= +    set shortmess+=F +    set noswapfile +    set nocp +    set nomore +    func! Log(msg) +      if $DEV != '1' +        echo a:msg +      else +        echon '.' +      endif +    endfunc +    EOM +    ) -S <(cat <<- "EOM" +      try +      #{src} +      catch +        echo v:exception +        echo v:throwpoint +      endtry +      qa! +    EOM +    ) | perl -pe 's/\e\[[0-9;]*[a-zA-Z]//g' +  EOF -if ! expect -c 'set timeout 1' -c 'spawn vim -N --clean -c "set nomore | :helptags ./doc | q"' -c 'expect "ENTER" { exit 1 }' > /dev/null; then -  echo "Please ensure ':helptags ./doc' works properly" -  exit 1 -fi +  run_script(wrapper) +end + +test_helptags = <<~EOF +  if ! expect -c 'set timeout 1' -c 'spawn vim -N --clean -c "set nomore | :helptags ./doc | q"' -c 'expect "ENTER" { exit 1 }' > /dev/null; then +    echo "Please ensure ':helptags ./doc' works properly" +    exit 1 +  fi +EOF + +run_vimscript('source tests/filetypes.vim') +run_vimscript('source tests/extensions.vim') +run_script(test_helptags) + +# run_vimscript(" +#   func! TestIndent(file) +#     :e a:file +#     echo 'ok' +#     echo &filetype +#   endfunc +# +#   #{Dir['tests/indent/**/test.*'].map { |f| "call TestIndent(\"#{f}\")"}.join("\n")} +# ") diff --git a/scripts/test_filetypes.vim b/scripts/test_filetypes.vim index 02d44ca4..4ce20e72 100644 --- a/scripts/test_filetypes.vim +++ b/scripts/test_filetypes.vim @@ -1,4 +1,6 @@  function! TestFiletype(filetype) +  call Log('Loading ' . a:filetype . ' filetype...') +    try      enew      exec 'set ft=' . a:filetype diff --git a/tests/extensions.vim b/tests/extensions.vim index 467ac86a..98a93796 100644 --- a/tests/extensions.vim +++ b/tests/extensions.vim @@ -1,8 +1,10 @@  function! TestExtension(filetype, filename, content) +  call Log('Detecting ' . a:filetype . ' filetype (' . a:filename . ')...') +    try      let g:message = ""      exec "noautocmd n " . a:filename -    put =a:content +    silent put =a:content      1delete _      filetype detect      exec "if &filetype != '" . a:filetype . "' \nthrow &filetype\nendif" diff --git a/tests/filetypes.vim b/tests/filetypes.vim index 02d44ca4..3128a730 100644 --- a/tests/filetypes.vim +++ b/tests/filetypes.vim @@ -1,13 +1,8 @@  function! TestFiletype(filetype) -  try -    enew -    exec 'set ft=' . a:filetype -  catch -    echo 'Error loading filetype ' . a:filetype  . ':' -    echo v:exception -    echo v:throwpoint -    exec ':cq!' -  endtry +  call Log('Loading ' . a:filetype . ' filetype...') + +  enew +  exec 'set ft=' . a:filetype  endfunction  call TestFiletype('8th') diff --git a/tests/indent/2.1/test.js b/tests/indent/2.1/test.js new file mode 100644 index 00000000..bfe70006 --- /dev/null +++ b/tests/indent/2.1/test.js @@ -0,0 +1,10 @@ +// File with 2-spaces indentation +function foobar() { +  foo = bar +  while (true) { +    fizfuz() +    fizfuz() +    fizfuz() +    fizfuz() +  } +} diff --git a/tests/indent/4.1/test.js b/tests/indent/4.1/test.js new file mode 100644 index 00000000..64e95103 --- /dev/null +++ b/tests/indent/4.1/test.js @@ -0,0 +1,10 @@ +// File with 4-spaces indentation +function foobar() { +    foo = bar +    while (true) { +        fizfuz() +        fizfuz() +        fizfuz() +        fizfuz() +    } +} | 
