1
0
Fork 0
mirror of synced 2024-11-17 22:45:34 -05:00
ultimate-vim/sources_non_forked/vim-elixir/bin/test_indent
2022-05-19 01:31:41 +08:00

57 lines
1,003 B
Ruby
Executable file

#! /usr/bin/env ruby
require 'bundler/setup'
require 'vimrunner'
require 'diffy'
require 'fileutils'
dir = File.expand_path('..', __dir__)
plugin = 'ftdetect/elixir.vim'
def bm
t1 = Time.now
yield
Time.now - t1
end
def detect_change(f)
pre = File.read(f)
pre = strip_doc_blocks(pre)
yield
post = File.read('test_indent.result')
post = strip_doc_blocks(post)
pre == post ? nil : Diffy::Diff.new(pre, post)
end
def strip_doc_blocks(body)
body.gsub(/@\w+ """.*"""/m, '')
end
ARGV.each do |f|
vim = Vimrunner.start_gvim
vim.add_plugin(dir, plugin)
vim.edit! f
print "## Testing #{File.expand_path(f)} ... "
time = nil
diff = detect_change(f) do
time = bm do
vim.normal 'ggVG999<<'
vim.normal 'gg=G'
vim.normal ':w! test_indent.result<CR>'
vim.normal ':q!<CR>'
Process.wait vim.server.pid
end
end
if diff
puts "error [#{time}s]"
puts diff
else
puts "ok [#{time}s]"
end
end
FileUtils.rm 'test_indent.result'