@@ -54,15 +54,16 @@ async fn evaluate_one(
5454
5555 // Check contamination before mergeability to prevent artefact PRs from merging.
5656 if let Some ( c) = gitea
57- && let Err ( reason) = check_contamination ( c, owner, repo, pr. number ) . await {
58- return PrEvaluation {
59- pr_index : pr. number ,
60- mergeable,
61- fixes_issues,
62- verdict : EvalVerdict :: Hold ( reason) ,
63- blocker_kind : None ,
64- } ;
65- }
57+ && let Err ( reason) = check_contamination ( c, owner, repo, pr. number ) . await
58+ {
59+ return PrEvaluation {
60+ pr_index : pr. number ,
61+ mergeable,
62+ fixes_issues,
63+ verdict : EvalVerdict :: Hold ( reason) ,
64+ blocker_kind : None ,
65+ } ;
66+ }
6667
6768 let ( verdict, blocker_kind) = if !mergeable {
6869 let kind = classify_blocker ( gitea, owner, repo, pr) . await ;
@@ -89,12 +90,7 @@ async fn check_contamination(
8990 repo : & str ,
9091 pr_index : u64 ,
9192) -> Result < ( ) , String > {
92- const CONTAMINATED_PATTERNS : & [ & str ] = & [
93- ".sessions/" ,
94- ".review_tmp/" ,
95- ".handoff/" ,
96- ".beads/" ,
97- ] ;
93+ const CONTAMINATED_PATTERNS : & [ & str ] = & [ ".sessions/" , ".review_tmp/" , ".handoff/" , ".beads/" ] ;
9894
9995 let files = gitea
10096 . list_pr_files ( owner, repo, pr_index)
@@ -104,9 +100,7 @@ async fn check_contamination(
104100 for file in & files {
105101 for pattern in CONTAMINATED_PATTERNS {
106102 if file. starts_with ( pattern) || file. contains ( pattern) {
107- return Err ( format ! (
108- "contaminated: {file} (pattern: {pattern})"
109- ) ) ;
103+ return Err ( format ! ( "contaminated: {file} (pattern: {pattern})" ) ) ;
110104 }
111105 }
112106 }
@@ -284,15 +278,35 @@ mod tests {
284278 let patterns: & [ & str ] = & [ ".sessions/" , ".review_tmp/" , ".handoff/" , ".beads/" ] ;
285279
286280 // Positive matches
287- assert ! ( patterns. iter( ) . any( |p| ".sessions/session-123.md" . contains( p) ) ) ;
288- assert ! ( patterns. iter( ) . any( |p| ".review_tmp/pr123/file.diff" . contains( p) ) ) ;
289- assert ! ( patterns. iter( ) . any( |p| ".handoff/pr2664-review.md" . contains( p) ) ) ;
281+ assert ! (
282+ patterns
283+ . iter( )
284+ . any( |p| ".sessions/session-123.md" . contains( p) )
285+ ) ;
286+ assert ! (
287+ patterns
288+ . iter( )
289+ . any( |p| ".review_tmp/pr123/file.diff" . contains( p) )
290+ ) ;
291+ assert ! (
292+ patterns
293+ . iter( )
294+ . any( |p| ".handoff/pr2664-review.md" . contains( p) )
295+ ) ;
290296 assert ! ( patterns. iter( ) . any( |p| ".beads/issues.jsonl" . contains( p) ) ) ;
291297
292298 // Negative matches
293299 assert ! ( !patterns. iter( ) . any( |p| "src/main.rs" . contains( p) ) ) ;
294- assert ! ( !patterns. iter( ) . any( |p| "crates/terraphim_rlm/src/lib.rs" . contains( p) ) ) ;
300+ assert ! (
301+ !patterns
302+ . iter( )
303+ . any( |p| "crates/terraphim_rlm/src/lib.rs" . contains( p) )
304+ ) ;
295305 assert ! ( !patterns. iter( ) . any( |p| "Cargo.toml" . contains( p) ) ) ;
296- assert ! ( !patterns. iter( ) . any( |p| ".github/workflows/ci-pr.yml" . contains( p) ) ) ;
306+ assert ! (
307+ !patterns
308+ . iter( )
309+ . any( |p| ".github/workflows/ci-pr.yml" . contains( p) )
310+ ) ;
297311 }
298312}
0 commit comments