lita-jls 0.0.11

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.
@@ -0,0 +1,80 @@
1
+ require 'spec_helper'
2
+ require 'lita-jls/github_url_parser'
3
+
4
+ describe LitaJLS::GithubUrlParser do
5
+ subject { LitaJLS::GithubUrlParser }
6
+
7
+ context 'when the url is a repository' do
8
+ let(:url) { 'https://github.com/elasticsearch/logstash' }
9
+ let(:parser) { subject.parse(url) }
10
+
11
+ it 'extract the different parts of the url' do
12
+ expect(parser.user).to eq('elasticsearch')
13
+ expect(parser.project).to eq('logstash')
14
+ expect(parser.pr).to eq(nil)
15
+ end
16
+
17
+ it 'returns the git url of the repository' do
18
+ expect(parser.git_url).to eq('https://github.com/elasticsearch/logstash')
19
+ end
20
+
21
+ it 'should validates the presence of #url, #project and valid github url' do
22
+ expect { parser.validate! }.not_to raise_error
23
+ end
24
+
25
+
26
+ it 'raise an exception if the domain is not on github' do
27
+ subject.parse('http://gitlab/blah/test')
28
+ expect { subject.validate! }.to raise_error
29
+ end
30
+
31
+ it 'raise an exception if it cannot extract the user' do
32
+ subject.parse('http://github.com/')
33
+ expect { subject.validate! }.to raise_error
34
+ end
35
+
36
+ it 'raise an exception if it cannot extract the project' do
37
+ subject.parse('http://github.com/elasticsearch')
38
+ expect { subject.validate! }.to raise_error
39
+ end
40
+ end
41
+
42
+ context 'when the url is pull request' do
43
+ let(:url) { 'https://github.com/elasticsearch/logstash/pull/2' }
44
+ let(:parser) { subject.parse(url, { :link => :pull_request }) }
45
+
46
+ it 'extract the different parts of the url' do
47
+ expect(parser.user).to eq('elasticsearch')
48
+ expect(parser.project).to eq('logstash')
49
+ expect(parser.pr).to eq('2')
50
+ end
51
+
52
+ it 'returns the git url of the repository' do
53
+ expect(parser.git_url).to eq('https://github.com/elasticsearch/logstash')
54
+ end
55
+
56
+ it 'should validates the presence of #url, #project, #pr and valid github url' do
57
+ expect { parser.validate! }.not_to raise_error
58
+ end
59
+
60
+ it 'raise an exception if the domain is not on github' do
61
+ subject.parse('http://gitlab/blah/test/pull/2', { :link => :pull_request })
62
+ expect { subject.validate! }.to raise_error
63
+ end
64
+
65
+ it 'raise an exception if it cannot extract the user' do
66
+ subject.parse('http://github.com/', { :link => :pull_request })
67
+ expect { subject.validate! }.to raise_error
68
+ end
69
+
70
+ it 'raise an exception if it cannot extract the project' do
71
+ subject.parse('http://github.com/elasticsearch', { :link => :pull_request })
72
+ expect { subject.validate! }.to raise_error
73
+ end
74
+
75
+ it 'raise an exception if it cannot extract the pull request number' do
76
+ subject.parse('http://github.com/elasticsearch/logstash/pull/', { :link => :pull_request })
77
+ expect { subject.validate! }.to raise_error
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,211 @@
1
+ require "spec_helper"
2
+ require "insist"
3
+ require "stud/temporary"
4
+ require "fileutils"
5
+
6
+ describe Lita::Handlers::Jls, :lita_handler => true do
7
+ it do
8
+ messages = [
9
+ "merge https://github.com/foo/bar/pull/123 bar",
10
+ "merge https://github.com/user/foo/pull/123 bar 1.x master",
11
+ "merge https://github.com/elasticsearch/fancypants/pull/123 bar",
12
+ "merge https://github.com/some-test/another-thing/pull/123 bar baz fizz",
13
+ "merge? https://github.com/some-test/another-thing/pull/123 bar fancy-pants",
14
+ ]
15
+ messages.each do |m|
16
+ is_expected.to route_command(m).to(:merge)
17
+ end
18
+ end
19
+
20
+ it "routes `(tableflip)` to :tableflip" do
21
+ is_expected.to route_command("(tableflip)").to(:tableflip)
22
+ end
23
+
24
+ it "routes `publish` to :publish" do
25
+ is_expected.to route_command("publish https://github.com/foo/bar").with_authorization_for(:logstash).to(:publish)
26
+ end
27
+
28
+ it "routes `why computer so bad` to :pop_exception" do
29
+ is_expected.to route_command("why computer so bad?").to(:pop_exception)
30
+ is_expected.to route_command("why computers so bad?").to(:pop_exception)
31
+ is_expected.to route_command("explain").to(:pop_exception)
32
+ end
33
+
34
+ it "routes migrate_pr to :migrate_pr with proper arguments" do
35
+ is_expected.to route_command("migrate_pr https://github.com/elasticsearch/logstash/pull/1452 "\
36
+ "https://github.com/logstash-plugins/logstash-codec-line").to(:migrate_pr)
37
+ end
38
+
39
+ context "test migrate dummy pr", :network => true do
40
+ it "does migrate_pr correctly" do
41
+ VCR.use_cassette("successful_migrate_pr") do
42
+ send_command("migrate_pr https://github.com/elasticsearch/logstash/pull/1452 "\
43
+ "https://github.com/logstash-plugins/logstash-codec-line")
44
+ end
45
+ end
46
+ end
47
+
48
+ context "when dealing with exceptions", :network => true do
49
+ let(:bad_exception) { double("exception", :backtrace => 'line X', :message => '0 != 1', :exception => 'not working') }
50
+
51
+ it 'should pop the exception saved to redis' do
52
+ subject.push_exception(bad_exception)
53
+ send_command("Why computers so bad?")
54
+
55
+ expect(replies[1]).to match(/^exception: #{bad_exception.exception}/)
56
+ expect(replies[2]).to match(/^message: #{bad_exception.message}/)
57
+ expect(replies[3]).to match(/^backtrace: #{bad_exception.backtrace}/)
58
+ end
59
+
60
+ it 'doesnt return an exception if the list is empty' do
61
+ send_command("Why computers so bad?")
62
+ expect(replies[1]).to match(/No exception saved/)
63
+ end
64
+
65
+ it 'permits to add context keys to the exception' do
66
+ project = 'elasticsearch/jarvis'
67
+ subject.push_exception(bad_exception, :project => project)
68
+
69
+ send_command("Why computers so bad?")
70
+ expect(replies.last).to match(/^project: #{project}/)
71
+ end
72
+ end
73
+
74
+ context "#merge", :network => true do
75
+ before do
76
+ original_git = subject.method(:git)
77
+
78
+ allow(subject.config).to receive(:cla_uri).and_return(ENV['ELASTICSEARCH_CLA_URL'])
79
+
80
+ allow(subject).to receive(:git).with(any_args) do |gitdir, *args|
81
+ # Ignore any 'git push' attempts
82
+ if args[0] == "push" # git("push", ...)
83
+ nil
84
+ else
85
+ original_git.call(gitdir, *args)
86
+ end
87
+ end
88
+ end
89
+
90
+ it "should reply successfully if the merge works" do
91
+ VCR.use_cassette("successful_clacheck", :tag => :internal, :match_requests_on => [:path]) do
92
+ allow(subject).to receive(:github_issue_label) { nil }
93
+ allow(subject).to receive(:github_issue_comment) { nil }
94
+
95
+ expect(subject).to receive(:github_issue_label).with("jordansissel/this-is-only-a-test", 1, [])
96
+
97
+ send_command("merge https://github.com/jordansissel/this-is-only-a-test/pull/1 master")
98
+ insist { replies.last } == "(success) jordansissel/this-is-only-a-test#1 merged into: master"
99
+ end
100
+ end
101
+
102
+ it "should properly handle long commit messages" do
103
+ VCR.use_cassette("successful_clacheck_long_commit", :tag => :internal, :match_requests_on => [:path]) do
104
+ allow(subject).to receive(:github_issue_comment) { nil }
105
+ send_command("merge https://github.com/jordansissel/this-is-only-a-test/pull/4 master")
106
+ insist { replies.last } == "(success) jordansissel/this-is-only-a-test#4 merged into: master"
107
+
108
+ repodir = subject.instance_eval { gitdir("this-is-only-a-test") }
109
+ Dir.chdir(repodir) do
110
+ log = `git log --format="%B" -n 1 HEAD`.chomp
111
+ insist { log } == "One two three four five six seven eight.
112
+
113
+ Nine ten eleven.
114
+
115
+ Twelve?
116
+ * Thirteen
117
+ * Fourteen
118
+
119
+ Fixes #4
120
+ "
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
126
+
127
+ if ENV["DEBUG"]
128
+ logger = Cabin::Channel.get
129
+ logger.level = :debug if ENV["DEBUG"]
130
+ end
131
+
132
+ module Fixture
133
+ class Util
134
+ include LitaJLS::Util
135
+ public(:gitdir, :clone_at, :github_issue_label)
136
+
137
+ def workdir(*args)
138
+ return @workdir if @workdir
139
+ @workdir = Stud::Temporary.directory("lita-jls-testing")
140
+ end
141
+ end
142
+ end
143
+
144
+ #module Stud::Temporary
145
+ #alias_method :directory_orig, :directory
146
+ #def directory(*args)
147
+ #r = directory_orig(*args)
148
+ #puts r => caller[0]
149
+ #r
150
+ #end
151
+ #end
152
+
153
+ describe LitaJLS::Util do
154
+ subject do
155
+ Fixture::Util.new
156
+ end
157
+
158
+ after do
159
+ FileUtils.rm_rf(subject.workdir)
160
+ end
161
+
162
+ context "#gitdir" do
163
+ let(:dir) { subject.gitdir("whatever") }
164
+ after { Dir.rmdir(dir) }
165
+ it "should be a string" do
166
+ insist { dir }.is_a?(String)
167
+ end
168
+ it "starts with the workdir" do
169
+ insist { dir } =~ Regexp.new("^" + Regexp.escape(subject.workdir))
170
+ end
171
+ end
172
+
173
+ context "#clone_at" do
174
+ let(:url) { 'https://github.com/jordansissel/this-is-only-a-test' }
175
+ let(:repo) { Stud::Temporary.directory('lita-jls-testing') }
176
+
177
+ before do
178
+ insist { repo } =~ /lita-jls-testing/ # just in case.
179
+ end
180
+
181
+ after do
182
+ FileUtils.rm_rf(repo)
183
+ end
184
+
185
+ it "should clone" do
186
+ subject.clone_at(url, repo)
187
+ expect(File.directory?(repo)).to eq(true)
188
+ insist { File }.directory?(File.join(repo, ".git"))
189
+ end
190
+ end
191
+
192
+ context "#github_issue_label" do
193
+ let(:issue) do
194
+ expect(subject.github_client).to receive(:add_labels_to_an_issue).with("#{user}/#{project}", pr.to_i, labels)
195
+ github_issue_label("jordansissel/this-is-only-a-test", 1, [ "one", "two", "three" ])
196
+ end
197
+
198
+ it 'should not raise and exception if the label is an empty list' do
199
+ expect { subject.github_issue_label("jordansissel/this-is-only-a-test", 1, []) }.not_to raise_error
200
+ end
201
+ end
202
+
203
+ context "#workdir" do
204
+ it "should return the same value on multiple invocations" do
205
+ expected = subject.workdir("foo")
206
+ 5.times do
207
+ insist { subject.workdir("foo") } == expected
208
+ end
209
+ end
210
+ end
211
+ end
@@ -0,0 +1,31 @@
1
+ require "simplecov"
2
+ require "coveralls"
3
+ require "vcr"
4
+ require "lita/rspec"
5
+ require "lita-jls"
6
+ require "uri"
7
+
8
+ Lita.version_3_compatibility_mode = false
9
+
10
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
11
+ SimpleCov::Formatter::HTMLFormatter,
12
+ Coveralls::SimpleCov::Formatter
13
+ ]
14
+
15
+ SimpleCov.start { add_filter "/spec/" }
16
+
17
+ VCR.configure do |config|
18
+ config.cassette_library_dir = File.join(File.dirname(__FILE__), 'fixtures', 'vcr_cassettes')
19
+ config.hook_into :webmock
20
+ # config.debug_logger = true
21
+
22
+ config.before_record do |interaction|
23
+ interaction.response.headers.delete('Set-Cookie')
24
+ interaction.request.headers.delete('Authorization')
25
+ end
26
+
27
+ config.before_record(:internal) do |interaction|
28
+ uri = URI.parse(interaction.request.uri)
29
+ interaction.request.uri.sub!(/:\/\/.*#{Regexp.escape(uri.host)}/, "://test.local" )
30
+ end
31
+ end
metadata ADDED
@@ -0,0 +1,338 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lita-jls
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.11
5
+ platform: ruby
6
+ authors:
7
+ - Jordan Sissel
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: lita
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '3.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '3.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: cabin
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: octokit
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: netrc
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: mbox
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: insist
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: gems
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 0.8.3
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.8.3
125
+ - !ruby/object:Gem::Dependency
126
+ name: semverly
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 1.0.0
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 1.0.0
139
+ - !ruby/object:Gem::Dependency
140
+ name: bundler
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '1.3'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.3'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rake
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: stud
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rspec
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: 3.0.0
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: 3.0.0
195
+ - !ruby/object:Gem::Dependency
196
+ name: simplecov
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: pry
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: coveralls
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: vcr
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: webmock
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
256
+ - !ruby/object:Gem::Version
257
+ version: '0'
258
+ type: :development
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - ">="
263
+ - !ruby/object:Gem::Version
264
+ version: '0'
265
+ description: Some stuff for the lita.io bot
266
+ email:
267
+ - jls@semicomplete.com
268
+ executables: []
269
+ extensions: []
270
+ extra_rdoc_files: []
271
+ files:
272
+ - ".gitignore"
273
+ - Gemfile
274
+ - LICENSE
275
+ - README.md
276
+ - Rakefile
277
+ - lib/lita-jls.rb
278
+ - lib/lita-jls/bot_builder.rb
279
+ - lib/lita-jls/github_url_parser.rb
280
+ - lib/lita-jls/repository.rb
281
+ - lib/lita-jls/util.rb
282
+ - lib/lita/handlers/jls.rb
283
+ - lita-jls.gemspec
284
+ - locales/en.yml
285
+ - spec/fixtures/bad_project/Gemfile
286
+ - spec/fixtures/logstash-codec-edn/logstash-codec-edn.gemspec
287
+ - spec/fixtures/logstash.gemspec
288
+ - spec/fixtures/project_with_version_file/lib/testmore/version.rb
289
+ - spec/fixtures/project_with_version_file/project_with_version_file.gemspec
290
+ - spec/fixtures/vcr_cassettes/fetch_version_of_logstash-output-s3.yml
291
+ - spec/fixtures/vcr_cassettes/gem_doesnt_exist.yml
292
+ - spec/fixtures/vcr_cassettes/successful_clacheck.yml
293
+ - spec/fixtures/vcr_cassettes/successful_clacheck_long_commit.yml
294
+ - spec/fixtures/vcr_cassettes/successful_migrate_pr.yml
295
+ - spec/lita-jls/bot_builder_spec.rb
296
+ - spec/lita-jls/github_url_parser_spec.rb
297
+ - spec/lita/handlers/jls_spec.rb
298
+ - spec/spec_helper.rb
299
+ homepage: http://example.com/
300
+ licenses:
301
+ - MIT
302
+ metadata:
303
+ lita_plugin_type: handler
304
+ post_install_message:
305
+ rdoc_options: []
306
+ require_paths:
307
+ - lib
308
+ required_ruby_version: !ruby/object:Gem::Requirement
309
+ requirements:
310
+ - - ">="
311
+ - !ruby/object:Gem::Version
312
+ version: '0'
313
+ required_rubygems_version: !ruby/object:Gem::Requirement
314
+ requirements:
315
+ - - ">="
316
+ - !ruby/object:Gem::Version
317
+ version: '0'
318
+ requirements: []
319
+ rubyforge_project:
320
+ rubygems_version: 2.4.3
321
+ signing_key:
322
+ specification_version: 4
323
+ summary: Some stuff for the lita.io bot
324
+ test_files:
325
+ - spec/fixtures/bad_project/Gemfile
326
+ - spec/fixtures/logstash-codec-edn/logstash-codec-edn.gemspec
327
+ - spec/fixtures/logstash.gemspec
328
+ - spec/fixtures/project_with_version_file/lib/testmore/version.rb
329
+ - spec/fixtures/project_with_version_file/project_with_version_file.gemspec
330
+ - spec/fixtures/vcr_cassettes/fetch_version_of_logstash-output-s3.yml
331
+ - spec/fixtures/vcr_cassettes/gem_doesnt_exist.yml
332
+ - spec/fixtures/vcr_cassettes/successful_clacheck.yml
333
+ - spec/fixtures/vcr_cassettes/successful_clacheck_long_commit.yml
334
+ - spec/fixtures/vcr_cassettes/successful_migrate_pr.yml
335
+ - spec/lita-jls/bot_builder_spec.rb
336
+ - spec/lita-jls/github_url_parser_spec.rb
337
+ - spec/lita/handlers/jls_spec.rb
338
+ - spec/spec_helper.rb