mirror of
https://github.com/neovim/neovim.git
synced 2025-09-07 11:58:17 +00:00
Merge #4980 'Support legacy :ruby
commands'.
This commit is contained in:
96
test/functional/provider/ruby_spec.lua
Normal file
96
test/functional/provider/ruby_spec.lua
Normal file
@@ -0,0 +1,96 @@
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
|
||||
local eq = helpers.eq
|
||||
local feed = helpers.feed
|
||||
local clear = helpers.clear
|
||||
local funcs = helpers.funcs
|
||||
local meths = helpers.meths
|
||||
local insert = helpers.insert
|
||||
local expect = helpers.expect
|
||||
local command = helpers.command
|
||||
local write_file = helpers.write_file
|
||||
local curbufmeths = helpers.curbufmeths
|
||||
|
||||
do
|
||||
clear()
|
||||
command('let g:prog = provider#ruby#Detect()')
|
||||
local prog = meths.get_var('prog')
|
||||
|
||||
if prog == '' then
|
||||
pending(
|
||||
"Cannot find the neovim RubyGem. Try :CheckHealth",
|
||||
function() end)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
before_each(function()
|
||||
clear()
|
||||
end)
|
||||
|
||||
describe('ruby feature test', function()
|
||||
it('works', function()
|
||||
eq(1, funcs.has('ruby'))
|
||||
end)
|
||||
end)
|
||||
|
||||
describe(':ruby command', function()
|
||||
it('evaluates ruby', function()
|
||||
command('ruby VIM.command("let g:set_by_ruby = [100, 0]")')
|
||||
eq({100, 0}, meths.get_var('set_by_ruby'))
|
||||
end)
|
||||
|
||||
it('supports nesting', function()
|
||||
command([[ruby VIM.command('ruby VIM.command("let set_by_nested_ruby = 555")')]])
|
||||
eq(555, meths.get_var('set_by_nested_ruby'))
|
||||
end)
|
||||
end)
|
||||
|
||||
describe(':rubyfile command', function()
|
||||
it('evaluates a ruby file', function()
|
||||
local fname = 'rubyfile.rb'
|
||||
write_file(fname, 'VIM.command("let set_by_rubyfile = 123")')
|
||||
command('rubyfile rubyfile.rb')
|
||||
eq(123, meths.get_var('set_by_rubyfile'))
|
||||
os.remove(fname)
|
||||
end)
|
||||
end)
|
||||
|
||||
describe(':rubydo command', function()
|
||||
it('exposes the $_ variable for modifying lines', function()
|
||||
insert('abc\ndef\nghi\njkl')
|
||||
expect([[
|
||||
abc
|
||||
def
|
||||
ghi
|
||||
jkl]])
|
||||
|
||||
feed('ggjvj:rubydo $_.upcase!<CR>')
|
||||
expect([[
|
||||
abc
|
||||
DEF
|
||||
GHI
|
||||
jkl]])
|
||||
end)
|
||||
|
||||
it('operates on all lines when not given a range', function()
|
||||
insert('abc\ndef\nghi\njkl')
|
||||
expect([[
|
||||
abc
|
||||
def
|
||||
ghi
|
||||
jkl]])
|
||||
|
||||
feed(':rubydo $_.upcase!<CR>')
|
||||
expect([[
|
||||
ABC
|
||||
DEF
|
||||
GHI
|
||||
JKL]])
|
||||
end)
|
||||
|
||||
it('does not modify the buffer if no changes are made', function()
|
||||
command('normal :rubydo 42')
|
||||
eq(false, curbufmeths.get_option('modified'))
|
||||
end)
|
||||
end)
|
Reference in New Issue
Block a user