txgh-server 2.2.0 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/txgh-server/transifex_request_auth.rb +1 -0
- data/lib/txgh-server/version.rb +1 -1
- data/lib/txgh-server/webhooks/github.rb +1 -0
- data/lib/txgh-server/webhooks/github/push_handler.rb +8 -9
- data/lib/txgh-server/webhooks/github/status_updater.rb +45 -0
- data/spec/webhooks/github/push_handler_spec.rb +25 -0
- data/spec/webhooks/github/status_updater_spec.rb +58 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 359b3bb8990904063bb4b3f9bbdc8602311ff53f
|
4
|
+
data.tar.gz: d4b6f7e1429cadac6cdf8aada177b54de89fc69c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c793ad9b43034ce152d910bbb6dff0f160d6e30c8df666c4cd93d66461efb4490421832b2799d392288a16566e57af77f201634048a58047465946618dc8989
|
7
|
+
data.tar.gz: 25dc3a1ae9b51abb31d0603948c4b8d1ef2a676f545cee664faf84f97f8936877210319c58a6fcffdd677604c39c2979c46d5af81486050f9458652d8f37a411
|
data/lib/txgh-server/version.rb
CHANGED
@@ -9,6 +9,7 @@ module TxghServer
|
|
9
9
|
autoload :PushHandler, 'txgh-server/webhooks/github/push_handler'
|
10
10
|
autoload :PushAttributes, 'txgh-server/webhooks/github/push_attributes'
|
11
11
|
autoload :RequestHandler, 'txgh-server/webhooks/github/request_handler'
|
12
|
+
autoload :StatusUpdater, 'txgh-server/webhooks/github/status_updater'
|
12
13
|
end
|
13
14
|
end
|
14
15
|
end
|
@@ -30,26 +30,25 @@ module TxghServer
|
|
30
30
|
{ 'author' => attributes.author }
|
31
31
|
end
|
32
32
|
|
33
|
-
|
33
|
+
status_updater.update_status
|
34
34
|
end
|
35
35
|
|
36
36
|
respond_with(200, true)
|
37
|
+
rescue => e
|
38
|
+
status_updater.report_error_and_update_status(e)
|
39
|
+
respond_with_error(500, "Internal server error: #{e.message}", e)
|
37
40
|
end
|
38
41
|
|
39
42
|
private
|
40
43
|
|
41
|
-
def update_github_status
|
42
|
-
Txgh::GithubStatus.update(project, repo, branch)
|
43
|
-
rescue Octokit::UnprocessableEntity
|
44
|
-
# raised because we've tried to create too many statuses for the commit
|
45
|
-
rescue Txgh::TransifexNotFoundError
|
46
|
-
# raised if transifex resource can't be found
|
47
|
-
end
|
48
|
-
|
49
44
|
def pusher
|
50
45
|
@pusher ||= Txgh::Pusher.new(project, repo, branch)
|
51
46
|
end
|
52
47
|
|
48
|
+
def status_updater
|
49
|
+
@status_updater = StatusUpdater.new(project, repo, branch)
|
50
|
+
end
|
51
|
+
|
53
52
|
# finds the resources that were updated in each commit
|
54
53
|
def added_and_modified_resources
|
55
54
|
@amr ||= attributes.files.each_with_object(Set.new) do |file, ret|
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'octokit'
|
2
|
+
|
3
|
+
module TxghServer
|
4
|
+
module Webhooks
|
5
|
+
module Github
|
6
|
+
class StatusUpdater
|
7
|
+
attr_reader :project, :repo, :branch
|
8
|
+
|
9
|
+
def initialize(project, repo, branch)
|
10
|
+
@project = project
|
11
|
+
@repo = repo
|
12
|
+
@branch = branch
|
13
|
+
end
|
14
|
+
|
15
|
+
def report_error_and_update_status(error)
|
16
|
+
error_params = Txgh.events.publish_error!(error)
|
17
|
+
|
18
|
+
Txgh.events.publish_each('github.status.error', error_params) do |status_params|
|
19
|
+
if status_params
|
20
|
+
update_status_safely do
|
21
|
+
Txgh::GithubStatus.error(project, repo, branch, status_params)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def update_status
|
28
|
+
update_status_safely do
|
29
|
+
Txgh::GithubStatus.update(project, repo, branch)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def update_status_safely
|
36
|
+
yield
|
37
|
+
rescue Octokit::UnprocessableEntity
|
38
|
+
# raised because we've tried to create too many statuses for the commit
|
39
|
+
rescue Txgh::TransifexNotFoundError
|
40
|
+
# raised if transifex resource can't be found
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -57,6 +57,31 @@ describe PushHandler do
|
|
57
57
|
expect(response.body).to eq(true)
|
58
58
|
end
|
59
59
|
|
60
|
+
context 'with an error' do
|
61
|
+
let(:description) { 'An error done occurred, fool' }
|
62
|
+
let(:target_url) { 'http://you-goofed.com' }
|
63
|
+
|
64
|
+
let(:status_params) do
|
65
|
+
{ description: description, target_url: target_url }
|
66
|
+
end
|
67
|
+
|
68
|
+
let(:error_params) { { foo: 'bar' } }
|
69
|
+
|
70
|
+
before(:each) do
|
71
|
+
Txgh.events.subscribe(Txgh::Events::ERROR_CHANNEL) { error_params }
|
72
|
+
Txgh.events.subscribe('github.status.error') { status_params }
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'reports errors and updates the github status' do
|
76
|
+
expect(Txgh::GithubStatus).to(
|
77
|
+
receive(:error).with(transifex_project, github_repo, ref, status_params)
|
78
|
+
)
|
79
|
+
|
80
|
+
expect(handler).to receive(:should_process?).and_raise(StandardError)
|
81
|
+
handler.execute
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
60
85
|
context 'with a deleted branch' do
|
61
86
|
let(:before) { nil }
|
62
87
|
let(:after) { '0' * 40 }
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'helpers/standard_txgh_setup'
|
3
|
+
|
4
|
+
include TxghServer::Webhooks::Github
|
5
|
+
|
6
|
+
describe StatusUpdater do
|
7
|
+
include StandardTxghSetup
|
8
|
+
|
9
|
+
let(:updater) { StatusUpdater.new(transifex_project, github_repo, ref) }
|
10
|
+
|
11
|
+
describe '#report_error_and_update_status' do
|
12
|
+
let(:description) { 'An error done occurred, fool' }
|
13
|
+
let(:target_url) { 'http://you-goofed.com' }
|
14
|
+
|
15
|
+
let(:status_params) do
|
16
|
+
{ description: description, target_url: target_url }
|
17
|
+
end
|
18
|
+
|
19
|
+
let(:error_params) { { foo: 'bar' } }
|
20
|
+
|
21
|
+
before(:each) do
|
22
|
+
Txgh.events.subscribe(Txgh::Events::ERROR_CHANNEL) { error_params }
|
23
|
+
Txgh.events.subscribe('github.status.error') { status_params }
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'reports the error and updates the status' do
|
27
|
+
expect(Txgh::GithubStatus).to(
|
28
|
+
receive(:error).with(transifex_project, github_repo, ref, status_params)
|
29
|
+
)
|
30
|
+
|
31
|
+
expect(Txgh.events).to receive(:publish_error!)
|
32
|
+
updater.report_error_and_update_status(StandardError.new)
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'avoids blowing up on octokit error' do
|
36
|
+
expect(Txgh::GithubStatus).to(
|
37
|
+
receive(:error).and_raise(Octokit::UnprocessableEntity)
|
38
|
+
)
|
39
|
+
|
40
|
+
expect { updater.report_error_and_update_status(StandardError.new) }.to_not raise_error
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#update_status' do
|
45
|
+
it 'updates the github status' do
|
46
|
+
expect(Txgh::GithubStatus).to receive(:update)
|
47
|
+
updater.update_status
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'avoids blowing up on octokit error' do
|
51
|
+
expect(Txgh::GithubStatus).to(
|
52
|
+
receive(:update).and_raise(Octokit::UnprocessableEntity)
|
53
|
+
)
|
54
|
+
|
55
|
+
expect { updater.update_status }.to_not raise_error
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: txgh-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Jackowski
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-11-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mime-types
|
@@ -119,6 +119,7 @@ files:
|
|
119
119
|
- lib/txgh-server/webhooks/github/push_attributes.rb
|
120
120
|
- lib/txgh-server/webhooks/github/push_handler.rb
|
121
121
|
- lib/txgh-server/webhooks/github/request_handler.rb
|
122
|
+
- lib/txgh-server/webhooks/github/status_updater.rb
|
122
123
|
- lib/txgh-server/webhooks/transifex.rb
|
123
124
|
- lib/txgh-server/webhooks/transifex/hook_handler.rb
|
124
125
|
- lib/txgh-server/webhooks/transifex/request_handler.rb
|
@@ -147,6 +148,7 @@ files:
|
|
147
148
|
- spec/webhooks/github/push_attributes_spec.rb
|
148
149
|
- spec/webhooks/github/push_handler_spec.rb
|
149
150
|
- spec/webhooks/github/request_handler_spec.rb
|
151
|
+
- spec/webhooks/github/status_updater_spec.rb
|
150
152
|
- spec/webhooks/transifex/hook_handler_spec.rb
|
151
153
|
- spec/webhooks/transifex/request_handler_spec.rb
|
152
154
|
- spec/zip_stream_response_spec.rb
|