neovim 0.3.3 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.gitmodules +3 -0
- data/.travis.yml +1 -1
- data/CHANGELOG.md +6 -0
- data/Rakefile +14 -3
- data/lib/neovim.rb +10 -1
- data/lib/neovim/buffer.rb +2 -0
- data/lib/neovim/client.rb +2 -0
- data/lib/neovim/executable.rb +33 -0
- data/lib/neovim/ruby_provider.rb +32 -58
- data/lib/neovim/ruby_provider/vim.rb +15 -1
- data/lib/neovim/tabpage.rb +3 -0
- data/lib/neovim/version.rb +1 -1
- data/lib/neovim/window.rb +3 -0
- data/script/acceptance_tests +46 -0
- data/script/generate_docs +8 -1
- data/spec/acceptance/rplugin_spec.vim +19 -0
- data/spec/acceptance/ruby_spec.vim +94 -0
- data/spec/acceptance/rubydo_spec.vim +66 -0
- data/spec/acceptance/rubyfile/call_foo.rb +1 -0
- data/spec/acceptance/rubyfile/curbuf.rb +1 -0
- data/spec/acceptance/rubyfile/curbuf_ivar_get.rb +1 -0
- data/spec/acceptance/rubyfile/curbuf_ivar_set.rb +1 -0
- data/spec/acceptance/rubyfile/curwin.rb +1 -0
- data/spec/acceptance/rubyfile/define_foo.rb +3 -0
- data/spec/acceptance/rubyfile/raise_standard_error.rb +1 -0
- data/spec/acceptance/rubyfile/raise_syntax_error.rb +1 -0
- data/spec/acceptance/rubyfile/set_pwd_after.rb +1 -0
- data/spec/acceptance/rubyfile/set_pwd_before.rb +1 -0
- data/spec/acceptance/rubyfile/vim_constants.rb +2 -0
- data/spec/acceptance/rubyfile_spec.vim +111 -0
- data/spec/acceptance/runtime/init.vim +1 -0
- data/spec/acceptance/runtime/rplugin/ruby/plugin.rb +13 -0
- data/spec/documentation_spec.rb +24 -0
- data/spec/helper.rb +20 -45
- data/spec/neovim/executable_spec.rb +32 -0
- data/spec/neovim/host_spec.rb +2 -2
- data/spec/neovim/ruby_provider/vim_spec.rb +38 -0
- data/spec/neovim_spec.rb +6 -0
- data/spec/support.rb +45 -0
- metadata +46 -7
- data/spec/acceptance/neovim-ruby-host_spec.rb +0 -69
- data/spec/acceptance/ruby_provider_spec.rb +0 -256
data/spec/neovim_spec.rb
CHANGED
data/spec/support.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
module Support
|
2
|
+
class << self
|
3
|
+
attr_accessor :nvim_version
|
4
|
+
end
|
5
|
+
|
6
|
+
def self.workspace
|
7
|
+
File.expand_path("../workspace", __FILE__)
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.socket_path
|
11
|
+
file_path("nvim.sock")
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.tcp_port
|
15
|
+
server = TCPServer.new("127.0.0.1", 0)
|
16
|
+
|
17
|
+
begin
|
18
|
+
server.addr[1]
|
19
|
+
ensure
|
20
|
+
server.close
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.file_path(name)
|
25
|
+
File.join(workspace, name)
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.setup_workspace
|
29
|
+
FileUtils.mkdir_p(workspace)
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.teardown_workspace
|
33
|
+
FileUtils.rm_rf(workspace)
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.child_argv
|
37
|
+
[Neovim.executable.path, "--headless", "-i", "NONE", "-u", "NONE", "-n"]
|
38
|
+
end
|
39
|
+
|
40
|
+
begin
|
41
|
+
self.nvim_version = Neovim.executable.version
|
42
|
+
rescue => e
|
43
|
+
abort("Failed to load nvim: #{e}")
|
44
|
+
end
|
45
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: neovim
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Genco
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -90,6 +90,7 @@ extra_rdoc_files: []
|
|
90
90
|
files:
|
91
91
|
- ".coveralls.yml"
|
92
92
|
- ".gitignore"
|
93
|
+
- ".gitmodules"
|
93
94
|
- ".travis.yml"
|
94
95
|
- CHANGELOG.md
|
95
96
|
- Gemfile
|
@@ -101,6 +102,7 @@ files:
|
|
101
102
|
- lib/neovim/buffer.rb
|
102
103
|
- lib/neovim/client.rb
|
103
104
|
- lib/neovim/current.rb
|
105
|
+
- lib/neovim/executable.rb
|
104
106
|
- lib/neovim/host.rb
|
105
107
|
- lib/neovim/host/loader.rb
|
106
108
|
- lib/neovim/line_range.rb
|
@@ -124,16 +126,34 @@ files:
|
|
124
126
|
- lib/neovim/version.rb
|
125
127
|
- lib/neovim/window.rb
|
126
128
|
- neovim.gemspec
|
129
|
+
- script/acceptance_tests
|
127
130
|
- script/dump_api
|
128
131
|
- script/generate_docs
|
129
132
|
- script/j2mp
|
130
133
|
- script/mp2j
|
131
|
-
- spec/acceptance/
|
132
|
-
- spec/acceptance/
|
134
|
+
- spec/acceptance/rplugin_spec.vim
|
135
|
+
- spec/acceptance/ruby_spec.vim
|
136
|
+
- spec/acceptance/rubydo_spec.vim
|
137
|
+
- spec/acceptance/rubyfile/call_foo.rb
|
138
|
+
- spec/acceptance/rubyfile/curbuf.rb
|
139
|
+
- spec/acceptance/rubyfile/curbuf_ivar_get.rb
|
140
|
+
- spec/acceptance/rubyfile/curbuf_ivar_set.rb
|
141
|
+
- spec/acceptance/rubyfile/curwin.rb
|
142
|
+
- spec/acceptance/rubyfile/define_foo.rb
|
143
|
+
- spec/acceptance/rubyfile/raise_standard_error.rb
|
144
|
+
- spec/acceptance/rubyfile/raise_syntax_error.rb
|
145
|
+
- spec/acceptance/rubyfile/set_pwd_after.rb
|
146
|
+
- spec/acceptance/rubyfile/set_pwd_before.rb
|
147
|
+
- spec/acceptance/rubyfile/vim_constants.rb
|
148
|
+
- spec/acceptance/rubyfile_spec.vim
|
149
|
+
- spec/acceptance/runtime/init.vim
|
150
|
+
- spec/acceptance/runtime/rplugin/ruby/plugin.rb
|
151
|
+
- spec/documentation_spec.rb
|
133
152
|
- spec/helper.rb
|
134
153
|
- spec/neovim/buffer_spec.rb
|
135
154
|
- spec/neovim/client_spec.rb
|
136
155
|
- spec/neovim/current_spec.rb
|
156
|
+
- spec/neovim/executable_spec.rb
|
137
157
|
- spec/neovim/host/loader_spec.rb
|
138
158
|
- spec/neovim/host_spec.rb
|
139
159
|
- spec/neovim/line_range_spec.rb
|
@@ -152,6 +172,7 @@ files:
|
|
152
172
|
- spec/neovim/session_spec.rb
|
153
173
|
- spec/neovim/window_spec.rb
|
154
174
|
- spec/neovim_spec.rb
|
175
|
+
- spec/support.rb
|
155
176
|
homepage: https://github.com/alexgenco/neovim-ruby
|
156
177
|
licenses:
|
157
178
|
- MIT
|
@@ -172,17 +193,34 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
193
|
version: '0'
|
173
194
|
requirements: []
|
174
195
|
rubyforge_project:
|
175
|
-
rubygems_version: 2.6.
|
196
|
+
rubygems_version: 2.6.11
|
176
197
|
signing_key:
|
177
198
|
specification_version: 4
|
178
199
|
summary: A Ruby client for Neovim
|
179
200
|
test_files:
|
180
|
-
- spec/acceptance/
|
181
|
-
- spec/acceptance/
|
201
|
+
- spec/acceptance/rplugin_spec.vim
|
202
|
+
- spec/acceptance/ruby_spec.vim
|
203
|
+
- spec/acceptance/rubydo_spec.vim
|
204
|
+
- spec/acceptance/rubyfile/call_foo.rb
|
205
|
+
- spec/acceptance/rubyfile/curbuf.rb
|
206
|
+
- spec/acceptance/rubyfile/curbuf_ivar_get.rb
|
207
|
+
- spec/acceptance/rubyfile/curbuf_ivar_set.rb
|
208
|
+
- spec/acceptance/rubyfile/curwin.rb
|
209
|
+
- spec/acceptance/rubyfile/define_foo.rb
|
210
|
+
- spec/acceptance/rubyfile/raise_standard_error.rb
|
211
|
+
- spec/acceptance/rubyfile/raise_syntax_error.rb
|
212
|
+
- spec/acceptance/rubyfile/set_pwd_after.rb
|
213
|
+
- spec/acceptance/rubyfile/set_pwd_before.rb
|
214
|
+
- spec/acceptance/rubyfile/vim_constants.rb
|
215
|
+
- spec/acceptance/rubyfile_spec.vim
|
216
|
+
- spec/acceptance/runtime/init.vim
|
217
|
+
- spec/acceptance/runtime/rplugin/ruby/plugin.rb
|
218
|
+
- spec/documentation_spec.rb
|
182
219
|
- spec/helper.rb
|
183
220
|
- spec/neovim/buffer_spec.rb
|
184
221
|
- spec/neovim/client_spec.rb
|
185
222
|
- spec/neovim/current_spec.rb
|
223
|
+
- spec/neovim/executable_spec.rb
|
186
224
|
- spec/neovim/host/loader_spec.rb
|
187
225
|
- spec/neovim/host_spec.rb
|
188
226
|
- spec/neovim/line_range_spec.rb
|
@@ -201,3 +239,4 @@ test_files:
|
|
201
239
|
- spec/neovim/session_spec.rb
|
202
240
|
- spec/neovim/window_spec.rb
|
203
241
|
- spec/neovim_spec.rb
|
242
|
+
- spec/support.rb
|
@@ -1,69 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
require "pty"
|
3
|
-
|
4
|
-
RSpec.describe "neovim-ruby-host" do
|
5
|
-
let(:host_exe) do
|
6
|
-
File.expand_path("../../../bin/neovim-ruby-host", __FILE__)
|
7
|
-
end
|
8
|
-
|
9
|
-
it "prints the gem version" do
|
10
|
-
["--version", "-V"].each do |opt|
|
11
|
-
expect {
|
12
|
-
system(host_exe, opt)
|
13
|
-
}.to output("#{Neovim::VERSION}\n").to_stdout_from_any_process
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
it "fails when attached to a TTY" do
|
18
|
-
PTY.spawn(host_exe) do |rd, wr, pid|
|
19
|
-
expect(rd.gets).to match(/can't run.+interactively/i)
|
20
|
-
|
21
|
-
_, status = Process.waitpid2(pid)
|
22
|
-
expect(status.exitstatus).to be(1)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
it "loads and runs plugins from Ruby source files" do
|
27
|
-
plugin_path = Support.file_path("plugin1.rb")
|
28
|
-
File.write(plugin_path, <<-RUBY)
|
29
|
-
Neovim.plugin do |plug|
|
30
|
-
plug.command(:AsyncSetLine, :args => 1) do |nvim, str|
|
31
|
-
nvim.current.line = str
|
32
|
-
end
|
33
|
-
|
34
|
-
plug.function(:SyncAdd, :args => 2, :sync => true) do |nvim, x, y|
|
35
|
-
x + y
|
36
|
-
end
|
37
|
-
|
38
|
-
plug.autocmd(:BufEnter, :pattern => "*.rb") do |nvim|
|
39
|
-
nvim.current.line = "Ruby file, eh?"
|
40
|
-
end
|
41
|
-
end
|
42
|
-
RUBY
|
43
|
-
|
44
|
-
nvim = Neovim.attach_child(Support.child_argv)
|
45
|
-
|
46
|
-
nvim.command("let host = rpcstart('#{host_exe}', ['#{plugin_path}'])")
|
47
|
-
|
48
|
-
expect(nvim.eval("rpcrequest(host, 'poll')")).to eq("ok")
|
49
|
-
expect(nvim.eval("rpcrequest(host, '#{plugin_path}:function:SyncAdd', [1, 2])")).to eq(3)
|
50
|
-
|
51
|
-
expect {
|
52
|
-
nvim.command("call rpcnotify(host, '#{plugin_path}:autocmd:BufEnter:*.rb')")
|
53
|
-
sleep 0.01
|
54
|
-
}.to change { nvim.current.buffer.lines.to_a }.from([""]).to(["Ruby file, eh?"])
|
55
|
-
|
56
|
-
expect {
|
57
|
-
nvim.command("call rpcnotify(host, '#{plugin_path}:command:AsyncSetLine', ['foo'])")
|
58
|
-
sleep 0.01
|
59
|
-
}.to change { nvim.current.buffer.lines.to_a }.from(["Ruby file, eh?"]).to(["foo"])
|
60
|
-
|
61
|
-
expect {
|
62
|
-
nvim.command("call rpcnotify(host, 'Unknown')")
|
63
|
-
}.not_to raise_error
|
64
|
-
|
65
|
-
expect {
|
66
|
-
nvim.command("call rpcrequest(host, 'Unknown')")
|
67
|
-
}.to raise_error(ArgumentError)
|
68
|
-
end
|
69
|
-
end
|
@@ -1,256 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
|
3
|
-
RSpec.describe "ruby_provider" do
|
4
|
-
let!(:nvim) do
|
5
|
-
Neovim.attach_child(Support.child_argv)
|
6
|
-
end
|
7
|
-
|
8
|
-
around do |spec|
|
9
|
-
provider_path = Support.file_path("provider.rb")
|
10
|
-
File.write(provider_path, "require 'neovim/ruby_provider'")
|
11
|
-
host_exe = File.expand_path("../../../bin/neovim-ruby-host", __FILE__)
|
12
|
-
nvim.current.buffer.lines = ["line1", "line2"]
|
13
|
-
nvim.command("let host = rpcstart('#{host_exe}', ['#{provider_path}'])")
|
14
|
-
|
15
|
-
begin
|
16
|
-
spec.run
|
17
|
-
ensure
|
18
|
-
nvim.shutdown
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe "ruby_execute" do
|
23
|
-
it "exposes the VIM constant" do
|
24
|
-
ruby = "VIM.equal?(Vim) || raise".inspect
|
25
|
-
nvim.eval("rpcrequest(host, 'ruby_execute', #{ruby})")
|
26
|
-
end
|
27
|
-
|
28
|
-
it "exposes the $curwin variable" do
|
29
|
-
nvim.command("vsplit")
|
30
|
-
|
31
|
-
expect {
|
32
|
-
ruby = "$curwin.width -= 1".inspect
|
33
|
-
nvim.eval("rpcrequest(host, 'ruby_execute', #{ruby})")
|
34
|
-
}.to change { nvim.current.window.width }.by(-1)
|
35
|
-
end
|
36
|
-
|
37
|
-
it "exposes the $curbuf variable" do
|
38
|
-
expect {
|
39
|
-
ruby = "$curbuf.lines = ['line']".inspect
|
40
|
-
nvim.eval("rpcrequest(host, 'ruby_execute', #{ruby})")
|
41
|
-
}.to change { nvim.current.buffer.lines.to_a }.to(["line"])
|
42
|
-
end
|
43
|
-
|
44
|
-
it "persists state between requests" do
|
45
|
-
nvim.eval("rpcrequest(host, 'ruby_execute', 'def foo; Vim.command(\"let g:called = 1\"); end')")
|
46
|
-
expect { nvim.get_var("called") }.to raise_error(/key not found/i)
|
47
|
-
|
48
|
-
nvim.eval("rpcrequest(host, 'ruby_execute', 'foo')")
|
49
|
-
expect(nvim.get_var("called")).to be(1)
|
50
|
-
end
|
51
|
-
|
52
|
-
it "persists instance state in $curbuf" do
|
53
|
-
nvim.eval("rpcrequest(host, 'ruby_execute', '$curbuf.instance_variable_set(:@foo, 123)')")
|
54
|
-
nvim.eval("rpcrequest(host, 'ruby_execute', 'Vim.command(\"let g:foo = \#{$curbuf.instance_variable_get(:@foo)}\")')")
|
55
|
-
|
56
|
-
expect(nvim.get_var("foo")).to be(123)
|
57
|
-
end
|
58
|
-
|
59
|
-
it "handles explicit directory changes" do
|
60
|
-
expect {
|
61
|
-
nvim.command("cd /")
|
62
|
-
}.to change {
|
63
|
-
nvim.command_output("call rpcrequest(host, 'ruby_execute', 'puts Dir.pwd')").strip
|
64
|
-
}.from(Dir.pwd).to("/")
|
65
|
-
end
|
66
|
-
|
67
|
-
it "handles implicit directory changes" do
|
68
|
-
expect {
|
69
|
-
nvim.command("split | lcd / | wincmd p")
|
70
|
-
}.not_to change {
|
71
|
-
nvim.command_output("call rpcrequest(host, 'ruby_execute', 'puts Dir.pwd')").strip
|
72
|
-
}.from(Dir.pwd)
|
73
|
-
end
|
74
|
-
|
75
|
-
it "handles standard errors" do
|
76
|
-
expect {
|
77
|
-
nvim.eval("rpcrequest(host, 'ruby_execute', 'raise')")
|
78
|
-
}.to raise_error(ArgumentError)
|
79
|
-
|
80
|
-
expect {
|
81
|
-
nvim.eval("rpcrequest(host, 'ruby_execute', '12')")
|
82
|
-
}.not_to raise_error
|
83
|
-
end
|
84
|
-
|
85
|
-
it "handles syntax errors" do
|
86
|
-
expect {
|
87
|
-
nvim.eval("rpcrequest(host, 'ruby_execute', 'puts[')")
|
88
|
-
}.to raise_error(ArgumentError)
|
89
|
-
|
90
|
-
expect {
|
91
|
-
nvim.eval("rpcrequest(host, 'ruby_execute', '12')")
|
92
|
-
}.not_to raise_error
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
describe "ruby_execute_file" do
|
97
|
-
let(:script_path) { Support.file_path("script.rb") }
|
98
|
-
|
99
|
-
it "exposes the VIM constant" do
|
100
|
-
File.write(script_path, "VIM.equal?(Vim) || raise")
|
101
|
-
nvim.eval("rpcrequest(host, 'ruby_execute_file', '#{script_path}')")
|
102
|
-
end
|
103
|
-
|
104
|
-
it "runs ruby from a file" do
|
105
|
-
File.write(script_path, "Vim.command('let myvar = [1, 2]')")
|
106
|
-
nvim.eval("rpcrequest(host, 'ruby_execute_file', '#{script_path}')")
|
107
|
-
expect(nvim.eval("g:myvar")).to eq([1, 2])
|
108
|
-
end
|
109
|
-
|
110
|
-
it "exposes the $curwin variable" do
|
111
|
-
File.write(script_path, "$curwin.width -= 1")
|
112
|
-
nvim.command("vsplit")
|
113
|
-
|
114
|
-
expect {
|
115
|
-
nvim.eval("rpcrequest(host, 'ruby_execute_file', '#{script_path}')")
|
116
|
-
}.to change { nvim.current.window.width }.by(-1)
|
117
|
-
end
|
118
|
-
|
119
|
-
it "exposes the $curbuf variable" do
|
120
|
-
File.write(script_path, "$curbuf.lines = ['line']")
|
121
|
-
|
122
|
-
expect {
|
123
|
-
nvim.eval("rpcrequest(host, 'ruby_execute_file', '#{script_path}')")
|
124
|
-
}.to change { nvim.current.buffer.lines.to_a }.to(["line"])
|
125
|
-
end
|
126
|
-
|
127
|
-
it "persists state between requests" do
|
128
|
-
File.write(script_path, "def foo; Vim.command(\"let g:called = 1\"); end")
|
129
|
-
nvim.eval("rpcrequest(host, 'ruby_execute_file', '#{script_path}')")
|
130
|
-
expect { nvim.get_var("called") }.to raise_error(/key not found/i)
|
131
|
-
|
132
|
-
nvim.eval("rpcrequest(host, 'ruby_execute', 'foo')")
|
133
|
-
expect(nvim.get_var("called")).to be(1)
|
134
|
-
end
|
135
|
-
|
136
|
-
it "can run the same file multiple times" do
|
137
|
-
nvim.set_var("called", 0)
|
138
|
-
File.write(script_path, "Vim.command(\"let g:called += 1\")")
|
139
|
-
|
140
|
-
nvim.eval("rpcrequest(host, 'ruby_execute_file', '#{script_path}')")
|
141
|
-
expect(nvim.get_var("called")).to be(1)
|
142
|
-
|
143
|
-
nvim.eval("rpcrequest(host, 'ruby_execute_file', '#{script_path}')")
|
144
|
-
expect(nvim.get_var("called")).to be(2)
|
145
|
-
end
|
146
|
-
|
147
|
-
it "persists instance state in $curbuf" do
|
148
|
-
File.write(script_path, <<-RUBY)
|
149
|
-
def $curbuf.foo
|
150
|
-
@foo ||= 0
|
151
|
-
@foo += 1
|
152
|
-
end
|
153
|
-
|
154
|
-
Vim.command("let g:foo = \#{$curbuf.foo}")
|
155
|
-
RUBY
|
156
|
-
|
157
|
-
nvim.eval("rpcrequest(host, 'ruby_execute_file', '#{script_path}')")
|
158
|
-
expect(nvim.get_var("foo")).to be(1)
|
159
|
-
|
160
|
-
nvim.eval("rpcrequest(host, 'ruby_execute_file', '#{script_path}')")
|
161
|
-
expect(nvim.get_var("foo")).to be(2)
|
162
|
-
end
|
163
|
-
|
164
|
-
it "handles explicit directory changes" do
|
165
|
-
File.write(script_path, "puts Dir.pwd")
|
166
|
-
|
167
|
-
expect {
|
168
|
-
nvim.command("cd /")
|
169
|
-
}.to change {
|
170
|
-
nvim.command_output("call rpcrequest(host, 'ruby_execute_file', '#{script_path}')").strip
|
171
|
-
}.from(Dir.pwd).to("/")
|
172
|
-
end
|
173
|
-
|
174
|
-
it "handles implicit directory changes" do
|
175
|
-
File.write(script_path, "puts Dir.pwd")
|
176
|
-
|
177
|
-
expect {
|
178
|
-
nvim.command("split | lcd / | wincmd p")
|
179
|
-
}.not_to change {
|
180
|
-
nvim.command_output("call rpcrequest(host, 'ruby_execute_file', '#{script_path}')").strip
|
181
|
-
}.from(Dir.pwd)
|
182
|
-
end
|
183
|
-
|
184
|
-
it "handles standard errors" do
|
185
|
-
File.write(script_path, "raise")
|
186
|
-
|
187
|
-
expect {
|
188
|
-
nvim.eval("rpcrequest(host, 'ruby_execute_file', '#{script_path}')")
|
189
|
-
}.to raise_error(ArgumentError)
|
190
|
-
|
191
|
-
File.write(script_path, "12")
|
192
|
-
|
193
|
-
expect {
|
194
|
-
nvim.eval("rpcrequest(host, 'ruby_execute_file', '#{script_path}')")
|
195
|
-
}.not_to raise_error
|
196
|
-
end
|
197
|
-
|
198
|
-
it "handles syntax errors" do
|
199
|
-
File.write(script_path, "puts[")
|
200
|
-
|
201
|
-
expect {
|
202
|
-
nvim.eval("rpcrequest(host, 'ruby_execute_file', '#{script_path}')")
|
203
|
-
}.to raise_error(ArgumentError)
|
204
|
-
|
205
|
-
File.write(script_path, "12")
|
206
|
-
|
207
|
-
expect {
|
208
|
-
nvim.eval("rpcrequest(host, 'ruby_execute_file', '#{script_path}')")
|
209
|
-
}.not_to raise_error
|
210
|
-
end
|
211
|
-
end
|
212
|
-
|
213
|
-
describe "ruby_do_range" do
|
214
|
-
it "mutates lines via the $_ variable" do
|
215
|
-
nvim.current.buffer.lines = ["a", "b", "c", "d"]
|
216
|
-
|
217
|
-
expect {
|
218
|
-
nvim.eval("rpcrequest(host, 'ruby_do_range', 2, 3, '$_.upcase!; 42')")
|
219
|
-
}.to change { nvim.current.buffer.lines.to_a }.to(["a", "B", "C", "d"])
|
220
|
-
end
|
221
|
-
|
222
|
-
it "handles large amounts of lines" do
|
223
|
-
xs = Array.new(6000, "x")
|
224
|
-
ys = Array.new(6000, "y")
|
225
|
-
nvim.current.buffer.lines = xs
|
226
|
-
|
227
|
-
expect {
|
228
|
-
nvim.eval("rpcrequest(host, 'ruby_do_range', 1, 6000, '$_.succ!')")
|
229
|
-
}.to change { nvim.current.buffer.lines.to_a }.to(ys)
|
230
|
-
end
|
231
|
-
|
232
|
-
it "handles standard errors" do
|
233
|
-
nvim.current.buffer.lines = ["a", "b"]
|
234
|
-
|
235
|
-
expect {
|
236
|
-
nvim.eval("rpcrequest(host, 'ruby_do_range', 1, 1, 'raise')")
|
237
|
-
}.to raise_error(ArgumentError)
|
238
|
-
|
239
|
-
expect {
|
240
|
-
nvim.eval("rpcrequest(host, 'ruby_do_range', 1, 1, '12')")
|
241
|
-
}.not_to raise_error
|
242
|
-
end
|
243
|
-
|
244
|
-
it "handles syntax errors" do
|
245
|
-
nvim.current.buffer.lines = ["a", "b"]
|
246
|
-
|
247
|
-
expect {
|
248
|
-
nvim.eval("rpcrequest(host, 'ruby_do_range', 1, 1, 'puts[')")
|
249
|
-
}.to raise_error(ArgumentError)
|
250
|
-
|
251
|
-
expect {
|
252
|
-
nvim.eval("rpcrequest(host, 'ruby_do_range', 1, 1, '12')")
|
253
|
-
}.not_to raise_error
|
254
|
-
end
|
255
|
-
end
|
256
|
-
end
|