codeclimate-services 1.11.2 → 1.11.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/cc/pull_requests.rb +22 -19
- data/lib/cc/service.rb +1 -0
- data/lib/cc/services/github_pull_requests.rb +5 -0
- data/lib/cc/services/version.rb +1 -1
- data/spec/cc/pull_requests_spec.rb +123 -0
- data/spec/cc/service/github_pull_requests_spec.rb +20 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9857632046cf9409d85f8ff2429efabf13c6eb5ab1300023d52407dc381deac0
|
4
|
+
data.tar.gz: 65fd4acdcc300cf00472ac8c8df740d0ec75dd382014a8963117680393629578
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51e15698f1fbe51598067be6452db4b19ff6c4f913392ef172a772d58cb2c548805f569d34f11c74cb9ab486937cc75395104ffc082966b3a2edd7ee5866d832
|
7
|
+
data.tar.gz: 758fea2bc59978563b7a133affb1c8fd1d63d94250e88bbcabcd1d945a406c76845065abe7f249bd4ba33c4249b6620dd129d7ccfb8288a00297aa2309426b0a
|
data/lib/cc/pull_requests.rb
CHANGED
@@ -6,29 +6,15 @@ class CC::PullRequests < CC::Service
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def receive_pull_request
|
9
|
-
|
10
|
-
state = @payload["state"]
|
11
|
-
|
12
|
-
if %w[pending success failure skipped error].include?(state) && report_status?
|
13
|
-
send("update_status_#{state}")
|
14
|
-
else
|
15
|
-
@response = simple_failure("Unknown state")
|
16
|
-
end
|
17
|
-
|
18
|
-
response
|
9
|
+
receive_request(%w[pending success failure skipped error], :update_status)
|
19
10
|
end
|
20
11
|
|
21
12
|
def receive_pull_request_coverage
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
if state == "success" && report_status?
|
26
|
-
update_coverage_status_success
|
27
|
-
else
|
28
|
-
@response = simple_failure("Unknown state")
|
29
|
-
end
|
13
|
+
receive_request("success", :update_coverage_status)
|
14
|
+
end
|
30
15
|
|
31
|
-
|
16
|
+
def receive_pull_request_diff_coverage
|
17
|
+
receive_request("skipped", :update_diff_coverage_status)
|
32
18
|
end
|
33
19
|
|
34
20
|
private
|
@@ -57,6 +43,10 @@ class CC::PullRequests < CC::Service
|
|
57
43
|
raise NotImplementedError
|
58
44
|
end
|
59
45
|
|
46
|
+
def update_diff_coverage_status_skipped
|
47
|
+
raise NotImplementedError
|
48
|
+
end
|
49
|
+
|
60
50
|
def update_status_failure
|
61
51
|
raise NotImplementedError
|
62
52
|
end
|
@@ -91,6 +81,19 @@ class CC::PullRequests < CC::Service
|
|
91
81
|
end
|
92
82
|
end
|
93
83
|
|
84
|
+
def receive_request(*permitted_statuses, call_method)
|
85
|
+
setup_http
|
86
|
+
state = @payload["state"]
|
87
|
+
|
88
|
+
if permitted_statuses.flatten.include?(state) && report_status?
|
89
|
+
send(call_method.to_s + "_#{state}")
|
90
|
+
else
|
91
|
+
@response = simple_failure("Unknown state")
|
92
|
+
end
|
93
|
+
|
94
|
+
response
|
95
|
+
end
|
96
|
+
|
94
97
|
def presenter
|
95
98
|
CC::Service::PullRequestsPresenter.new(@payload)
|
96
99
|
end
|
data/lib/cc/service.rb
CHANGED
@@ -71,6 +71,11 @@ class CC::Service::GitHubPullRequests < CC::PullRequests
|
|
71
71
|
update_status("success", presenter.coverage_message, "#{config.context}/coverage")
|
72
72
|
end
|
73
73
|
|
74
|
+
def update_diff_coverage_status_skipped
|
75
|
+
update_status("success", presenter.skipped_message, "#{config.context}/diff-coverage")
|
76
|
+
update_status("success", presenter.skipped_message, "#{config.context}/total-coverage")
|
77
|
+
end
|
78
|
+
|
74
79
|
def update_status_failure
|
75
80
|
update_status("failure", presenter.success_message)
|
76
81
|
end
|
data/lib/cc/services/version.rb
CHANGED
@@ -0,0 +1,123 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe CC::PullRequests do
|
4
|
+
shared_examples "receive method" do
|
5
|
+
before do
|
6
|
+
allow(instance).to receive(:report_status?).and_return(true)
|
7
|
+
expect(instance).to receive(:setup_http)
|
8
|
+
end
|
9
|
+
|
10
|
+
context "when the status is valid" do
|
11
|
+
let(:instance) { CC::PullRequests.new({}, name: "test", state: payload_status) }
|
12
|
+
let(:response) do
|
13
|
+
{
|
14
|
+
ok: true,
|
15
|
+
state: 201,
|
16
|
+
message: "Success",
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
it "calls the corresponding method" do
|
21
|
+
expect(instance).to receive(expected_method_name) do
|
22
|
+
instance.instance_variable_set(:@response, response)
|
23
|
+
end
|
24
|
+
result = instance.send(method_to_call)
|
25
|
+
|
26
|
+
expect(result).to eq(response)
|
27
|
+
end
|
28
|
+
|
29
|
+
context "when report_status? is false" do
|
30
|
+
before { expect(instance).to receive(:report_status?).and_return(false) }
|
31
|
+
|
32
|
+
it "returns unknown status message" do
|
33
|
+
expect(instance).not_to receive(expected_method_name)
|
34
|
+
result = instance.send(method_to_call)
|
35
|
+
|
36
|
+
expect(result).to eq({ ok: false, message: "Unknown state" })
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "when the status is not valid" do
|
42
|
+
let(:instance) { CC::PullRequests.new({}, name: "test", status: "invalid_status") }
|
43
|
+
|
44
|
+
it "returns unknown status message" do
|
45
|
+
expect(instance).not_to receive(expected_method_name)
|
46
|
+
result = instance.send(method_to_call)
|
47
|
+
|
48
|
+
expect(result).to eq({ ok: false, message: "Unknown state" })
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "#receive_test" do
|
54
|
+
let(:instance) { CC::PullRequests.new({}, name: "test") }
|
55
|
+
|
56
|
+
before do
|
57
|
+
expect(instance).to receive(:base_status_url) do |param|
|
58
|
+
"some_url" + param
|
59
|
+
end
|
60
|
+
expect(instance).to receive(:setup_http)
|
61
|
+
end
|
62
|
+
|
63
|
+
it "makes a raw http test post" do
|
64
|
+
expect_any_instance_of(CC::Service::HTTP).to receive(:raw_post).with(
|
65
|
+
"some_url" + ("0" * 40),
|
66
|
+
{ state: "success" }.to_json
|
67
|
+
)
|
68
|
+
|
69
|
+
instance.receive_test
|
70
|
+
end
|
71
|
+
|
72
|
+
context "when raising an HTTPError" do
|
73
|
+
context "when message is equal to test_status_code" do
|
74
|
+
it "returns an ok message" do
|
75
|
+
expect(instance).to receive(:test_status_code) { 777 }
|
76
|
+
expect(instance).to receive(:raw_post).
|
77
|
+
and_raise(CC::Service::HTTPError.new("error", status: 777))
|
78
|
+
|
79
|
+
result = instance.receive_test
|
80
|
+
expect(result).to include(
|
81
|
+
ok: true,
|
82
|
+
status: 777,
|
83
|
+
message: "Access token is valid"
|
84
|
+
)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
context "when message is different than test_status_code" do
|
89
|
+
it "raises the error" do
|
90
|
+
expect(instance).to receive(:test_status_code) { 777 }
|
91
|
+
expect(instance).to receive(:raw_post).
|
92
|
+
and_raise(CC::Service::HTTPError.new("error", status: 000))
|
93
|
+
|
94
|
+
expect { instance.receive_test }.to raise_error
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe "#receive_pull_request" do
|
101
|
+
let(:payload_status) { "skipped" }
|
102
|
+
let(:expected_method_name) { :update_status_skipped }
|
103
|
+
let(:method_to_call) { :receive_pull_request }
|
104
|
+
|
105
|
+
it_behaves_like "receive method"
|
106
|
+
end
|
107
|
+
|
108
|
+
describe "#receive_pull_request_coverage" do
|
109
|
+
let(:payload_status) { "success" }
|
110
|
+
let(:expected_method_name) { :update_coverage_status_success }
|
111
|
+
let(:method_to_call) { :receive_pull_request_coverage }
|
112
|
+
|
113
|
+
it_behaves_like "receive method"
|
114
|
+
end
|
115
|
+
|
116
|
+
describe "#receive_pull_request_diff_coverage" do
|
117
|
+
let(:payload_status) { "skipped" }
|
118
|
+
let(:expected_method_name) { :update_diff_coverage_status_skipped }
|
119
|
+
let(:method_to_call) { :receive_pull_request_diff_coverage }
|
120
|
+
|
121
|
+
it_behaves_like "receive method"
|
122
|
+
end
|
123
|
+
end
|
@@ -82,6 +82,18 @@ describe CC::Service::GitHubPullRequests, type: :service do
|
|
82
82
|
covered_percent_delta: 2.0)
|
83
83
|
end
|
84
84
|
|
85
|
+
it "pull request diff coverage skipped" do
|
86
|
+
expect_status_update("pbrisbin/foo", "abc123", "state" => "success",
|
87
|
+
"description" => /skipped analysis/, "context" => /diff-coverage/)
|
88
|
+
expect_status_update("pbrisbin/foo", "abc123", "state" => "success",
|
89
|
+
"description" => /skipped analysis/, "context" => /total-coverage/)
|
90
|
+
|
91
|
+
receive_pull_request_diff_coverage({},
|
92
|
+
github_slug: "pbrisbin/foo",
|
93
|
+
commit_sha: "abc123",
|
94
|
+
state: "skipped")
|
95
|
+
end
|
96
|
+
|
85
97
|
it "pull request status test success" do
|
86
98
|
http_stubs.post("/repos/pbrisbin/foo/statuses/#{"0" * 40}") { |_env| [422, {}, ""] }
|
87
99
|
|
@@ -213,6 +225,14 @@ describe CC::Service::GitHubPullRequests, type: :service do
|
|
213
225
|
)
|
214
226
|
end
|
215
227
|
|
228
|
+
def receive_pull_request_diff_coverage(config, event_data)
|
229
|
+
service_receive(
|
230
|
+
CC::Service::GitHubPullRequests,
|
231
|
+
{ oauth_token: "123" }.merge(config),
|
232
|
+
{ name: "pull_request_diff_coverage" }.merge(event_data),
|
233
|
+
)
|
234
|
+
end
|
235
|
+
|
216
236
|
def receive_test(config, event_data = {})
|
217
237
|
service_receive(
|
218
238
|
CC::Service::GitHubPullRequests,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: codeclimate-services
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.11.
|
4
|
+
version: 1.11.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bryan Helmkamp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-06-
|
11
|
+
date: 2022-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -194,6 +194,7 @@ files:
|
|
194
194
|
- spec/axiom/types/token_spec.rb
|
195
195
|
- spec/cc/formatters/snapshot_formatter_spec.rb
|
196
196
|
- spec/cc/presenters/pull_requests_presenter_spec.rb
|
197
|
+
- spec/cc/pull_requests_spec.rb
|
197
198
|
- spec/cc/resolve_spec.rb
|
198
199
|
- spec/cc/service/asana_spec.rb
|
199
200
|
- spec/cc/service/campfire_spec.rb
|
@@ -247,6 +248,7 @@ test_files:
|
|
247
248
|
- spec/axiom/types/token_spec.rb
|
248
249
|
- spec/cc/formatters/snapshot_formatter_spec.rb
|
249
250
|
- spec/cc/presenters/pull_requests_presenter_spec.rb
|
251
|
+
- spec/cc/pull_requests_spec.rb
|
250
252
|
- spec/cc/resolve_spec.rb
|
251
253
|
- spec/cc/service/asana_spec.rb
|
252
254
|
- spec/cc/service/campfire_spec.rb
|