summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-02-18 14:56:05 -0800
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-02-18 14:56:05 -0800
commit8ab4228b08c6f3bada042e7fd74ae1e2583e8191 (patch)
treeefbe726e17cce31961185ae83c5c1ebb82527bec
parentb0979371b87d86cec1f35b6ac7f1242b917ab4d4 (diff)
downloadgitlab-shell-8ab4228b08c6f3bada042e7fd74ae1e2583e8191.tar.gz
Improve broadcast message logicv2.5.1
Expect broadcast message API endpoint to return 200 with empty JSON if no broadcast messages available
-rw-r--r--CHANGELOG3
-rw-r--r--VERSION2
-rw-r--r--lib/gitlab_net.rb10
-rw-r--r--lib/gitlab_post_receive.rb4
-rw-r--r--spec/gitlab_net_spec.rb4
-rw-r--r--spec/vcr_cassettes/broadcast_message-none.yml4
6 files changed, 14 insertions, 13 deletions
diff --git a/CHANGELOG b/CHANGELOG
index bf7ce67..8ba97aa 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+v2.5.1
+ - Expect broadcast message to return empty JSON if no message now
+
v2.5.0
- Support git-annex tool (disabled by default)
- Add rubocop (Ruby static code analyzer) for development
diff --git a/VERSION b/VERSION
index 437459c..73462a5 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.5.0
+2.5.1
diff --git a/lib/gitlab_net.rb b/lib/gitlab_net.rb
index e74c97f..d5bda88 100644
--- a/lib/gitlab_net.rb
+++ b/lib/gitlab_net.rb
@@ -45,11 +45,7 @@ class GitlabNet
def broadcast_message
resp = get("#{host}/broadcast_message")
- if resp.code == '200'
- JSON.parse(resp.body) rescue nil
- else
- nil
- end
+ JSON.parse(resp.body) rescue {}
end
def check
@@ -95,7 +91,7 @@ class GitlabNet
$logger.debug "Performing #{method.to_s.upcase} #{url}"
uri = URI.parse(url)
-
+
http = http_client_for(uri)
request = http_request_for(method, uri, params)
@@ -103,7 +99,7 @@ class GitlabNet
response = http.start { http.request(request) }
rescue => e
$logger.warn "Failed to connect to internal API <#{method.to_s.upcase} #{url}>: #{e.inspect}"
- raise ApiUnreachableError
+ raise ApiUnreachableError
end
if response.code == "200"
diff --git a/lib/gitlab_post_receive.rb b/lib/gitlab_post_receive.rb
index 2a73202..154e045 100644
--- a/lib/gitlab_post_receive.rb
+++ b/lib/gitlab_post_receive.rb
@@ -20,11 +20,13 @@ class GitlabPostReceive
begin
broadcast_message = GitlabNet.new.broadcast_message
- if broadcast_message
+
+ if broadcast_message.has_key?("message")
puts
print_broadcast_message(broadcast_message["message"])
end
rescue GitlabNet::ApiUnreachableError
+ nil
end
end
diff --git a/spec/gitlab_net_spec.rb b/spec/gitlab_net_spec.rb
index 17fb56d..3c2cea2 100644
--- a/spec/gitlab_net_spec.rb
+++ b/spec/gitlab_net_spec.rb
@@ -70,7 +70,7 @@ describe GitlabNet, vcr: true do
it 'should return nil' do
VCR.use_cassette("broadcast_message-none") do
result = gitlab_net.broadcast_message
- result.should == nil
+ result.should == {}
end
end
end
@@ -125,7 +125,7 @@ describe GitlabNet, vcr: true do
it "raises an exception if the connection fails" do
Net::HTTP.any_instance.stub(:request).and_raise(StandardError)
- expect {
+ expect {
gitlab_net.check_access('git-upload-pack', 'gitlab/gitlabhq.git', 'user-1', changes)
}.to raise_error(GitlabNet::ApiUnreachableError)
end
diff --git a/spec/vcr_cassettes/broadcast_message-none.yml b/spec/vcr_cassettes/broadcast_message-none.yml
index f94adc4..7d9d952 100644
--- a/spec/vcr_cassettes/broadcast_message-none.yml
+++ b/spec/vcr_cassettes/broadcast_message-none.yml
@@ -15,7 +15,7 @@ http_interactions:
- Ruby
response:
status:
- code: 404
+ code: 200
message: Not Found
headers:
Server:
@@ -32,7 +32,7 @@ http_interactions:
- 200 OK
body:
encoding: UTF-8
- string: '{"message":"404 Not Found"}'
+ string: '{}'
http_version:
recorded_at: Sat, 07 Feb 2015 16:45:35 GMT
recorded_with: VCR 2.4.0