Skip to content

Commit e16ff13

Browse files
committed
add more tests
third round of review
1 parent 5691ec7 commit e16ff13

File tree

7 files changed

+324
-224
lines changed

7 files changed

+324
-224
lines changed

cpp-linter/src/rest_api/github/mod.rs

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use std::io::Write;
99
use std::sync::{Arc, Mutex};
1010

1111
// non-std crates
12-
use anyhow::{anyhow, Context, Result};
12+
use anyhow::{Context, Result};
1313
use reqwest::{
1414
header::{HeaderMap, HeaderValue, AUTHORIZATION},
1515
Client, Method, Url,
@@ -35,7 +35,7 @@ pub struct GithubApiClient {
3535
client: Client,
3636

3737
/// The CI run's event payload from the webhook that triggered the workflow.
38-
pull_request: Option<i64>,
38+
pull_request: i64,
3939

4040
/// The name of the event that was triggered when running cpp_linter.
4141
pub event_name: String,
@@ -52,6 +52,7 @@ pub struct GithubApiClient {
5252
/// The value of the `ACTIONS_STEP_DEBUG` environment variable.
5353
pub debug_enabled: bool,
5454

55+
/// The response header names that describe the rate limit status.
5556
rate_limit_headers: RestApiRateLimitHeaders,
5657
}
5758

@@ -116,7 +117,7 @@ impl RestApiClient for GithubApiClient {
116117
{
117118
// get diff from Github REST API
118119
let is_pr = self.event_name == "pull_request";
119-
let pr = self.pull_request.unwrap_or(-1).to_string();
120+
let pr = self.pull_request.to_string();
120121
let sha = self.sha.clone().unwrap();
121122
let url = self
122123
.api_url
@@ -134,33 +135,26 @@ impl RestApiClient for GithubApiClient {
134135
None,
135136
Some(diff_header),
136137
)?;
137-
match Self::send_api_request(
138+
let response = Self::send_api_request(
138139
self.client.clone(),
139140
request,
140141
self.rate_limit_headers.to_owned(),
141142
0,
142143
)
143144
.await
144-
{
145-
Ok(response) => {
146-
if response.status().is_success() {
147-
Ok(parse_diff_from_buf(&response.bytes().await?, file_filter))
148-
} else {
149-
let endpoint = if is_pr {
150-
Url::parse(format!("{}/files", url.as_str()).as_str())?
151-
} else {
152-
url
153-
};
154-
Self::log_response(response, "Failed to get full diff for event").await;
155-
log::debug!("Trying paginated request to {}", endpoint.as_str());
156-
self.get_changed_files_paginated(endpoint, file_filter)
157-
.await
158-
}
159-
}
160-
Err(e) => Err(anyhow!(
161-
"Failed to connect with GitHub server to get list of changed files."
162-
)
163-
.context(e)),
145+
.with_context(|| "Failed to get list of changed files from GitHub server.")?;
146+
if response.status().is_success() {
147+
Ok(parse_diff_from_buf(&response.bytes().await?, file_filter))
148+
} else {
149+
let endpoint = if is_pr {
150+
Url::parse(format!("{}/files", url.as_str()).as_str())?
151+
} else {
152+
url
153+
};
154+
Self::log_response(response, "Failed to get full diff for event").await;
155+
log::debug!("Trying paginated request to {}", endpoint.as_str());
156+
self.get_changed_files_paginated(endpoint, file_filter)
157+
.await
164158
}
165159
} else {
166160
// get diff from libgit2 API
@@ -257,7 +251,7 @@ impl RestApiClient for GithubApiClient {
257251
}
258252
if let Some(repo) = &self.repo {
259253
let is_pr = self.event_name == "pull_request";
260-
let pr = self.pull_request.unwrap_or(-1).to_string() + "/";
254+
let pr = self.pull_request.to_string() + "/";
261255
let sha = self.sha.clone().unwrap() + "/";
262256
let comments_url = self
263257
.api_url

0 commit comments

Comments
 (0)