aboutsummaryrefslogtreecommitdiff
path: root/test/functional/provider/ruby_spec.lua
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2016-07-10 14:16:12 -0400
committerJustin M. Keyes <justinkz@gmail.com>2016-07-10 14:16:12 -0400
commitc7d84c5550a1ffa27c1b1c199fabbdb9247e5117 (patch)
tree2f99bfeb2482c63d01b9380982129dd0aca7468c /test/functional/provider/ruby_spec.lua
parent5573e1a350dd2df65e21ed48c14cf89f5e9c0e7a (diff)
parentd3981fee217c2ac56b7659179df06ddced2377ca (diff)
downloadrneovim-c7d84c5550a1ffa27c1b1c199fabbdb9247e5117.tar.gz
rneovim-c7d84c5550a1ffa27c1b1c199fabbdb9247e5117.tar.bz2
rneovim-c7d84c5550a1ffa27c1b1c199fabbdb9247e5117.zip
Merge #4980 'Support legacy `:ruby` commands'.
Diffstat (limited to 'test/functional/provider/ruby_spec.lua')
-rw-r--r--test/functional/provider/ruby_spec.lua96
1 files changed, 96 insertions, 0 deletions
diff --git a/test/functional/provider/ruby_spec.lua b/test/functional/provider/ruby_spec.lua
new file mode 100644
index 0000000000..7b0e17688d
--- /dev/null
+++ b/test/functional/provider/ruby_spec.lua
@@ -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)