X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/10228215c76da4004b5ac4b60cfdf94682ea6e22..5a4cf72a849deb6364f67ad1cc205e98ff7e6d7d:/spec/spec_helper.rb diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 148f705..c6cc517 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,26 +1,36 @@ require 'vimrunner' require 'vimrunner/rspec' +require 'vimrunner/server' + +# Explicitly enable usage of "should". +RSpec.configure do |config| + config.expect_with(:rspec) { |c| c.syntax = :should } +end Vimrunner::RSpec.configure do |config| # Use a single Vim instance for the test suite. Set to false to use an # instance per test (slower, but can be easier to manage). - # FIXME: reuse_server = true seems to hang after a certain number of test cases - # - Travis CI hangs after 15 successful tests. - # - Locally it may hang also, with Vim and Xorg using 100% CPU. - # Therefore default to false in both cases. - config.reuse_server = ENV['CI'] ? false : false + # This requires using gvim, otherwise it hangs after a few tests. + config.reuse_server = ENV['VIMRUNNER_REUSE_SERVER'] == '1' ? true : false config.start_vim do - vim = Vimrunner.start - - plugin_path = File.expand_path('../..', __FILE__) + exe = config.reuse_server ? Vimrunner::Platform.gvim : Vimrunner::Platform.vim + vimrc = File.expand_path("../vimrc", __FILE__) + vim = Vimrunner::Server.new(:executable => exe, + :vimrc => vimrc).start + # More friendly killing. + # Otherwise profiling information might not be written. + def vim.kill + normal(':qall!') - # add_plugin appends the path to the rtp... :( - # vim.add_plugin(plugin_path, 'indent/python.vim') + Timeout.timeout(5) do + sleep 0.1 while server.running? + end + end + plugin_path = File.expand_path('../..', __FILE__) vim.command "set rtp^=#{plugin_path}" - vim.command "runtime syntax/python.vim" - vim.command "runtime indent/python.vim" + vim.command "set filetype=python" def shiftwidth @shiftwidth ||= vim.echo("exists('*shiftwidth') ? shiftwidth() : &sw").to_i @@ -38,7 +48,7 @@ Vimrunner::RSpec.configure do |config| def proposed_indent line = vim.echo("line('.')") col = vim.echo("col('.')") - indent_value = vim.echo("GetPythonPEPIndent(line('.'))").to_i + indent_value = vim.echo("GetPythonPEPIndent(#{line})").to_i vim.command("call cursor(#{line}, #{col})") return indent_value end @@ -46,6 +56,14 @@ Vimrunner::RSpec.configure do |config| i = vim.echo("get(g:, 'python_pep8_indent_multiline_string', 0)").to_i return (i == -2 ? default : i), i < 0 ? (i == -1 ? prev : default) : i end + def hang_closing + i = vim.echo("get(g:, 'python_pep8_indent_hang_closing', 0)").to_i + return (i != 0) + end + def set_hang_closing(value) + i = value ? 1 : 0 + vim.command("let g:python_pep8_indent_hang_closing=#{i}") + end vim end