From e3275248f7dc6e2bc66f2e07105af156a706798c Mon Sep 17 00:00:00 2001 From: zhom <2717306+zhom@users.noreply.github.com> Date: Fri, 30 May 2025 07:13:20 +0400 Subject: [PATCH] chore: clippy --- src-tauri/src/api_client.rs | 222 +++++++++++++++++++----------- src-tauri/src/app_auto_updater.rs | 33 +++-- src-tauri/src/download.rs | 136 +++++++++++------- src-tauri/src/lib.rs | 9 +- 4 files changed, 249 insertions(+), 151 deletions(-) diff --git a/src-tauri/src/api_client.rs b/src-tauri/src/api_client.rs index f358231..9fe48d8 100644 --- a/src-tauri/src/api_client.rs +++ b/src-tauri/src/api_client.rs @@ -246,7 +246,8 @@ impl ApiClient { firefox_api_base: "https://product-details.mozilla.org/1.0".to_string(), firefox_dev_api_base: "https://product-details.mozilla.org/1.0".to_string(), github_api_base: "https://api.github.com".to_string(), - chromium_api_base: "https://commondatastorage.googleapis.com/chromium-browser-snapshots".to_string(), + chromium_api_base: "https://commondatastorage.googleapis.com/chromium-browser-snapshots" + .to_string(), tor_archive_base: "https://archive.torproject.org/tor-package-archive/torbrowser".to_string(), mozilla_download_base: "https://download.mozilla.org".to_string(), } @@ -587,7 +588,10 @@ impl ApiClient { } println!("Fetching Mullvad releases from GitHub API..."); - let url = format!("{}/repos/mullvad/mullvad-browser/releases", self.github_api_base); + let url = format!( + "{}/repos/mullvad/mullvad-browser/releases", + self.github_api_base + ); let releases = self .client .get(url) @@ -637,7 +641,10 @@ impl ApiClient { } println!("Fetching Zen releases from GitHub API..."); - let url = format!("{}/repos/zen-browser/desktop/releases", self.github_api_base); + let url = format!( + "{}/repos/zen-browser/desktop/releases", + self.github_api_base + ); let mut releases = self .client .get(url) @@ -679,7 +686,10 @@ impl ApiClient { } println!("Fetching Brave releases from GitHub API..."); - let url = format!("{}/repos/brave/brave-browser/releases", self.github_api_base); + let url = format!( + "{}/repos/brave/brave-browser/releases", + self.github_api_base + ); let releases = self .client .get(url) @@ -732,10 +742,7 @@ impl ApiClient { } else { "Mac" }; - let url = format!( - "{}/{arch}/LAST_CHANGE", - self.chromium_api_base - ); + let url = format!("{}/{arch}/LAST_CHANGE", self.chromium_api_base); let version = self .client .get(&url) @@ -815,17 +822,22 @@ impl ApiClient { // Check cache first (unless bypassing) if !no_caching { if let Some(cached_versions) = self.load_cached_versions("tor-browser") { - return Ok(cached_versions.into_iter().map(|version| { - BrowserRelease { - version: version.clone(), - date: "".to_string(), // Cache doesn't store dates - is_prerelease: false, // Assume all archived versions are stable - download_url: Some(format!( - "{}/{version}/tor-browser-macos-{version}.dmg", - self.tor_archive_base - )), - } - }).collect()); + return Ok( + cached_versions + .into_iter() + .map(|version| { + BrowserRelease { + version: version.clone(), + date: "".to_string(), // Cache doesn't store dates + is_prerelease: false, // Assume all archived versions are stable + download_url: Some(format!( + "{}/{version}/tor-browser-macos-{version}.dmg", + self.tor_archive_base + )), + } + }) + .collect(), + ); } } @@ -888,17 +900,22 @@ impl ApiClient { } } - Ok(version_strings.into_iter().map(|version| { - BrowserRelease { - version: version.clone(), - date: "".to_string(), // TOR archive doesn't provide structured dates - is_prerelease: false, // Assume all archived versions are stable - download_url: Some(format!( - "{}/{version}/tor-browser-macos-{version}.dmg", - self.tor_archive_base - )), - } - }).collect()) + Ok( + version_strings + .into_iter() + .map(|version| { + BrowserRelease { + version: version.clone(), + date: "".to_string(), // TOR archive doesn't provide structured dates + is_prerelease: false, // Assume all archived versions are stable + download_url: Some(format!( + "{}/{version}/tor-browser-macos-{version}.dmg", + self.tor_archive_base + )), + } + }) + .collect(), + ) } async fn check_tor_version_has_macos( @@ -923,8 +940,8 @@ impl ApiClient { #[cfg(test)] mod tests { use super::*; - use wiremock::{MockServer, Mock, ResponseTemplate}; - use wiremock::matchers::{method, path, header}; + use wiremock::matchers::{header, method, path}; + use wiremock::{Mock, MockServer, ResponseTemplate}; async fn setup_mock_server() -> MockServer { MockServer::start().await @@ -933,12 +950,12 @@ mod tests { fn create_test_client(server: &MockServer) -> ApiClient { let base_url = server.uri(); ApiClient::new_with_base_urls( - base_url.clone(), // firefox_api_base - base_url.clone(), // firefox_dev_api_base - base_url.clone(), // github_api_base - base_url.clone(), // chromium_api_base - base_url.clone(), // tor_archive_base - base_url.clone(), // mozilla_download_base + base_url.clone(), // firefox_api_base + base_url.clone(), // firefox_dev_api_base + base_url.clone(), // github_api_base + base_url.clone(), // chromium_api_base + base_url.clone(), // tor_archive_base + base_url.clone(), // mozilla_download_base ) } @@ -1068,9 +1085,11 @@ mod tests { Mock::given(method("GET")) .and(path("/firefox.json")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(mock_response) - .insert_header("content-type", "application/json")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(mock_response) + .insert_header("content-type", "application/json"), + ) .mount(&server) .await; @@ -1081,7 +1100,11 @@ mod tests { assert!(!releases.is_empty()); assert_eq!(releases[0].version, "139.0"); assert!(releases[0].download_url.is_some()); - assert!(releases[0].download_url.as_ref().unwrap().contains(&server.uri())); + assert!(releases[0] + .download_url + .as_ref() + .unwrap() + .contains(&server.uri())); } #[tokio::test] @@ -1106,20 +1129,28 @@ mod tests { Mock::given(method("GET")) .and(path("/devedition.json")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(mock_response) - .insert_header("content-type", "application/json")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(mock_response) + .insert_header("content-type", "application/json"), + ) .mount(&server) .await; - let result = client.fetch_firefox_developer_releases_with_caching(true).await; + let result = client + .fetch_firefox_developer_releases_with_caching(true) + .await; assert!(result.is_ok()); let releases = result.unwrap(); assert!(!releases.is_empty()); assert_eq!(releases[0].version, "140.0b1"); assert!(releases[0].download_url.is_some()); - assert!(releases[0].download_url.as_ref().unwrap().contains(&server.uri())); + assert!(releases[0] + .download_url + .as_ref() + .unwrap() + .contains(&server.uri())); } #[tokio::test] @@ -1145,9 +1176,11 @@ mod tests { Mock::given(method("GET")) .and(path("/repos/mullvad/mullvad-browser/releases")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(mock_response) - .insert_header("content-type", "application/json")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(mock_response) + .insert_header("content-type", "application/json"), + ) .mount(&server) .await; @@ -1183,9 +1216,11 @@ mod tests { Mock::given(method("GET")) .and(path("/repos/zen-browser/desktop/releases")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(mock_response) - .insert_header("content-type", "application/json")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(mock_response) + .insert_header("content-type", "application/json"), + ) .mount(&server) .await; @@ -1220,9 +1255,11 @@ mod tests { Mock::given(method("GET")) .and(path("/repos/brave/brave-browser/releases")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(mock_response) - .insert_header("content-type", "application/json")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(mock_response) + .insert_header("content-type", "application/json"), + ) .mount(&server) .await; @@ -1249,9 +1286,11 @@ mod tests { Mock::given(method("GET")) .and(path(format!("/{arch}/LAST_CHANGE"))) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string("1465660") - .insert_header("content-type", "text/plain")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string("1465660") + .insert_header("content-type", "text/plain"), + ) .mount(&server) .await; @@ -1276,9 +1315,11 @@ mod tests { Mock::given(method("GET")) .and(path(format!("/{arch}/LAST_CHANGE"))) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string("1465660") - .insert_header("content-type", "text/plain")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string("1465660") + .insert_header("content-type", "text/plain"), + ) .mount(&server) .await; @@ -1317,27 +1358,33 @@ mod tests { Mock::given(method("GET")) .and(path("/")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(mock_html) - .insert_header("content-type", "text/html")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(mock_html) + .insert_header("content-type", "text/html"), + ) .mount(&server) .await; Mock::given(method("GET")) .and(path("/14.0.4/")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(version_html) - .insert_header("content-type", "text/html")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(version_html) + .insert_header("content-type", "text/html"), + ) .mount(&server) .await; Mock::given(method("GET")) .and(path("/14.0.3/")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(version_html.replace("14.0.4", "14.0.3")) - .insert_header("content-type", "text/html")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(version_html.replace("14.0.4", "14.0.3")) + .insert_header("content-type", "text/html"), + ) .mount(&server) .await; @@ -1348,7 +1395,11 @@ mod tests { assert!(!releases.is_empty()); assert_eq!(releases[0].version, "14.0.4"); assert!(releases[0].download_url.is_some()); - assert!(releases[0].download_url.as_ref().unwrap().contains(&server.uri())); + assert!(releases[0] + .download_url + .as_ref() + .unwrap() + .contains(&server.uri())); } #[tokio::test] @@ -1367,9 +1418,11 @@ mod tests { Mock::given(method("GET")) .and(path("/14.0.4/")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(version_html) - .insert_header("content-type", "text/html")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(version_html) + .insert_header("content-type", "text/html"), + ) .mount(&server) .await; @@ -1395,9 +1448,11 @@ mod tests { Mock::given(method("GET")) .and(path("/14.0.5/")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(version_html) - .insert_header("content-type", "text/html")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(version_html) + .insert_header("content-type", "text/html"), + ) .mount(&server) .await; @@ -1465,9 +1520,11 @@ mod tests { Mock::given(method("GET")) .and(path("/firefox.json")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string("invalid json") - .insert_header("content-type", "application/json")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string("invalid json") + .insert_header("content-type", "application/json"), + ) .mount(&server) .await; @@ -1483,8 +1540,7 @@ mod tests { Mock::given(method("GET")) .and(path("/repos/zen-browser/desktop/releases")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(429) - .insert_header("retry-after", "60")) + .respond_with(ResponseTemplate::new(429).insert_header("retry-after", "60")) .mount(&server) .await; diff --git a/src-tauri/src/app_auto_updater.rs b/src-tauri/src/app_auto_updater.rs index f4b77b3..a93098a 100644 --- a/src-tauri/src/app_auto_updater.rs +++ b/src-tauri/src/app_auto_updater.rs @@ -63,10 +63,7 @@ impl AppAutoUpdater { let current_version = Self::get_current_version(); let is_nightly = Self::is_nightly_build(); - println!( - "Checking for updates - Current version: {}, Is nightly: {}", - current_version, is_nightly - ); + println!("Checking for updates - Current version: {current_version}, Is nightly: {is_nightly}"); let releases = self.fetch_app_releases().await?; @@ -147,10 +144,10 @@ impl AppAutoUpdater { return new_hash != current_hash; } // If current version doesn't have nightly prefix, it's an upgrade from stable to nightly - return !current_version.starts_with("nightly-"); + !current_version.starts_with("nightly-") } else { // For stable builds, use semantic versioning comparison - return self.is_version_newer(new_version, current_version); + self.is_version_newer(new_version, current_version) } } @@ -212,7 +209,7 @@ impl AppAutoUpdater { let filename = update_info .download_url .split('/') - .last() + .next_back() .unwrap_or("update.dmg") .to_string(); @@ -220,7 +217,9 @@ impl AppAutoUpdater { let _ = app_handle.emit("app-update-progress", "Downloading update..."); // Download the update - let download_path = self.download_update(&update_info.download_url, &temp_dir, &filename).await?; + let download_path = self + .download_update(&update_info.download_url, &temp_dir, &filename) + .await?; // Emit extraction start event let _ = app_handle.emit("app-update-progress", "Preparing update..."); @@ -369,7 +368,11 @@ impl AppAutoUpdater { // Remove quarantine attributes from the new app let _ = Command::new("xattr") - .args(["-dr", "com.apple.quarantine", current_app_path.to_str().unwrap()]) + .args([ + "-dr", + "com.apple.quarantine", + current_app_path.to_str().unwrap(), + ]) .output(); let _ = Command::new("xattr") @@ -422,7 +425,7 @@ pub async fn check_for_app_updates() -> Result, String> { updater .check_for_updates() .await - .map_err(|e| format!("Failed to check for app updates: {}", e)) + .map_err(|e| format!("Failed to check for app updates: {e}")) } #[tauri::command] @@ -434,7 +437,7 @@ pub async fn download_and_install_app_update( updater .download_and_install_update(&app_handle, &update_info) .await - .map_err(|e| format!("Failed to install app update: {}", e)) + .map_err(|e| format!("Failed to install app update: {e}")) } #[tauri::command] @@ -453,7 +456,7 @@ mod tests { fn test_is_nightly_build() { // This will depend on whether STABLE_RELEASE is set during test compilation let is_nightly = AppAutoUpdater::is_nightly_build(); - println!("Is nightly build: {}", is_nightly); + println!("Is nightly build: {is_nightly}"); } #[test] @@ -496,7 +499,7 @@ mod tests { // Nightly version updates assert!(updater.should_update("nightly-abc123", "nightly-def456", true)); assert!(!updater.should_update("nightly-abc123", "nightly-abc123", true)); - + // Upgrade from stable to nightly assert!(updater.should_update("v1.0.0", "nightly-abc123", true)); } @@ -520,9 +523,9 @@ mod tests { let url = updater.get_download_url_for_platform(&assets); assert!(url.is_some()); - + // The exact URL depends on the target architecture let url = url.unwrap(); assert!(url.contains(".dmg")); } -} \ No newline at end of file +} diff --git a/src-tauri/src/download.rs b/src-tauri/src/download.rs index de10a9f..4bb5883 100644 --- a/src-tauri/src/download.rs +++ b/src-tauri/src/download.rs @@ -52,7 +52,10 @@ impl Downloader { match browser_type { BrowserType::Brave => { // For Brave, we need to find the actual macOS asset - let releases = self.api_client.fetch_brave_releases_with_caching(true).await?; + let releases = self + .api_client + .fetch_brave_releases_with_caching(true) + .await?; // Find the release with the matching version let release = releases @@ -75,7 +78,10 @@ impl Downloader { } BrowserType::Zen => { // For Zen, verify the asset exists - let releases = self.api_client.fetch_zen_releases_with_caching(true).await?; + let releases = self + .api_client + .fetch_zen_releases_with_caching(true) + .await?; let release = releases .iter() @@ -95,7 +101,10 @@ impl Downloader { } BrowserType::MullvadBrowser => { // For Mullvad, verify the asset exists - let releases = self.api_client.fetch_mullvad_releases_with_caching(true).await?; + let releases = self + .api_client + .fetch_mullvad_releases_with_caching(true) + .await?; let release = releases .iter() @@ -223,9 +232,9 @@ mod tests { use crate::browser::BrowserType; use crate::browser_version_service::DownloadInfo; - use wiremock::{MockServer, Mock, ResponseTemplate}; - use wiremock::matchers::{method, path, header}; use tempfile::TempDir; + use wiremock::matchers::{header, method, path}; + use wiremock::{Mock, MockServer, ResponseTemplate}; async fn setup_mock_server() -> MockServer { MockServer::start().await @@ -234,12 +243,12 @@ mod tests { fn create_test_api_client(server: &MockServer) -> ApiClient { let base_url = server.uri(); ApiClient::new_with_base_urls( - base_url.clone(), // firefox_api_base - base_url.clone(), // firefox_dev_api_base - base_url.clone(), // github_api_base - base_url.clone(), // chromium_api_base - base_url.clone(), // tor_archive_base - base_url.clone(), // mozilla_download_base + base_url.clone(), // firefox_api_base + base_url.clone(), // firefox_dev_api_base + base_url.clone(), // github_api_base + base_url.clone(), // chromium_api_base + base_url.clone(), // tor_archive_base + base_url.clone(), // mozilla_download_base ) } @@ -267,9 +276,11 @@ mod tests { Mock::given(method("GET")) .and(path("/repos/brave/brave-browser/releases")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(mock_response) - .insert_header("content-type", "application/json")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(mock_response) + .insert_header("content-type", "application/json"), + ) .mount(&server) .await; @@ -312,9 +323,11 @@ mod tests { Mock::given(method("GET")) .and(path("/repos/zen-browser/desktop/releases")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(mock_response) - .insert_header("content-type", "application/json")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(mock_response) + .insert_header("content-type", "application/json"), + ) .mount(&server) .await; @@ -357,9 +370,11 @@ mod tests { Mock::given(method("GET")) .and(path("/repos/mullvad/mullvad-browser/releases")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(mock_response) - .insert_header("content-type", "application/json")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(mock_response) + .insert_header("content-type", "application/json"), + ) .mount(&server) .await; @@ -465,9 +480,11 @@ mod tests { Mock::given(method("GET")) .and(path("/repos/brave/brave-browser/releases")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(mock_response) - .insert_header("content-type", "application/json")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(mock_response) + .insert_header("content-type", "application/json"), + ) .mount(&server) .await; @@ -482,7 +499,10 @@ mod tests { .await; assert!(result.is_err()); - assert!(result.unwrap_err().to_string().contains("Brave version v1.81.9 not found")); + assert!(result + .unwrap_err() + .to_string() + .contains("Brave version v1.81.9 not found")); } #[tokio::test] @@ -509,9 +529,11 @@ mod tests { Mock::given(method("GET")) .and(path("/repos/zen-browser/desktop/releases")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(mock_response) - .insert_header("content-type", "application/json")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(mock_response) + .insert_header("content-type", "application/json"), + ) .mount(&server) .await; @@ -526,7 +548,10 @@ mod tests { .await; assert!(result.is_err()); - assert!(result.unwrap_err().to_string().contains("No macOS universal asset found")); + assert!(result + .unwrap_err() + .to_string() + .contains("No macOS universal asset found")); } #[tokio::test] @@ -534,22 +559,24 @@ mod tests { let server = setup_mock_server().await; let api_client = create_test_api_client(&server); let downloader = Downloader::new_with_api_client(api_client); - + // Create a temporary directory for the test let temp_dir = TempDir::new().unwrap(); let dest_path = temp_dir.path(); // Create test file content (simulating a small download) let test_content = b"This is a test file content for download simulation"; - + // Mock the download endpoint Mock::given(method("GET")) .and(path("/test-download")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_bytes(test_content) - .insert_header("content-length", test_content.len().to_string()) - .insert_header("content-type", "application/octet-stream")) + .respond_with( + ResponseTemplate::new(200) + .set_body_bytes(test_content) + .insert_header("content-length", test_content.len().to_string()) + .insert_header("content-type", "application/octet-stream"), + ) .mount(&server) .await; @@ -576,7 +603,7 @@ mod tests { assert!(result.is_ok()); let downloaded_file = result.unwrap(); assert!(downloaded_file.exists()); - + // Verify file content let downloaded_content = std::fs::read(&downloaded_file).unwrap(); assert_eq!(downloaded_content, test_content); @@ -587,7 +614,7 @@ mod tests { let server = setup_mock_server().await; let api_client = create_test_api_client(&server); let downloader = Downloader::new_with_api_client(api_client); - + let temp_dir = TempDir::new().unwrap(); let dest_path = temp_dir.path(); @@ -645,9 +672,11 @@ mod tests { Mock::given(method("GET")) .and(path("/repos/mullvad/mullvad-browser/releases")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(mock_response) - .insert_header("content-type", "application/json")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(mock_response) + .insert_header("content-type", "application/json"), + ) .mount(&server) .await; @@ -662,7 +691,10 @@ mod tests { .await; assert!(result.is_err()); - assert!(result.unwrap_err().to_string().contains("No macOS asset found")); + assert!(result + .unwrap_err() + .to_string() + .contains("No macOS asset found")); } #[tokio::test] @@ -689,9 +721,11 @@ mod tests { Mock::given(method("GET")) .and(path("/repos/brave/brave-browser/releases")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_string(mock_response) - .insert_header("content-type", "application/json")) + .respond_with( + ResponseTemplate::new(200) + .set_body_string(mock_response) + .insert_header("content-type", "application/json"), + ) .mount(&server) .await; @@ -716,20 +750,22 @@ mod tests { let server = setup_mock_server().await; let api_client = create_test_api_client(&server); let downloader = Downloader::new_with_api_client(api_client); - + let temp_dir = TempDir::new().unwrap(); let dest_path = temp_dir.path(); // Create larger test content to simulate chunked transfer let test_content = vec![42u8; 1024]; // 1KB of data - + Mock::given(method("GET")) .and(path("/chunked-download")) .and(header("user-agent", "donutbrowser")) - .respond_with(ResponseTemplate::new(200) - .set_body_bytes(test_content.clone()) - .insert_header("content-length", test_content.len().to_string()) - .insert_header("content-type", "application/octet-stream")) + .respond_with( + ResponseTemplate::new(200) + .set_body_bytes(test_content.clone()) + .insert_header("content-length", test_content.len().to_string()) + .insert_header("content-type", "application/octet-stream"), + ) .mount(&server) .await; @@ -755,7 +791,7 @@ mod tests { assert!(result.is_ok()); let downloaded_file = result.unwrap(); assert!(downloaded_file.exists()); - + let downloaded_content = std::fs::read(&downloaded_file).unwrap(); assert_eq!(downloaded_content.len(), test_content.len()); } diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index a0496f0..a081bbf 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -182,11 +182,14 @@ pub fn run() { tauri::async_runtime::spawn(async move { // Add a small delay to ensure the app is fully loaded tokio::time::sleep(tokio::time::Duration::from_secs(3)).await; - + let updater = app_auto_updater::AppAutoUpdater::new(); match updater.check_for_updates().await { Ok(Some(update_info)) => { - println!("App update available: {} -> {}", update_info.current_version, update_info.new_version); + println!( + "App update available: {} -> {}", + update_info.current_version, update_info.new_version + ); // Emit update available event to the frontend let _ = app_handle_update.emit("app-update-available", &update_info); } @@ -194,7 +197,7 @@ pub fn run() { println!("No app updates available"); } Err(e) => { - eprintln!("Failed to check for app updates: {}", e); + eprintln!("Failed to check for app updates: {e}"); } } });