lita-jls 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/Gemfile +3 -0
- data/LICENSE +19 -0
- data/README.md +24 -0
- data/Rakefile +6 -0
- data/lib/lita-jls.rb +8 -0
- data/lib/lita-jls/bot_builder.rb +240 -0
- data/lib/lita-jls/github_url_parser.rb +43 -0
- data/lib/lita-jls/repository.rb +57 -0
- data/lib/lita-jls/util.rb +259 -0
- data/lib/lita/handlers/jls.rb +321 -0
- data/lita-jls.gemspec +41 -0
- data/locales/en.yml +4 -0
- data/spec/fixtures/bad_project/Gemfile +2 -0
- data/spec/fixtures/logstash-codec-edn/logstash-codec-edn.gemspec +29 -0
- data/spec/fixtures/logstash.gemspec +3 -0
- data/spec/fixtures/project_with_version_file/lib/testmore/version.rb +3 -0
- data/spec/fixtures/project_with_version_file/project_with_version_file.gemspec +9 -0
- data/spec/fixtures/vcr_cassettes/fetch_version_of_logstash-output-s3.yml +96 -0
- data/spec/fixtures/vcr_cassettes/gem_doesnt_exist.yml +57 -0
- data/spec/fixtures/vcr_cassettes/successful_clacheck.yml +127 -0
- data/spec/fixtures/vcr_cassettes/successful_clacheck_long_commit.yml +133 -0
- data/spec/fixtures/vcr_cassettes/successful_migrate_pr.yml +81 -0
- data/spec/lita-jls/bot_builder_spec.rb +158 -0
- data/spec/lita-jls/github_url_parser_spec.rb +80 -0
- data/spec/lita/handlers/jls_spec.rb +211 -0
- data/spec/spec_helper.rb +31 -0
- metadata +338 -0
@@ -0,0 +1,57 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://rubygems.org/api/v1/versions/123-this-doesnt-exist.yaml
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Gems 0.8.3
|
16
|
+
- Ruby
|
17
|
+
Connection:
|
18
|
+
- keep-alive
|
19
|
+
Keep-Alive:
|
20
|
+
- '30'
|
21
|
+
Content-Type:
|
22
|
+
- application/x-www-form-urlencoded
|
23
|
+
response:
|
24
|
+
status:
|
25
|
+
code: 404
|
26
|
+
message: Not Found
|
27
|
+
headers:
|
28
|
+
Server:
|
29
|
+
- nginx
|
30
|
+
Date:
|
31
|
+
- Tue, 16 Dec 2014 16:12:51 GMT
|
32
|
+
Content-Type:
|
33
|
+
- application/x-yaml; charset=utf-8
|
34
|
+
Transfer-Encoding:
|
35
|
+
- chunked
|
36
|
+
Connection:
|
37
|
+
- keep-alive
|
38
|
+
Status:
|
39
|
+
- 404 Not Found
|
40
|
+
X-Content-Type-Options:
|
41
|
+
- nosniff
|
42
|
+
X-Ua-Compatible:
|
43
|
+
- IE=Edge,chrome=1
|
44
|
+
Cache-Control:
|
45
|
+
- no-cache, private
|
46
|
+
X-Request-Id:
|
47
|
+
- 11452fa565f746c1633fc8f219167984
|
48
|
+
X-Runtime:
|
49
|
+
- '0.005424'
|
50
|
+
X-Rack-Cache:
|
51
|
+
- miss
|
52
|
+
body:
|
53
|
+
encoding: UTF-8
|
54
|
+
string: This rubygem could not be found.
|
55
|
+
http_version:
|
56
|
+
recorded_at: Tue, 16 Dec 2014 16:12:51 GMT
|
57
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,127 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://test.local/verify/pull_request?number=1&repository=jordansissel/this-is-only-a-test
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.0
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- "*/*"
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Server:
|
22
|
+
- nginx/1.4.6 (Ubuntu)
|
23
|
+
Date:
|
24
|
+
- Mon, 05 Jan 2015 21:31:30 GMT
|
25
|
+
Content-Type:
|
26
|
+
- application/json
|
27
|
+
Content-Length:
|
28
|
+
- '128'
|
29
|
+
Connection:
|
30
|
+
- keep-alive
|
31
|
+
Access-Control-Allow-Origin:
|
32
|
+
- "*"
|
33
|
+
Access-Control-Allow-Headers:
|
34
|
+
- "*"
|
35
|
+
X-Content-Type-Options:
|
36
|
+
- nosniff
|
37
|
+
body:
|
38
|
+
encoding: UTF-8
|
39
|
+
string: '{"status":"success","status_human":"Success","message":"All commit
|
40
|
+
authors have signed the CLA or are members of Elasticsearch"}'
|
41
|
+
http_version:
|
42
|
+
recorded_at: Mon, 05 Jan 2015 21:25:36 GMT
|
43
|
+
- request:
|
44
|
+
method: get
|
45
|
+
uri: https://test.local/jordansissel/this-is-only-a-test/pull/1.patch
|
46
|
+
body:
|
47
|
+
encoding: US-ASCII
|
48
|
+
string: ''
|
49
|
+
headers:
|
50
|
+
User-Agent:
|
51
|
+
- Faraday v0.9.0
|
52
|
+
Accept-Encoding:
|
53
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
54
|
+
Accept:
|
55
|
+
- "*/*"
|
56
|
+
response:
|
57
|
+
status:
|
58
|
+
code: 200
|
59
|
+
message: OK
|
60
|
+
headers:
|
61
|
+
Server:
|
62
|
+
- GitHub.com
|
63
|
+
Date:
|
64
|
+
- Mon, 05 Jan 2015 21:25:37 GMT
|
65
|
+
Content-Type:
|
66
|
+
- text/plain; charset=utf-8
|
67
|
+
Transfer-Encoding:
|
68
|
+
- chunked
|
69
|
+
Status:
|
70
|
+
- 200 OK
|
71
|
+
X-Xss-Protection:
|
72
|
+
- 1; mode=block
|
73
|
+
X-Frame-Options:
|
74
|
+
- deny
|
75
|
+
Content-Security-Policy:
|
76
|
+
- 'default-src *; script-src assets-cdn.github.com collector-cdn.github.com;
|
77
|
+
object-src assets-cdn.github.com; style-src ''self'' ''unsafe-inline'' ''unsafe-eval''
|
78
|
+
assets-cdn.github.com; img-src ''self'' data: assets-cdn.github.com identicons.github.com
|
79
|
+
www.google-analytics.com collector.githubapp.com *.githubusercontent.com *.gravatar.com
|
80
|
+
*.wp.com; media-src ''none''; frame-src ''self'' render.githubusercontent.com
|
81
|
+
gist.github.com www.youtube.com player.vimeo.com checkout.paypal.com; font-src
|
82
|
+
assets-cdn.github.com; connect-src ''self'' ghconduit.com:25035 live.github.com
|
83
|
+
uploads.github.com www.google-analytics.com s3.amazonaws.com'
|
84
|
+
Cache-Control:
|
85
|
+
- no-cache
|
86
|
+
Vary:
|
87
|
+
- Accept-Encoding
|
88
|
+
- X-PJAX
|
89
|
+
X-Ua-Compatible:
|
90
|
+
- IE=Edge,chrome=1
|
91
|
+
X-Request-Id:
|
92
|
+
- c7b7a0a0845e9dfde70a55bd614927ca
|
93
|
+
X-Runtime:
|
94
|
+
- '0.040710'
|
95
|
+
X-Rack-Cache:
|
96
|
+
- miss
|
97
|
+
X-Github-Request-Id:
|
98
|
+
- C0DEBD91:481D:15EA456:54AB0151
|
99
|
+
Strict-Transport-Security:
|
100
|
+
- max-age=31536000; includeSubdomains; preload
|
101
|
+
X-Content-Type-Options:
|
102
|
+
- nosniff
|
103
|
+
X-Served-By:
|
104
|
+
- 44f77bef9757b092723b0a6870733b02
|
105
|
+
body:
|
106
|
+
encoding: UTF-8
|
107
|
+
string: |
|
108
|
+
From 6fe527c79a546da6d623b33a001405c3473addbd Mon Sep 17 00:00:00 2001
|
109
|
+
From: Jordan Sissel <jls@semicomplete.com>
|
110
|
+
Date: Thu, 25 Sep 2014 22:39:16 +0000
|
111
|
+
Subject: [PATCH] Happy little message
|
112
|
+
|
113
|
+
---
|
114
|
+
b | 1 +
|
115
|
+
1 file changed, 1 insertion(+)
|
116
|
+
create mode 100644 b
|
117
|
+
|
118
|
+
diff --git a/b b/b
|
119
|
+
new file mode 100644
|
120
|
+
index 0000000..bba2d67
|
121
|
+
--- /dev/null
|
122
|
+
+++ b/b
|
123
|
+
@@ -0,0 +1 @@
|
124
|
+
+Thu Sep 25 22:39:11 UTC 2014
|
125
|
+
http_version:
|
126
|
+
recorded_at: Mon, 05 Jan 2015 21:25:37 GMT
|
127
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,133 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://test.local/verify/pull_request?number=4&repository=jordansissel/this-is-only-a-test
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.0
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- "*/*"
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Server:
|
22
|
+
- nginx/1.4.6 (Ubuntu)
|
23
|
+
Date:
|
24
|
+
- Mon, 05 Jan 2015 21:31:31 GMT
|
25
|
+
Content-Type:
|
26
|
+
- application/json
|
27
|
+
Content-Length:
|
28
|
+
- '128'
|
29
|
+
Connection:
|
30
|
+
- keep-alive
|
31
|
+
Access-Control-Allow-Origin:
|
32
|
+
- "*"
|
33
|
+
Access-Control-Allow-Headers:
|
34
|
+
- "*"
|
35
|
+
X-Content-Type-Options:
|
36
|
+
- nosniff
|
37
|
+
body:
|
38
|
+
encoding: UTF-8
|
39
|
+
string: '{"status":"success","status_human":"Success","message":"All commit
|
40
|
+
authors have signed the CLA or are members of Elasticsearch"}'
|
41
|
+
http_version:
|
42
|
+
recorded_at: Mon, 05 Jan 2015 21:25:38 GMT
|
43
|
+
- request:
|
44
|
+
method: get
|
45
|
+
uri: https://test.local/jordansissel/this-is-only-a-test/pull/4.patch
|
46
|
+
body:
|
47
|
+
encoding: US-ASCII
|
48
|
+
string: ''
|
49
|
+
headers:
|
50
|
+
User-Agent:
|
51
|
+
- Faraday v0.9.0
|
52
|
+
Accept-Encoding:
|
53
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
54
|
+
Accept:
|
55
|
+
- "*/*"
|
56
|
+
response:
|
57
|
+
status:
|
58
|
+
code: 200
|
59
|
+
message: OK
|
60
|
+
headers:
|
61
|
+
Server:
|
62
|
+
- GitHub.com
|
63
|
+
Date:
|
64
|
+
- Mon, 05 Jan 2015 21:25:38 GMT
|
65
|
+
Content-Type:
|
66
|
+
- text/plain; charset=utf-8
|
67
|
+
Transfer-Encoding:
|
68
|
+
- chunked
|
69
|
+
Status:
|
70
|
+
- 200 OK
|
71
|
+
X-Xss-Protection:
|
72
|
+
- 1; mode=block
|
73
|
+
X-Frame-Options:
|
74
|
+
- deny
|
75
|
+
Content-Security-Policy:
|
76
|
+
- 'default-src *; script-src assets-cdn.github.com collector-cdn.github.com;
|
77
|
+
object-src assets-cdn.github.com; style-src ''self'' ''unsafe-inline'' ''unsafe-eval''
|
78
|
+
assets-cdn.github.com; img-src ''self'' data: assets-cdn.github.com identicons.github.com
|
79
|
+
www.google-analytics.com collector.githubapp.com *.githubusercontent.com *.gravatar.com
|
80
|
+
*.wp.com; media-src ''none''; frame-src ''self'' render.githubusercontent.com
|
81
|
+
gist.github.com www.youtube.com player.vimeo.com checkout.paypal.com; font-src
|
82
|
+
assets-cdn.github.com; connect-src ''self'' ghconduit.com:25035 live.github.com
|
83
|
+
uploads.github.com www.google-analytics.com s3.amazonaws.com'
|
84
|
+
Cache-Control:
|
85
|
+
- no-cache
|
86
|
+
Vary:
|
87
|
+
- Accept-Encoding
|
88
|
+
- X-PJAX
|
89
|
+
X-Ua-Compatible:
|
90
|
+
- IE=Edge,chrome=1
|
91
|
+
X-Request-Id:
|
92
|
+
- 1f5263bae1f70249691653237f258e29
|
93
|
+
X-Runtime:
|
94
|
+
- '0.029353'
|
95
|
+
X-Rack-Cache:
|
96
|
+
- miss
|
97
|
+
X-Github-Request-Id:
|
98
|
+
- C0DEBD91:4818:6B28D4:54AB0152
|
99
|
+
Strict-Transport-Security:
|
100
|
+
- max-age=31536000; includeSubdomains; preload
|
101
|
+
X-Content-Type-Options:
|
102
|
+
- nosniff
|
103
|
+
X-Served-By:
|
104
|
+
- 3f38dada85f97412f7f824e59f77fa9d
|
105
|
+
body:
|
106
|
+
encoding: UTF-8
|
107
|
+
string: |
|
108
|
+
From 6aa67f489306e0ea28d1b47421006278b2ca08ec Mon Sep 17 00:00:00 2001
|
109
|
+
From: Jordan Sissel <jls@semicomplete.com>
|
110
|
+
Date: Fri, 26 Sep 2014 22:00:22 -0700
|
111
|
+
Subject: [PATCH] One two three four five six seven eight.
|
112
|
+
|
113
|
+
Nine ten eleven.
|
114
|
+
|
115
|
+
Twelve?
|
116
|
+
* Thirteen
|
117
|
+
* Fourteen
|
118
|
+
---
|
119
|
+
asdf | 2 +-
|
120
|
+
1 file changed, 1 insertion(+), 1 deletion(-)
|
121
|
+
|
122
|
+
diff --git a/asdf b/asdf
|
123
|
+
index c6dbd56..cc182f8 100644
|
124
|
+
--- a/asdf
|
125
|
+
+++ b/asdf
|
126
|
+
@@ -1,3 +1,3 @@
|
127
|
+
Sat Sep 27 00:29:50 UTC 2014
|
128
|
+
-asdfasdfasdf
|
129
|
+
+Long commit?
|
130
|
+
Sat Sep 27 04:42:57 UTC 2014
|
131
|
+
http_version:
|
132
|
+
recorded_at: Mon, 05 Jan 2015 21:25:38 GMT
|
133
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,81 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.github.com/repos/elasticsearch/logstash/pulls/1452
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/vnd.github.v3+json
|
12
|
+
User-Agent:
|
13
|
+
- Octokit Ruby Gem 3.7.0
|
14
|
+
Content-Type:
|
15
|
+
- application/json
|
16
|
+
Accept-Encoding:
|
17
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: OK
|
22
|
+
headers:
|
23
|
+
Server:
|
24
|
+
- GitHub.com
|
25
|
+
Date:
|
26
|
+
- Mon, 12 Jan 2015 20:08:14 GMT
|
27
|
+
Content-Type:
|
28
|
+
- application/json; charset=utf-8
|
29
|
+
Transfer-Encoding:
|
30
|
+
- chunked
|
31
|
+
Status:
|
32
|
+
- 200 OK
|
33
|
+
X-Ratelimit-Limit:
|
34
|
+
- '60'
|
35
|
+
X-Ratelimit-Remaining:
|
36
|
+
- '59'
|
37
|
+
X-Ratelimit-Reset:
|
38
|
+
- '1421096894'
|
39
|
+
Cache-Control:
|
40
|
+
- public, max-age=60, s-maxage=60
|
41
|
+
Last-Modified:
|
42
|
+
- Mon, 12 Jan 2015 18:10:42 GMT
|
43
|
+
Etag:
|
44
|
+
- W/"3c59cf8e3601dfe0a9bec000cd2b8f7e"
|
45
|
+
Vary:
|
46
|
+
- Accept
|
47
|
+
- Accept-Encoding
|
48
|
+
X-Github-Media-Type:
|
49
|
+
- github.v3; format=json
|
50
|
+
X-Xss-Protection:
|
51
|
+
- 1; mode=block
|
52
|
+
X-Frame-Options:
|
53
|
+
- deny
|
54
|
+
Content-Security-Policy:
|
55
|
+
- default-src 'none'
|
56
|
+
Access-Control-Allow-Credentials:
|
57
|
+
- 'true'
|
58
|
+
Access-Control-Expose-Headers:
|
59
|
+
- ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset,
|
60
|
+
X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
|
61
|
+
Access-Control-Allow-Origin:
|
62
|
+
- "*"
|
63
|
+
X-Github-Request-Id:
|
64
|
+
- 32A857BD:6D76:29E3EF1:54B429AD
|
65
|
+
Strict-Transport-Security:
|
66
|
+
- max-age=31536000; includeSubdomains; preload
|
67
|
+
X-Content-Type-Options:
|
68
|
+
- nosniff
|
69
|
+
X-Served-By:
|
70
|
+
- c6c65e5196703428e7641f7d1e9bc353
|
71
|
+
body:
|
72
|
+
encoding: UTF-8
|
73
|
+
string: '{"url":"https://api.github.com/repos/elasticsearch/logstash/pulls/1452","id":17324038,"html_url":"https://github.com/elasticsearch/logstash/pull/1452","diff_url":"https://github.com/elasticsearch/logstash/pull/1452.diff","patch_url":"https://github.com/elasticsearch/logstash/pull/1452.patch","issue_url":"https://api.github.com/repos/elasticsearch/logstash/issues/1452","number":1452,"state":"closed","locked":false,"title":"Fix
|
74
|
+
for #1451","user":{"login":"suyograo","id":1595958,"avatar_url":"https://avatars.githubusercontent.com/u/1595958?v=3","gravatar_id":"","url":"https://api.github.com/users/suyograo","html_url":"https://github.com/suyograo","followers_url":"https://api.github.com/users/suyograo/followers","following_url":"https://api.github.com/users/suyograo/following{/other_user}","gists_url":"https://api.github.com/users/suyograo/gists{/gist_id}","starred_url":"https://api.github.com/users/suyograo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/suyograo/subscriptions","organizations_url":"https://api.github.com/users/suyograo/orgs","repos_url":"https://api.github.com/users/suyograo/repos","events_url":"https://api.github.com/users/suyograo/events{/privacy}","received_events_url":"https://api.github.com/users/suyograo/received_events","type":"User","site_admin":false},"body":"Line
|
75
|
+
codec was using an undefined variable which caused it to throw an exception.\r\n\r\nFixed
|
76
|
+
and added tests for line codecs\r\n\r\nCloses #1451","created_at":"2014-06-18T22:32:38Z","updated_at":"2014-09-09T13:36:19Z","closed_at":"2014-06-30T18:25:43Z","merged_at":"2014-06-30T18:25:43Z","merge_commit_sha":"450a95413c282b3ef3af504e45a2b1eade19617f","assignee":{"login":"suyograo","id":1595958,"avatar_url":"https://avatars.githubusercontent.com/u/1595958?v=3","gravatar_id":"","url":"https://api.github.com/users/suyograo","html_url":"https://github.com/suyograo","followers_url":"https://api.github.com/users/suyograo/followers","following_url":"https://api.github.com/users/suyograo/following{/other_user}","gists_url":"https://api.github.com/users/suyograo/gists{/gist_id}","starred_url":"https://api.github.com/users/suyograo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/suyograo/subscriptions","organizations_url":"https://api.github.com/users/suyograo/orgs","repos_url":"https://api.github.com/users/suyograo/repos","events_url":"https://api.github.com/users/suyograo/events{/privacy}","received_events_url":"https://api.github.com/users/suyograo/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/elasticsearch/logstash/milestones/2","labels_url":"https://api.github.com/repos/elasticsearch/logstash/milestones/2/labels","id":624113,"number":2,"title":"v1.5.0","description":"","creator":{"login":"colinsurprenant","id":2010,"avatar_url":"https://avatars.githubusercontent.com/u/2010?v=3","gravatar_id":"","url":"https://api.github.com/users/colinsurprenant","html_url":"https://github.com/colinsurprenant","followers_url":"https://api.github.com/users/colinsurprenant/followers","following_url":"https://api.github.com/users/colinsurprenant/following{/other_user}","gists_url":"https://api.github.com/users/colinsurprenant/gists{/gist_id}","starred_url":"https://api.github.com/users/colinsurprenant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/colinsurprenant/subscriptions","organizations_url":"https://api.github.com/users/colinsurprenant/orgs","repos_url":"https://api.github.com/users/colinsurprenant/repos","events_url":"https://api.github.com/users/colinsurprenant/events{/privacy}","received_events_url":"https://api.github.com/users/colinsurprenant/received_events","type":"User","site_admin":false},"open_issues":27,"closed_issues":195,"state":"open","created_at":"2014-04-08T16:53:38Z","updated_at":"2015-01-12T18:25:12Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/elasticsearch/logstash/pulls/1452/commits","review_comments_url":"https://api.github.com/repos/elasticsearch/logstash/pulls/1452/comments","review_comment_url":"https://api.github.com/repos/elasticsearch/logstash/pulls/comments/{number}","comments_url":"https://api.github.com/repos/elasticsearch/logstash/issues/1452/comments","statuses_url":"https://api.github.com/repos/elasticsearch/logstash/statuses/674c3812f53d6a4ce6b98f78c8a539e0332cc664","head":{"label":"suyograo:fix/1451","ref":"fix/1451","sha":"674c3812f53d6a4ce6b98f78c8a539e0332cc664","user":{"login":"suyograo","id":1595958,"avatar_url":"https://avatars.githubusercontent.com/u/1595958?v=3","gravatar_id":"","url":"https://api.github.com/users/suyograo","html_url":"https://github.com/suyograo","followers_url":"https://api.github.com/users/suyograo/followers","following_url":"https://api.github.com/users/suyograo/following{/other_user}","gists_url":"https://api.github.com/users/suyograo/gists{/gist_id}","starred_url":"https://api.github.com/users/suyograo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/suyograo/subscriptions","organizations_url":"https://api.github.com/users/suyograo/orgs","repos_url":"https://api.github.com/users/suyograo/repos","events_url":"https://api.github.com/users/suyograo/events{/privacy}","received_events_url":"https://api.github.com/users/suyograo/received_events","type":"User","site_admin":false},"repo":{"id":20894963,"name":"logstash","full_name":"suyograo/logstash","owner":{"login":"suyograo","id":1595958,"avatar_url":"https://avatars.githubusercontent.com/u/1595958?v=3","gravatar_id":"","url":"https://api.github.com/users/suyograo","html_url":"https://github.com/suyograo","followers_url":"https://api.github.com/users/suyograo/followers","following_url":"https://api.github.com/users/suyograo/following{/other_user}","gists_url":"https://api.github.com/users/suyograo/gists{/gist_id}","starred_url":"https://api.github.com/users/suyograo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/suyograo/subscriptions","organizations_url":"https://api.github.com/users/suyograo/orgs","repos_url":"https://api.github.com/users/suyograo/repos","events_url":"https://api.github.com/users/suyograo/events{/privacy}","received_events_url":"https://api.github.com/users/suyograo/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/suyograo/logstash","description":"logstash
|
77
|
+
- logs/event transport, processing, management, search.","fork":true,"url":"https://api.github.com/repos/suyograo/logstash","forks_url":"https://api.github.com/repos/suyograo/logstash/forks","keys_url":"https://api.github.com/repos/suyograo/logstash/keys{/key_id}","collaborators_url":"https://api.github.com/repos/suyograo/logstash/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/suyograo/logstash/teams","hooks_url":"https://api.github.com/repos/suyograo/logstash/hooks","issue_events_url":"https://api.github.com/repos/suyograo/logstash/issues/events{/number}","events_url":"https://api.github.com/repos/suyograo/logstash/events","assignees_url":"https://api.github.com/repos/suyograo/logstash/assignees{/user}","branches_url":"https://api.github.com/repos/suyograo/logstash/branches{/branch}","tags_url":"https://api.github.com/repos/suyograo/logstash/tags","blobs_url":"https://api.github.com/repos/suyograo/logstash/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/suyograo/logstash/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/suyograo/logstash/git/refs{/sha}","trees_url":"https://api.github.com/repos/suyograo/logstash/git/trees{/sha}","statuses_url":"https://api.github.com/repos/suyograo/logstash/statuses/{sha}","languages_url":"https://api.github.com/repos/suyograo/logstash/languages","stargazers_url":"https://api.github.com/repos/suyograo/logstash/stargazers","contributors_url":"https://api.github.com/repos/suyograo/logstash/contributors","subscribers_url":"https://api.github.com/repos/suyograo/logstash/subscribers","subscription_url":"https://api.github.com/repos/suyograo/logstash/subscription","commits_url":"https://api.github.com/repos/suyograo/logstash/commits{/sha}","git_commits_url":"https://api.github.com/repos/suyograo/logstash/git/commits{/sha}","comments_url":"https://api.github.com/repos/suyograo/logstash/comments{/number}","issue_comment_url":"https://api.github.com/repos/suyograo/logstash/issues/comments/{number}","contents_url":"https://api.github.com/repos/suyograo/logstash/contents/{+path}","compare_url":"https://api.github.com/repos/suyograo/logstash/compare/{base}...{head}","merges_url":"https://api.github.com/repos/suyograo/logstash/merges","archive_url":"https://api.github.com/repos/suyograo/logstash/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/suyograo/logstash/downloads","issues_url":"https://api.github.com/repos/suyograo/logstash/issues{/number}","pulls_url":"https://api.github.com/repos/suyograo/logstash/pulls{/number}","milestones_url":"https://api.github.com/repos/suyograo/logstash/milestones{/number}","notifications_url":"https://api.github.com/repos/suyograo/logstash/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/suyograo/logstash/labels{/name}","releases_url":"https://api.github.com/repos/suyograo/logstash/releases{/id}","created_at":"2014-06-16T18:07:19Z","updated_at":"2014-12-05T01:03:09Z","pushed_at":"2015-01-12T18:10:27Z","git_url":"git://github.com/suyograo/logstash.git","ssh_url":"git@github.com:suyograo/logstash.git","clone_url":"https://github.com/suyograo/logstash.git","svn_url":"https://github.com/suyograo/logstash","homepage":"http://logstash.net/","size":70782,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"elasticsearch:master","ref":"master","sha":"65af91d0158725fd18dc09897c6d73839efa47d0","user":{"login":"elasticsearch","id":141304,"avatar_url":"https://avatars.githubusercontent.com/u/141304?v=3","gravatar_id":"","url":"https://api.github.com/users/elasticsearch","html_url":"https://github.com/elasticsearch","followers_url":"https://api.github.com/users/elasticsearch/followers","following_url":"https://api.github.com/users/elasticsearch/following{/other_user}","gists_url":"https://api.github.com/users/elasticsearch/gists{/gist_id}","starred_url":"https://api.github.com/users/elasticsearch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elasticsearch/subscriptions","organizations_url":"https://api.github.com/users/elasticsearch/orgs","repos_url":"https://api.github.com/users/elasticsearch/repos","events_url":"https://api.github.com/users/elasticsearch/events{/privacy}","received_events_url":"https://api.github.com/users/elasticsearch/received_events","type":"Organization","site_admin":false},"repo":{"id":1090311,"name":"logstash","full_name":"elasticsearch/logstash","owner":{"login":"elasticsearch","id":141304,"avatar_url":"https://avatars.githubusercontent.com/u/141304?v=3","gravatar_id":"","url":"https://api.github.com/users/elasticsearch","html_url":"https://github.com/elasticsearch","followers_url":"https://api.github.com/users/elasticsearch/followers","following_url":"https://api.github.com/users/elasticsearch/following{/other_user}","gists_url":"https://api.github.com/users/elasticsearch/gists{/gist_id}","starred_url":"https://api.github.com/users/elasticsearch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elasticsearch/subscriptions","organizations_url":"https://api.github.com/users/elasticsearch/orgs","repos_url":"https://api.github.com/users/elasticsearch/repos","events_url":"https://api.github.com/users/elasticsearch/events{/privacy}","received_events_url":"https://api.github.com/users/elasticsearch/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/elasticsearch/logstash","description":"logstash
|
78
|
+
- logs/event transport, processing, management, search.","fork":false,"url":"https://api.github.com/repos/elasticsearch/logstash","forks_url":"https://api.github.com/repos/elasticsearch/logstash/forks","keys_url":"https://api.github.com/repos/elasticsearch/logstash/keys{/key_id}","collaborators_url":"https://api.github.com/repos/elasticsearch/logstash/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/elasticsearch/logstash/teams","hooks_url":"https://api.github.com/repos/elasticsearch/logstash/hooks","issue_events_url":"https://api.github.com/repos/elasticsearch/logstash/issues/events{/number}","events_url":"https://api.github.com/repos/elasticsearch/logstash/events","assignees_url":"https://api.github.com/repos/elasticsearch/logstash/assignees{/user}","branches_url":"https://api.github.com/repos/elasticsearch/logstash/branches{/branch}","tags_url":"https://api.github.com/repos/elasticsearch/logstash/tags","blobs_url":"https://api.github.com/repos/elasticsearch/logstash/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/elasticsearch/logstash/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/elasticsearch/logstash/git/refs{/sha}","trees_url":"https://api.github.com/repos/elasticsearch/logstash/git/trees{/sha}","statuses_url":"https://api.github.com/repos/elasticsearch/logstash/statuses/{sha}","languages_url":"https://api.github.com/repos/elasticsearch/logstash/languages","stargazers_url":"https://api.github.com/repos/elasticsearch/logstash/stargazers","contributors_url":"https://api.github.com/repos/elasticsearch/logstash/contributors","subscribers_url":"https://api.github.com/repos/elasticsearch/logstash/subscribers","subscription_url":"https://api.github.com/repos/elasticsearch/logstash/subscription","commits_url":"https://api.github.com/repos/elasticsearch/logstash/commits{/sha}","git_commits_url":"https://api.github.com/repos/elasticsearch/logstash/git/commits{/sha}","comments_url":"https://api.github.com/repos/elasticsearch/logstash/comments{/number}","issue_comment_url":"https://api.github.com/repos/elasticsearch/logstash/issues/comments/{number}","contents_url":"https://api.github.com/repos/elasticsearch/logstash/contents/{+path}","compare_url":"https://api.github.com/repos/elasticsearch/logstash/compare/{base}...{head}","merges_url":"https://api.github.com/repos/elasticsearch/logstash/merges","archive_url":"https://api.github.com/repos/elasticsearch/logstash/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/elasticsearch/logstash/downloads","issues_url":"https://api.github.com/repos/elasticsearch/logstash/issues{/number}","pulls_url":"https://api.github.com/repos/elasticsearch/logstash/pulls{/number}","milestones_url":"https://api.github.com/repos/elasticsearch/logstash/milestones{/number}","notifications_url":"https://api.github.com/repos/elasticsearch/logstash/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/elasticsearch/logstash/labels{/name}","releases_url":"https://api.github.com/repos/elasticsearch/logstash/releases{/id}","created_at":"2010-11-18T01:31:50Z","updated_at":"2015-01-12T18:23:12Z","pushed_at":"2015-01-12T18:23:12Z","git_url":"git://github.com/elasticsearch/logstash.git","ssh_url":"git@github.com:elasticsearch/logstash.git","clone_url":"https://github.com/elasticsearch/logstash.git","svn_url":"https://github.com/elasticsearch/logstash","homepage":"http://logstash.net/","size":85707,"stargazers_count":3507,"watchers_count":3507,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1314,"mirror_url":null,"open_issues_count":572,"forks":1314,"open_issues":572,"watchers":3507,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/elasticsearch/logstash/pulls/1452"},"html":{"href":"https://github.com/elasticsearch/logstash/pull/1452"},"issue":{"href":"https://api.github.com/repos/elasticsearch/logstash/issues/1452"},"comments":{"href":"https://api.github.com/repos/elasticsearch/logstash/issues/1452/comments"},"review_comments":{"href":"https://api.github.com/repos/elasticsearch/logstash/pulls/1452/comments"},"review_comment":{"href":"https://api.github.com/repos/elasticsearch/logstash/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/elasticsearch/logstash/pulls/1452/commits"},"statuses":{"href":"https://api.github.com/repos/elasticsearch/logstash/statuses/674c3812f53d6a4ce6b98f78c8a539e0332cc664"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"suyograo","id":1595958,"avatar_url":"https://avatars.githubusercontent.com/u/1595958?v=3","gravatar_id":"","url":"https://api.github.com/users/suyograo","html_url":"https://github.com/suyograo","followers_url":"https://api.github.com/users/suyograo/followers","following_url":"https://api.github.com/users/suyograo/following{/other_user}","gists_url":"https://api.github.com/users/suyograo/gists{/gist_id}","starred_url":"https://api.github.com/users/suyograo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/suyograo/subscriptions","organizations_url":"https://api.github.com/users/suyograo/orgs","repos_url":"https://api.github.com/users/suyograo/repos","events_url":"https://api.github.com/users/suyograo/events{/privacy}","received_events_url":"https://api.github.com/users/suyograo/received_events","type":"User","site_admin":false},"comments":0,"review_comments":6,"commits":3,"additions":52,"deletions":1,"changed_files":2}'
|
79
|
+
http_version:
|
80
|
+
recorded_at: Mon, 12 Jan 2015 20:08:14 GMT
|
81
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,158 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'lita-jls/bot_builder'
|
3
|
+
require 'stud/temporary'
|
4
|
+
require 'semverly'
|
5
|
+
|
6
|
+
describe LitaJLS::BotBuilder do
|
7
|
+
subject { LitaJLS::BotBuilder.new(File.join(File.dirname(__FILE__), '..', '..')) }
|
8
|
+
let(:config) { { :ruby_version => 'jruby-1.7.16' } }
|
9
|
+
let(:logstash_gem_fixture) { File.join(File.dirname(__FILE__), '..', 'fixtures') }
|
10
|
+
let(:bad_project) { File.join(File.dirname(__FILE__), '..', 'fixtures', 'bad_project') }
|
11
|
+
let(:project_with_version_file) { File.join(File.dirname(__FILE__), '..', 'fixtures', 'project_with_version_file') }
|
12
|
+
|
13
|
+
it 'returns true if the project is a gem' do
|
14
|
+
expect(subject.is_gem?).to eq(true)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'returns false if its not a gem' do
|
18
|
+
Stud::Temporary.directory do |tmp_dir|
|
19
|
+
bot = LitaJLS::BotBuilder.new(tmp_dir)
|
20
|
+
expect(bot.is_gem?).to eq(false)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'return true if the gem is not blacklisted' do
|
25
|
+
expect(subject.publishable?).to eq(true)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'doesnt allow to publish the logstash gem' do
|
29
|
+
bot = LitaJLS::BotBuilder.new(logstash_gem_fixture)
|
30
|
+
expect(bot.publishable?).to eq(false)
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "#fetch_last_released_version" do
|
34
|
+
it 'returns the last version of the specified gem' do
|
35
|
+
VCR.use_cassette('fetch_version_of_logstash-output-s3') do
|
36
|
+
expect(subject.fetch_last_released_version('logstash-output-s3')).to eq('0.1.1')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'return nil if the packages doesnt exist' do
|
41
|
+
VCR.use_cassette('gem_doesnt_exist') do
|
42
|
+
expect(subject.fetch_last_released_version('123-this-doesnt-exist')).to eq(nil)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "#local_version" do
|
48
|
+
# Default way of creating gem with bundler is to define the
|
49
|
+
# version in a version.rb and require it in the gemspec.
|
50
|
+
# the problem with that is Gem::Specification will execute the ruby file
|
51
|
+
# it require the version rb in the current
|
52
|
+
it 'read the version.rb if the project have one' do
|
53
|
+
bot = LitaJLS::BotBuilder.new(project_with_version_file)
|
54
|
+
expect(bot.local_version.to_s).to eq('0.0.2')
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "#execute_command" do
|
59
|
+
it 'return a failing status if the command cannot be run' do
|
60
|
+
bot = LitaJLS::BotBuilder.new(bad_project)
|
61
|
+
expect(bot.run_successfully?(bot.execute_command("sh -c 'exit 1'"))).to eq(false)
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'return sucessful status if the command run correctly' do
|
65
|
+
bot = LitaJLS::BotBuilder.new('../../')
|
66
|
+
expect(bot.run_successfully?(bot.execute_command('bundle install'))).to eq(true)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe '#execute_command_with_ruby' do
|
71
|
+
let(:bot) { LitaJLS::BotBuilder.new(bad_project, config) }
|
72
|
+
it 'add the rvm prefix if local machine is running rvm' do
|
73
|
+
allow(bot).to receive(:using_rvm?).and_return(true)
|
74
|
+
|
75
|
+
expect(bot.execute_command_with_ruby("ls -l").cmd).to eq("rvm #{config[:ruby_version]} do ls -l")
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'add doesnt add the rvm prefix if local machine is not running rvm or rbenv' do
|
79
|
+
allow(bot).to receive(:using_rvm?).and_return(false)
|
80
|
+
allow(bot).to receive(:using_rbenv?).and_return(false)
|
81
|
+
|
82
|
+
expect(bot.execute_command_with_ruby("ls -l").cmd).to eq("ls -l")
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'raise an exception if we detect rbenv' do
|
86
|
+
# this is not currently supported
|
87
|
+
allow(bot).to receive(:using_rvm?).and_return(false)
|
88
|
+
allow(bot).to receive(:using_rbenv?).and_return(true)
|
89
|
+
|
90
|
+
expect{ bot.execute_command_with_ruby("ls -l") }.to raise_error(LitaJLS::BotBuilder::ConfigurationError)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe "#build", :network => true do
|
95
|
+
let!(:test_opsbots_path) { File.expand_path(File.join(File.dirname(__FILE__), '..', 'fixtures', 'test-opsbots')) }
|
96
|
+
let(:tasks_order) {
|
97
|
+
['bundle install',
|
98
|
+
'bundle exec rake vendor',
|
99
|
+
'bundle exec rspec']
|
100
|
+
}
|
101
|
+
let(:bot) do
|
102
|
+
LitaJLS::BotBuilder.new(test_opsbots_path, config.merge({ :tasks_order => tasks_order }))
|
103
|
+
end
|
104
|
+
|
105
|
+
before do
|
106
|
+
if File.directory?(test_opsbots_path)
|
107
|
+
system("git --work-tree=#{test_opsbots_path} --git-dir=#{File.join(test_opsbots_path, '.git')} pull --ff-only origin master")
|
108
|
+
else
|
109
|
+
system("git clone git@github.com:ph/test-opsbots.git #{test_opsbots_path}")
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'should build the project if the local version of the gem is higher than the remote' do
|
114
|
+
allow(bot).to receive(:local_version).and_return(SemVer.new(0, 0, 2))
|
115
|
+
allow(bot).to receive(:rubygems_version).and_return(SemVer.new(0, 0, 1), SemVer.new(0, 0, 1), SemVer.new(0, 0, 2))
|
116
|
+
|
117
|
+
results = bot.build
|
118
|
+
|
119
|
+
expect(results[0].message).to match(/#{tasks_order[0]}/)
|
120
|
+
expect(results[0].status).to eq(:ok)
|
121
|
+
expect(results[1].message).to match(/#{tasks_order[1]}/)
|
122
|
+
expect(results[1].status).to eq(:ok)
|
123
|
+
expect(results[2].message).to match(/#{tasks_order[2]}/)
|
124
|
+
expect(results[2].status).to eq(:ok)
|
125
|
+
expect(results[3].message).to match(/^version on rubygems match local version/)
|
126
|
+
expect(results[3].status).to eq(:ok)
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'doesnt publish if the gem is the same version locally and on rubygems' do
|
130
|
+
allow(bot).to receive(:local_version).and_return(SemVer.new(0, 0, 1))
|
131
|
+
allow(bot).to receive(:rubygems_version).and_return(SemVer.new(0, 0, 1))
|
132
|
+
|
133
|
+
results = bot.build
|
134
|
+
expect(results.size).to eq(1)
|
135
|
+
expect(results[0].status).to eq(:error)
|
136
|
+
expect(results[0].message).to match(/^Local version and rubygems version are the same/)
|
137
|
+
end
|
138
|
+
|
139
|
+
it 'doesnt build if the project doesnt have a gemspec' do
|
140
|
+
Stud::Temporary.directory do |tmp_dir|
|
141
|
+
bot = LitaJLS::BotBuilder.new(tmp_dir, config.merge({ :tasks_order => ['bundle install',
|
142
|
+
'bundle exec rake vendor',
|
143
|
+
'bundle exec rspec'] }))
|
144
|
+
|
145
|
+
results = bot.build
|
146
|
+
expect(results.size).to eq(1)
|
147
|
+
expect(results[0].status).to eq(:error)
|
148
|
+
expect(results[0].message).to match(/doesn't have a gemspec$/)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
it 'should read the specification file' do
|
153
|
+
repository = File.expand_path('spec/fixtures/logstash-codec-edn')
|
154
|
+
bot = LitaJLS::BotBuilder.new(repository)
|
155
|
+
expect(bot.gem_specification.version).to eq('0.1.3')
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|