summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAsh McKenzie <amckenzie@gitlab.com>2018-09-13 14:55:11 +1000
committerAsh McKenzie <amckenzie@gitlab.com>2018-09-13 14:55:11 +1000
commit4656cd714f04f30d4542e57d46434829a09ff696 (patch)
tree986fdee19f31ac228981e952dd22b74e2760e9ec
parent58acc2b668e86946c58db4dd41d50edceb7218f9 (diff)
downloadgitlab-shell-4656cd714f04f30d4542e57d46434829a09ff696.tar.gz
Print message to $stderr for custom action
-rw-r--r--lib/action/custom.rb6
-rw-r--r--spec/action/custom_spec.rb6
-rw-r--r--spec/vcr_cassettes/custom-action-ok-with-message.yml99
3 files changed, 111 insertions, 0 deletions
diff --git a/lib/action/custom.rb b/lib/action/custom.rb
index 2aea41a..328a12f 100644
--- a/lib/action/custom.rb
+++ b/lib/action/custom.rb
@@ -54,6 +54,8 @@ module Action
raise UnsuccessfulError, 'Response was not valid JSON'
end
+ inform_client(body['message']) if body['message']
+
print_flush(body['result'])
# In the context of the git push sequence of events, it's necessary to read
@@ -94,6 +96,10 @@ module Action
$stdout.flush
end
+ def inform_client(str)
+ $stderr.puts(str)
+ end
+
def validate!
validate_payload!
validate_data!
diff --git a/spec/action/custom_spec.rb b/spec/action/custom_spec.rb
index c3224a6..24c6ce8 100644
--- a/spec/action/custom_spec.rb
+++ b/spec/action/custom_spec.rb
@@ -52,6 +52,12 @@ describe Action::Custom do
allow($stdout).to receive(:print).with('push-result')
end
+ it 'prints a message to $stderr' do
+ VCR.use_cassette("custom-action-ok-with-message") do
+ expect { subject.execute }.to output(/NOTE: Message here/).to_stderr
+ end
+ end
+
it 'returns an instance of Net::HTTPCreated' do
VCR.use_cassette("custom-action-ok") do
expect(subject.execute ).to be_instance_of(Net::HTTPCreated)
diff --git a/spec/vcr_cassettes/custom-action-ok-with-message.yml b/spec/vcr_cassettes/custom-action-ok-with-message.yml
new file mode 100644
index 0000000..c2dbd58
--- /dev/null
+++ b/spec/vcr_cassettes/custom-action-ok-with-message.yml
@@ -0,0 +1,99 @@
+---
+http_interactions:
+- request:
+ method: post
+ uri: http://localhost:3000/api/v4/fake/info_refs
+ body:
+ encoding: UTF-8
+ string: '{"data":{"gl_username":"user1","primary_repo":"http://localhost:3001/user1/repo1.git","gl_id":"key-1"},"output":"","secret_token":"0a3938d9d95d807e94d937af3a4fbbea"}'
+ headers:
+ Content-Type:
+ - application/json
+ Accept-Encoding:
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
+ Accept:
+ - "*/*"
+ User-Agent:
+ - Ruby
+ Host:
+ - localhost
+ response:
+ status:
+ code: 200
+ message: OK
+ headers:
+ Date:
+ - Fri, 20 Jul 2018 06:18:58 GMT
+ Connection:
+ - close
+ X-Frame-Options:
+ - SAMEORIGIN
+ X-Content-Type-Options:
+ - nosniff
+ Content-Type:
+ - application/json
+ Content-Length:
+ - '172'
+ Vary:
+ - Origin
+ Etag:
+ - W/"7d01e1e3dbcbe7cca9607461352f8244"
+ Cache-Control:
+ - max-age=0, private, must-revalidate
+ X-Request-Id:
+ - 03afa234-b6be-49ab-9392-4aa35c5dee25
+ X-Runtime:
+ - '1.436040'
+ body:
+ encoding: UTF-8
+ string: '{"result":"aW5mb19yZWZzLXJlc3VsdA==\n", "message":"NOTE: Message here"}'
+ http_version:
+ recorded_at: Fri, 20 Jul 2018 06:18:58 GMT
+- request:
+ method: post
+ uri: http://localhost:3000/api/v4/fake/push
+ body:
+ encoding: UTF-8
+ string: '{"data":{"gl_username":"user1","primary_repo":"http://localhost:3001/user1/repo1.git","gl_id":"key-1"},"output":"info_refs-result","secret_token":"0a3938d9d95d807e94d937af3a4fbbea"}'
+ headers:
+ Content-Type:
+ - application/json
+ Accept-Encoding:
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
+ Accept:
+ - "*/*"
+ User-Agent:
+ - Ruby
+ Host:
+ - localhost
+ response:
+ status:
+ code: 201
+ message: Created
+ headers:
+ Date:
+ - Fri, 20 Jul 2018 06:19:08 GMT
+ Connection:
+ - close
+ X-Frame-Options:
+ - SAMEORIGIN
+ X-Content-Type-Options:
+ - nosniff
+ Content-Type:
+ - application/json
+ Content-Length:
+ - '13'
+ Vary:
+ - Origin
+ Cache-Control:
+ - no-cache
+ X-Request-Id:
+ - 0c6894ac-7f8e-4cdb-871f-4cb64d3731ca
+ X-Runtime:
+ - '0.786754'
+ body:
+ encoding: UTF-8
+ string: '{"result":"cHVzaC1yZXN1bHQ=\n"}'
+ http_version:
+ recorded_at: Fri, 20 Jul 2018 06:19:08 GMT
+recorded_with: VCR 2.4.0