diff options
author | Ash McKenzie <amckenzie@gitlab.com> | 2018-09-13 14:55:11 +1000 |
---|---|---|
committer | Ash McKenzie <amckenzie@gitlab.com> | 2018-09-13 14:55:11 +1000 |
commit | 4656cd714f04f30d4542e57d46434829a09ff696 (patch) | |
tree | 986fdee19f31ac228981e952dd22b74e2760e9ec | |
parent | 58acc2b668e86946c58db4dd41d50edceb7218f9 (diff) | |
download | gitlab-shell-4656cd714f04f30d4542e57d46434829a09ff696.tar.gz |
Print message to $stderr for custom action
-rw-r--r-- | lib/action/custom.rb | 6 | ||||
-rw-r--r-- | spec/action/custom_spec.rb | 6 | ||||
-rw-r--r-- | spec/vcr_cassettes/custom-action-ok-with-message.yml | 99 |
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 |