Skip to content

Commit 29f7249

Browse files
committed
revise test
1 parent 32a8394 commit 29f7249

File tree

1 file changed

+96
-102
lines changed

1 file changed

+96
-102
lines changed

cpp-linter-lib/tests/reviews.rs

+96-102
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,39 @@ async fn mock_server() -> ServerGuard {
2222
Server::new_async().await
2323
}
2424

25-
async fn setup(
26-
lib_root: &Path,
27-
lines_changed_only: &str,
28-
tidy_review: bool,
29-
format_review: bool,
30-
passive_reviews: bool,
31-
no_lgtm: bool,
32-
summary_only: bool,
33-
) {
25+
struct TestParams {
26+
pub lines_changed_only: String,
27+
pub tidy_review: bool,
28+
pub format_review: bool,
29+
pub passive_reviews: bool,
30+
pub no_lgtm: bool,
31+
pub summary_only: bool,
32+
pub pr_state: String,
33+
pub pr_draft: bool,
34+
}
35+
36+
impl Default for TestParams {
37+
fn default() -> Self {
38+
Self {
39+
lines_changed_only: "true".to_string(),
40+
tidy_review: true,
41+
format_review: true,
42+
passive_reviews: Default::default(),
43+
no_lgtm: true,
44+
summary_only: Default::default(),
45+
pr_state: "open".to_string(),
46+
pr_draft: Default::default(),
47+
}
48+
}
49+
}
50+
51+
async fn setup(lib_root: &Path, test_params: &TestParams) {
3452
env::set_var("GITHUB_EVENT_NAME", "pull_request");
3553
env::set_var("GITHUB_REPOSITORY", REPO);
3654
env::set_var("GITHUB_SHA", SHA);
3755
env::set_var("GITHUB_TOKEN", TOKEN);
3856
env::set_var("CI", "true");
39-
if summary_only {
57+
if test_params.summary_only {
4058
env::set_var("CPP_LINTER_PR_REVIEW_SUMMARY_ONLY", "true");
4159
}
4260
let mut event_payload_path = NamedTempFile::new().unwrap();
@@ -45,7 +63,8 @@ async fn setup(
4563
.expect("Failed to create mock event payload.");
4664
env::set_var("GITHUB_EVENT_PATH", event_payload_path.path());
4765
let reset_timestamp = (Utc::now().timestamp() + 60).to_string();
48-
let is_lgtm = !no_lgtm || ((false, false) == (tidy_review, format_review));
66+
let is_lgtm = !test_params.no_lgtm
67+
|| ((false, false) == (test_params.tidy_review, test_params.format_review));
4968
let asset_path = format!("{}/{MOCK_ASSETS_PATH}", lib_root.to_str().unwrap());
5069

5170
let mut server = mock_server().await;
@@ -64,7 +83,9 @@ async fn setup(
6483
.mock("GET", pr_endpoint.as_str())
6584
.match_header("Accept", "application/vnd.github.raw+json")
6685
.match_header("Authorization", TOKEN)
67-
.with_body_from_file(format!("{asset_path}pr_{PR}.json"))
86+
.with_body(
87+
json!({"state": test_params.pr_state, "draft": test_params.pr_draft}).to_string(),
88+
)
6889
.with_header(REMAINING_RATE_LIMIT_HEADER, "50")
6990
.with_header(RESET_RATE_LIMIT_HEADER, reset_timestamp.as_str())
7091
.create();
@@ -89,7 +110,7 @@ async fn setup(
89110
.with_header(RESET_RATE_LIMIT_HEADER, reset_timestamp.as_str())
90111
.create();
91112

92-
let review_reaction = if passive_reviews {
113+
let review_reaction = if test_params.passive_reviews {
93114
"COMMENT"
94115
} else if is_lgtm {
95116
"APPROVE"
@@ -108,7 +129,8 @@ async fn setup(
108129
.create();
109130

110131
let mut tool_ignore = "**.c".to_string();
111-
if !no_lgtm || (false, true) == (tidy_review, format_review) {
132+
if !test_params.no_lgtm || (false, true) == (test_params.tidy_review, test_params.format_review)
133+
{
112134
// force a LGTM condition by skipping analysis on all files
113135
tool_ignore.push('|');
114136
tool_ignore.push_str("src");
@@ -117,15 +139,15 @@ async fn setup(
117139
"cpp-linter".to_string(),
118140
"-v=debug".to_string(),
119141
format!("-V={}", env::var("CLANG_VERSION").unwrap_or("".to_string())),
120-
format!("-l={lines_changed_only}"),
142+
format!("-l={}", test_params.lines_changed_only),
121143
format!("--ignore-tidy={}", tool_ignore),
122144
format!("--ignore-format={}", tool_ignore),
123145
// "--tidy-checks=".to_string(), // use .clang-tidy file
124146
"--style=file".to_string(), // use .clang-format file
125-
format!("--tidy-review={tidy_review}"),
126-
format!("--format-review={format_review}"),
127-
format!("--passive-reviews={passive_reviews}"),
128-
format!("--no-lgtm={no_lgtm}"),
147+
format!("--tidy-review={}", test_params.tidy_review),
148+
format!("--format-review={}", test_params.format_review),
149+
format!("--passive-reviews={}", test_params.passive_reviews),
150+
format!("--no-lgtm={}", test_params.no_lgtm),
129151
"-p=build".to_string(),
130152
"-i=build".to_string(),
131153
];
@@ -136,131 +158,103 @@ async fn setup(
136158
assert_eq!(result, 0);
137159
}
138160

139-
async fn test_review(
140-
lines_changed_only: &str,
141-
tidy_review: bool,
142-
format_review: bool,
143-
passive_reviews: bool,
144-
no_lgtm: bool,
145-
summary_only: bool,
146-
) {
161+
async fn test_review(test_params: &TestParams) {
147162
let tmp_dir = create_test_space();
148163
let lib_root = env::current_dir().unwrap();
149164
env::set_current_dir(tmp_dir.path()).unwrap();
150-
setup(
151-
&lib_root,
152-
lines_changed_only,
153-
tidy_review,
154-
format_review,
155-
passive_reviews,
156-
no_lgtm,
157-
summary_only,
158-
)
159-
.await;
165+
setup(&lib_root, &test_params).await;
160166
env::set_current_dir(lib_root.as_path()).unwrap();
161167
drop(tmp_dir);
162168
}
163169

164170
#[tokio::test]
165171
async fn all_lines() {
166-
test_review(
167-
"false", // lines_changed_only
168-
true, // tidy-review
169-
true, // format-review
170-
false, // passive-reviews
171-
true, // no_lgtm
172-
false, // summary_only
173-
)
172+
test_review(&TestParams {
173+
lines_changed_only: "false".to_string(),
174+
..Default::default()
175+
})
174176
.await;
175177
}
176178

177179
#[tokio::test]
178180
async fn changed_lines() {
179-
test_review(
180-
"true", // lines_changed_only
181-
true, // tidy-review
182-
true, // format-review
183-
false, // passive-reviews
184-
true, // no_lgtm
185-
false, // summary_only
186-
)
187-
.await;
181+
test_review(&TestParams::default()).await;
188182
}
189183

190184
#[tokio::test]
191185
async fn all_lines_passive() {
192-
test_review(
193-
"false", // lines_changed_only
194-
true, // tidy-review
195-
true, // format-review
196-
true, // passive-reviews
197-
true, // no_lgtm
198-
false, // summary_only
199-
)
186+
test_review(&TestParams {
187+
lines_changed_only: "false".to_string(),
188+
passive_reviews: true,
189+
..Default::default()
190+
})
200191
.await;
201192
}
202193

203194
#[tokio::test]
204195
async fn changed_lines_passive() {
205-
test_review(
206-
"true", // lines_changed_only
207-
true, // tidy-review
208-
true, // format-review
209-
true, // passive-reviews
210-
true, // no_lgtm
211-
false, // summary_only
212-
)
196+
test_review(&TestParams {
197+
passive_reviews: true,
198+
..Default::default()
199+
})
213200
.await;
214201
}
215202

216203
#[tokio::test]
217204
async fn summary_only() {
218-
test_review(
219-
"false", // lines_changed_only
220-
true, // tidy-review
221-
true, // format-review
222-
false, // passive-reviews
223-
true, // no_lgtm
224-
true, // summary_only
225-
)
205+
test_review(&TestParams {
206+
lines_changed_only: "false".to_string(),
207+
summary_only: true,
208+
..Default::default()
209+
})
226210
.await;
227211
}
228212

229213
#[tokio::test]
230214
async fn lgtm() {
231-
test_review(
232-
"false", // lines_changed_only
233-
true, // tidy-review
234-
true, // format-review
235-
false, // passive-reviews
236-
false, // no_lgtm
237-
false, // summary_only
238-
)
215+
test_review(&TestParams {
216+
lines_changed_only: "false".to_string(),
217+
no_lgtm: false,
218+
..Default::default()
219+
})
239220
.await;
240221
}
241222

242223
#[tokio::test]
243224
async fn lgtm_passive() {
244-
test_review(
245-
"false", // lines_changed_only
246-
true, // tidy-review
247-
true, // format-review
248-
true, // passive-reviews
249-
false, // no_lgtm
250-
false, // summary_only
251-
)
225+
test_review(&TestParams {
226+
lines_changed_only: "false".to_string(),
227+
no_lgtm: false,
228+
passive_reviews: true,
229+
..Default::default()
230+
})
252231
.await;
253232
}
254233

255234
#[tokio::test]
256235
async fn no_lgtm() {
257-
test_review(
258-
"false", // lines_changed_only
259-
false, // tidy-review
260-
true, // format-review
261-
false, // passive-reviews
262-
true, // no_lgtm
263-
false, // summary_only
264-
)
236+
test_review(&TestParams {
237+
lines_changed_only: "false".to_string(),
238+
tidy_review: false,
239+
..Default::default()
240+
})
241+
.await;
242+
}
243+
244+
#[tokio::test]
245+
async fn is_draft() {
246+
test_review(&TestParams {
247+
pr_draft: true,
248+
..Default::default()
249+
})
250+
.await;
251+
}
252+
253+
#[tokio::test]
254+
async fn is_closed() {
255+
test_review(&TestParams {
256+
pr_state: "closed".to_string(),
257+
..Default::default()
258+
})
265259
.await;
266260
}

0 commit comments

Comments
 (0)