summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--indent/terraform.vim4
-rwxr-xr-xscripts/build15
-rwxr-xr-xscripts/test70
-rw-r--r--scripts/test_filetypes.vim2
-rw-r--r--tests/extensions.vim4
-rw-r--r--tests/filetypes.vim13
-rw-r--r--tests/indent/2.1/test.js10
-rw-r--r--tests/indent/4.1/test.js10
9 files changed, 94 insertions, 36 deletions
diff --git a/Makefile b/Makefile
index 1ec9bf79..fd5b5d84 100644
--- a/Makefile
+++ b/Makefile
@@ -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()
+ }
+}