X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/5f4184fb1200b329e810c1e4c866c86fdf44c135..0a9b6e2abff2c401c61d76c2327d39f6c4413446:/spec/indent/indent_spec.rb?ds=inline diff --git a/spec/indent/indent_spec.rb b/spec/indent/indent_spec.rb index 6e5a79f..a85edcc 100644 --- a/spec/indent/indent_spec.rb +++ b/spec/indent/indent_spec.rb @@ -1,7 +1,6 @@ require "spec_helper" shared_examples_for "vim" do - before(:each) { # clear buffer vim.normal 'gg"_dG' @@ -52,7 +51,7 @@ shared_examples_for "vim" do it "puts the closing parenthesis at the same level" do vim.feedkeys ')' - indent.should == 0 + indent.should == (hang_closing ? shiftwidth : 0) end end @@ -87,7 +86,7 @@ shared_examples_for "vim" do it "lines up the closing parenthesis" do vim.feedkeys '}' - indent.should == 0 + indent.should == (hang_closing ? shiftwidth : 0) end end @@ -252,6 +251,11 @@ shared_examples_for "vim" do indent.should == 0 end + it "handles nested expressions (Flake8's E127)" do + vim.feedkeys 'i[\x for x in foo\if (\' + indent.should == shiftwidth * 2 + end + it "still handles multiple parens correctly" do vim.feedkeys 'iif (111 and (222 and 333\' indent.should == 13 @@ -514,18 +518,31 @@ shared_examples_for "multiline strings" do end end -describe "vim when using width of 4" do - before { - vim.command("set sw=4 ts=4 sts=4 et") - } - it_behaves_like "vim" -end +SUITE_SHIFTWIDTHS = [4, 3] +SUITE_HANG_CLOSINGS = [false, true] -describe "vim when using width of 3" do - before { - vim.command("set sw=3 ts=3 sts=3 et") - } - it_behaves_like "vim" +SUITE_SHIFTWIDTHS.each do |sw| + describe "vim when using width of #{sw}" do + before { + vim.command("set sw=#{sw} ts=#{sw} sts=#{sw} et") + } + it "sets shiftwidth to #{sw}" do + shiftwidth.should == sw + end + + SUITE_HANG_CLOSINGS.each do |hc| + describe "vim when hang_closing is set to #{hc}" do + before { + set_hang_closing hc + } + it "sets hang_closing to #{hc}" do + hang_closing.should == !!hc + end + + it_behaves_like "vim" + end + end + end end describe "vim when not using python_pep8_indent_multiline_string" do @@ -560,34 +577,6 @@ describe "vim when using python_pep8_indent_multiline_string=-2" do it_behaves_like "multiline strings" end -describe "vim for cython" do - before { - vim.command "enew" - vim.command "set ft=cython" - vim.command "runtime indent/python.vim" - - # Insert two blank lines. - # The first line is a corner case in this plugin that would shadow the - # correct behaviour of other tests. Thus we explicitly jump to the first - # line when we require so. - vim.feedkeys 'i\\\' - } - - describe "when using a cdef function definition" do - it "indents shiftwidth spaces" do - vim.feedkeys 'icdef long_function_name(\arg' - indent.should == shiftwidth * 2 - end - end - - describe "when using a cpdef function definition" do - it "indents shiftwidth spaces" do - vim.feedkeys 'icpdef long_function_name(\arg' - indent.should == shiftwidth * 2 - end - end -end - describe "Handles far away opening parens" do before { vim.feedkeys '\ggdGifrom foo import (' }