this derivation will be built: /nix/store/a0j2gx6pd9wc3c67p2vrnn7jkmmx72cd-treefmt-check.drv building '/nix/store/a0j2gx6pd9wc3c67p2vrnn7jkmmx72cd-treefmt-check.drv' treefmt-check> treefmt v2.5.0traversed 21 files treefmt-check> emitted 10 files for processing treefmt-check> formatted 10 files (1 changed) in 566ms treefmt-check> M src/handlers.rs treefmt-check> diff --git a/src/handlers.rs b/src/handlers.rs treefmt-check> index 1704a15..65187fd 100644 treefmt-check> --- a/src/handlers.rs treefmt-check> +++ b/src/handlers.rs treefmt-check> @@ -3,7 +3,9 @@ use std::time::Duration; treefmt-check> treefmt-check> use mxlink::matrix_sdk::deserialized_responses::{TimelineEvent, TimelineEventKind}; treefmt-check> use mxlink::matrix_sdk::ruma::events::OriginalSyncMessageLikeEvent; treefmt-check> +use mxlink::matrix_sdk::ruma::events::relation::{Reply, Thread}; treefmt-check> use mxlink::matrix_sdk::ruma::events::room::message::MessageType; treefmt-check> +use mxlink::matrix_sdk::ruma::events::room::message::Relation; treefmt-check> use mxlink::matrix_sdk::{ treefmt-check> Room, treefmt-check> ruma::{ treefmt-check> @@ -21,8 +23,6 @@ use mxlink::matrix_sdk::{ treefmt-check> }, treefmt-check> }; treefmt-check> use mxlink::{CallbackError, MessageResponseType}; treefmt-check> -use mxlink::matrix_sdk::ruma::events::room::message::Relation; treefmt-check> -use mxlink::matrix_sdk::ruma::events::relation::{Reply, Thread}; treefmt-check> use scraper::{Html, Selector}; treefmt-check> use tokio::sync::RwLock; treefmt-check> use tokio::time::timeout; treefmt-check> @@ -75,10 +75,7 @@ impl BotCommand { treefmt-check> } treefmt-check> } treefmt-check> treefmt-check> -fn apply_response_type( treefmt-check> - content: &mut RoomMessageEventContent, treefmt-check> - response_type: MessageResponseType, treefmt-check> -) { treefmt-check> +fn apply_response_type(content: &mut RoomMessageEventContent, response_type: MessageResponseType) { treefmt-check> match response_type { treefmt-check> MessageResponseType::InRoom => {} treefmt-check> MessageResponseType::Reply(event_id) => { treefmt-check> @@ -105,11 +102,7 @@ fn apply_response_type( treefmt-check> /// treefmt-check> /// This function does not return a meaningful value (`()`). treefmt-check> /// treefmt-check> -async fn clone_and_respond( treefmt-check> - cloner: &Cloner, treefmt-check> - room: &Room, treefmt-check> - link: &GitHubLink, treefmt-check> -) { treefmt-check> +async fn clone_and_respond(cloner: &Cloner, room: &Room, link: &GitHubLink) { treefmt-check> // Wait for up to 10 seconds for the clone to complete treefmt-check> let clone_timeout = 10; treefmt-check> let long_clone_timeout = Duration::from_secs(clone_timeout); treefmt-check> @@ -398,11 +391,7 @@ pub async fn handle_github_links_in_message( treefmt-check> /// - `text` (`String`) - Content of the message in text or markdown. treefmt-check> /// - `response_type` (`MessageResponseType`) - The response type. treefmt-check> /// treefmt-check> -async fn send_room_message_or_log( treefmt-check> - room: &Room, treefmt-check> - text: String, treefmt-check> - response_type: MessageResponseType, treefmt-check> -) { treefmt-check> +async fn send_room_message_or_log(room: &Room, text: String, response_type: MessageResponseType) { treefmt-check> let mut content = RoomMessageEventContent::text_markdown(text); treefmt-check> apply_response_type(&mut content, response_type); treefmt-check> if let Err(e) = room.send(content).await { treefmt-check> @@ -443,12 +432,7 @@ async fn respond_to_whitelist( treefmt-check> "Internal error".to_string() treefmt-check> } treefmt-check> }; treefmt-check> - send_room_message_or_log( treefmt-check> - room, treefmt-check> - response_text, treefmt-check> - MessageResponseType::Reply(event_id), treefmt-check> - ) treefmt-check> - .await; treefmt-check> + send_room_message_or_log(room, response_text, MessageResponseType::Reply(event_id)).await; treefmt-check> } treefmt-check> treefmt-check> /// Get the user mentioned in an HTML string. treefmt-check> @@ -753,11 +737,9 @@ mod tests { treefmt-check> // Tests for extract_original_link treefmt-check> // --------------------------------------------------------------------------- treefmt-check> treefmt-check> - use mxlink::matrix_sdk::deserialized_responses::{ treefmt-check> - TimelineEvent, treefmt-check> - }; treefmt-check> use matrix_sdk_test::event_factory::EventFactory; treefmt-check> - use mxlink::matrix_sdk::ruma::{room_id, user_id, event_id, owned_user_id}; treefmt-check> + use mxlink::matrix_sdk::deserialized_responses::TimelineEvent; treefmt-check> + use mxlink::matrix_sdk::ruma::{event_id, owned_user_id, room_id, user_id}; treefmt-check> treefmt-check> /// Create a TimelineEvent with a plain text message event whose body starts treefmt-check> /// with MESSAGE_PREFIX and contains the given GitHub link. treefmt-check> @@ -778,12 +760,8 @@ mod tests { treefmt-check> crate::handlers::MESSAGE_PREFIX treefmt-check> ); treefmt-check> let timeline = make_message_timeline_event(&body); treefmt-check> - let link = extract_original_link(timeline) treefmt-check> - .expect("extract_original_link should succeed"); treefmt-check> - assert_eq!( treefmt-check> - link.to_string(), treefmt-check> - "https://github.com/octocat/Hello-World" treefmt-check> - ); treefmt-check> + let link = extract_original_link(timeline).expect("extract_original_link should succeed"); treefmt-check> + assert_eq!(link.to_string(), "https://github.com/octocat/Hello-World"); treefmt-check> } treefmt-check> treefmt-check> #[test] treefmt-check> @@ -820,25 +798,32 @@ mod tests { treefmt-check> use crate::cloner::Cloner; treefmt-check> use crate::githublink::GitHubLink; treefmt-check> use mxlink::matrix_sdk::{ treefmt-check> - test_utils::mocks::MatrixMockServer, treefmt-check> - ruma::events::room::message::RoomMessageEventContent, treefmt-check> + ruma::events::room::message::RoomMessageEventContent, test_utils::mocks::MatrixMockServer, treefmt-check> }; treefmt-check> + use std::sync::OnceLock; treefmt-check> use url::Url; treefmt-check> use wiremock::{ treefmt-check> Mock, ResponseTemplate, treefmt-check> matchers::{method, path}, treefmt-check> }; treefmt-check> - use std::sync::OnceLock; treefmt-check> treefmt-check> /// Set up a Matrix client synced with a joined room. treefmt-check> /// Returns (client, MatrixMockServer, room) tuple. treefmt-check> async fn setup_matrix_room( treefmt-check> room_id: &mxlink::matrix_sdk::ruma::RoomId, treefmt-check> - ) -> (mxlink::matrix_sdk::Client, MatrixMockServer, mxlink::matrix_sdk::Room) { treefmt-check> + ) -> ( treefmt-check> + mxlink::matrix_sdk::Client, treefmt-check> + MatrixMockServer, treefmt-check> + mxlink::matrix_sdk::Room, treefmt-check> + ) { treefmt-check> let mock_server = MatrixMockServer::new().await; treefmt-check> let client = mock_server.client_builder().build().await; treefmt-check> treefmt-check> - mock_server.mock_room_state_encryption().plain().mount().await; treefmt-check> + mock_server treefmt-check> + .mock_room_state_encryption() treefmt-check> + .plain() treefmt-check> + .mount() treefmt-check> + .await; treefmt-check> let room = mock_server.sync_joined_room(&client, room_id).await; treefmt-check> treefmt-check> (client, mock_server, room) treefmt-check> @@ -853,7 +838,10 @@ mod tests { treefmt-check> let server = wiremock::MockServer::start().await; treefmt-check> treefmt-check> Mock::given(method("GET")) treefmt-check> - .and(path(format!("/api/v1/repos/{}/{}", organization, repo_name))) treefmt-check> + .and(path(format!( treefmt-check> + "/api/v1/repos/{}/{}", treefmt-check> + organization, repo_name treefmt-check> + ))) treefmt-check> .respond_with(ResponseTemplate::new(status).set_body_json(body)) treefmt-check> .mount(&server) treefmt-check> .await; treefmt-check> @@ -862,12 +850,8 @@ mod tests { treefmt-check> } treefmt-check> treefmt-check> fn make_cloner(forgejo_url: &str) -> Cloner { treefmt-check> - Cloner::new( treefmt-check> - Url::parse(forgejo_url).unwrap(), treefmt-check> - "test-token", treefmt-check> - "test-org", treefmt-check> - ) treefmt-check> - .expect("Failed to create Cloner") treefmt-check> + Cloner::new(Url::parse(forgejo_url).unwrap(), "test-token", "test-org") treefmt-check> + .expect("Failed to create Cloner") treefmt-check> } treefmt-check> treefmt-check> fn mock_forgejo_repo_json(html_url: Option<&str>) -> serde_json::Value { treefmt-check> @@ -924,15 +908,21 @@ mod tests { treefmt-check> "test-org", treefmt-check> "octocat-Hello-World", treefmt-check> 200, treefmt-check> - mock_forgejo_repo_json(Some("https://forgejo.example.com/test-org/octocat-Hello-World")), treefmt-check> - ).await; treefmt-check> + mock_forgejo_repo_json(Some( treefmt-check> + "https://forgejo.example.com/test-org/octocat-Hello-World", treefmt-check> + )), treefmt-check> + ) treefmt-check> + .await; treefmt-check> treefmt-check> let cloner = make_cloner(&forgejo.uri()); treefmt-check> let link = GitHubLink::try_from("https://github.com/octocat/Hello-World").unwrap(); treefmt-check> let event = make_room_message_event(); treefmt-check> treefmt-check> let result = process_link_content(&link, &cloner, &event, &room).await; treefmt-check> - assert!(result.is_ok(), "process_link_content should succeed when already cloned"); treefmt-check> + assert!( treefmt-check> + result.is_ok(), treefmt-check> + "process_link_content should succeed when already cloned" treefmt-check> + ); treefmt-check> } treefmt-check> treefmt-check> #[tokio::test] treefmt-check> @@ -947,14 +937,18 @@ mod tests { treefmt-check> "octocat-Hello-World", treefmt-check> 500, treefmt-check> serde_json::json!({"message": "Internal Server Error"}), treefmt-check> - ).await; treefmt-check> + ) treefmt-check> + .await; treefmt-check> treefmt-check> let cloner = make_cloner(&forgejo.uri()); treefmt-check> let link = GitHubLink::try_from("https://github.com/octocat/Hello-World").unwrap(); treefmt-check> let event = make_room_message_event(); treefmt-check> treefmt-check> let result = process_link_content(&link, &cloner, &event, &room).await; treefmt-check> - assert!(result.is_ok(), "process_link_content should handle Forgejo errors gracefully"); treefmt-check> + assert!( treefmt-check> + result.is_ok(), treefmt-check> + "process_link_content should handle Forgejo errors gracefully" treefmt-check> + ); treefmt-check> } treefmt-check> treefmt-check> #[tokio::test] treefmt-check> @@ -969,7 +963,8 @@ mod tests { treefmt-check> "octocat-Hello-World", treefmt-check> 404, treefmt-check> serde_json::json!({"message": "not found"}), treefmt-check> - ).await; treefmt-check> + ) treefmt-check> + .await; treefmt-check> treefmt-check> let github_server = wiremock::MockServer::start().await; treefmt-check> treefmt-check> @@ -1003,7 +998,10 @@ mod tests { treefmt-check> let event = make_room_message_event(); treefmt-check> treefmt-check> let result = process_link_content(&link, &cloner, &event, &room).await; treefmt-check> - assert!(result.is_ok(), "process_link_content should succeed when GitHub repo not found"); treefmt-check> + assert!( treefmt-check> + result.is_ok(), treefmt-check> + "process_link_content should succeed when GitHub repo not found" treefmt-check> + ); treefmt-check> } treefmt-check> treefmt-check> // --------------------------------------------------------------------------- treefmt-check> @@ -1012,9 +1010,7 @@ mod tests { treefmt-check> treefmt-check> use tokio::sync::mpsc; treefmt-check> treefmt-check> - async fn make_test_bot_context( treefmt-check> - clone_queue: mpsc::Sender, treefmt-check> - ) -> BotContext { treefmt-check> + async fn make_test_bot_context(clone_queue: mpsc::Sender) -> BotContext { treefmt-check> let forgejo = wiremock::MockServer::start().await; treefmt-check> let cloner = Cloner::new( treefmt-check> Url::parse(&format!("{}/", forgejo.uri())).unwrap(), treefmt-check> @@ -1045,7 +1041,8 @@ mod tests { treefmt-check> let (tx, mut rx) = mpsc::channel::(1); treefmt-check> let ctx = make_test_bot_context(tx).await; treefmt-check> treefmt-check> - let text_content = TextMessageEventContent::plain("!clone https://github.com/octocat/Hello-World"); treefmt-check> + let text_content = treefmt-check> + TextMessageEventContent::plain("!clone https://github.com/octocat/Hello-World"); treefmt-check> let event_id = event_id!("$clone_event:localhost"); treefmt-check> treefmt-check> handle_clone_command(&ctx, event_id.to_owned(), &room, &text_content).await; treefmt-check> @@ -1067,12 +1064,17 @@ mod tests { treefmt-check> let (tx, mut _rx) = mpsc::channel::(1); treefmt-check> let ctx = make_test_bot_context(tx).await; treefmt-check> treefmt-check> - let text_content = TextMessageEventContent::plain("!clone https://github.com/a/b and https://github.com/c/d"); treefmt-check> + let text_content = TextMessageEventContent::plain( treefmt-check> + "!clone https://github.com/a/b and https://github.com/c/d", treefmt-check> + ); treefmt-check> let event_id = event_id!("$clone_event:localhost"); treefmt-check> treefmt-check> handle_clone_command(&ctx, event_id.to_owned(), &room, &text_content).await; treefmt-check> treefmt-check> let request = _rx.try_recv(); treefmt-check> - assert!(request.is_err(), "No clone request should be queued for multiple links"); treefmt-check> + assert!( treefmt-check> + request.is_err(), treefmt-check> + "No clone request should be queued for multiple links" treefmt-check> + ); treefmt-check> } treefmt-check> } error: Cannot build '/nix/store/a0j2gx6pd9wc3c67p2vrnn7jkmmx72cd-treefmt-check.drv'. Reason: builder failed with exit code 1. Output paths: /nix/store/7c0cpmdc3lph31q2x5mfkn5m40lr1hp7-treefmt-check Last 25 log lines: > + let text_content = > + TextMessageEventContent::plain("!clone https://github.com/octocat/Hello-World"); > let event_id = event_id!("$clone_event:localhost"); > > handle_clone_command(&ctx, event_id.to_owned(), &room, &text_content).await; > @@ -1067,12 +1064,17 @@ mod tests { > let (tx, mut _rx) = mpsc::channel::(1); > let ctx = make_test_bot_context(tx).await; > > - let text_content = TextMessageEventContent::plain("!clone https://github.com/a/b and https://github.com/c/d"); > + let text_content = TextMessageEventContent::plain( > + "!clone https://github.com/a/b and https://github.com/c/d", > + ); > let event_id = event_id!("$clone_event:localhost"); > > handle_clone_command(&ctx, event_id.to_owned(), &room, &text_content).await; > > let request = _rx.try_recv(); > - assert!(request.is_err(), "No clone request should be queued for multiple links"); > + assert!( > + request.is_err(), > + "No clone request should be queued for multiple links" > + ); > } > } For full logs, run: nix log /nix/store/a0j2gx6pd9wc3c67p2vrnn7jkmmx72cd-treefmt-check.drv