mirror of
https://github.com/Yuyi-Oak/BlueArchiveToolkit.git
synced 2026-07-22 04:06:44 +08:00
feat: add official sync progress logging
This commit is contained in:
@@ -8,7 +8,8 @@ use bat_adapters::official::yostar_jp::{
|
||||
};
|
||||
use bat_infrastructure::{
|
||||
build_official_pull_plan_from_platform_inventory, OfficialGameMainConfigBootstrapService,
|
||||
OfficialResourcePullService,
|
||||
OfficialResourcePullService, OfficialUpdateConfig, OfficialUpdateProgress,
|
||||
OfficialUpdateService, OfficialUpdateStatus,
|
||||
};
|
||||
use std::collections::HashMap;
|
||||
use std::fs;
|
||||
@@ -151,6 +152,39 @@ fn official_pipeline_can_dry_run_and_pull_without_local_client() {
|
||||
assert!(!curl_log.contains("bluearchive.cafe"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn official_update_service_emits_human_progress_events() {
|
||||
let harness = TestHarness::new();
|
||||
let config = OfficialUpdateConfig {
|
||||
auto_discover: true,
|
||||
launcher_version: TEST_LAUNCHER_VERSION.to_string(),
|
||||
output_root: harness.temp.path().join("sync-output"),
|
||||
curl_command: harness.curl_script.clone(),
|
||||
unzip_command: harness.unzip_script.clone(),
|
||||
dry_run: true,
|
||||
plan: true,
|
||||
..OfficialUpdateConfig::default()
|
||||
};
|
||||
let mut events = Vec::<OfficialUpdateProgress>::new();
|
||||
|
||||
let report = OfficialUpdateService::new()
|
||||
.run_with_progress(&config, |event| events.push(event))
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(report.update_status, OfficialUpdateStatus::WouldDownload);
|
||||
assert_eq!(report.download_url_count, Some(19));
|
||||
assert!(events.iter().any(|event| event.stage == "start"));
|
||||
assert!(events.iter().any(|event| event.stage == "launcher"));
|
||||
assert!(events.iter().any(|event| event.stage == "server-info"));
|
||||
assert!(events.iter().any(|event| event.stage == "marker"));
|
||||
assert!(events.iter().any(|event| event.stage == "catalog"));
|
||||
assert!(events.iter().any(|event| event.stage == "dry-run"));
|
||||
assert!(events.iter().any(|event| event.stage == "finish"));
|
||||
assert!(events.iter().any(|event| event
|
||||
.message
|
||||
.contains("pull plan contains 19 official URLs")));
|
||||
}
|
||||
|
||||
struct TestHarness {
|
||||
temp: TempDir,
|
||||
curl_script: std::path::PathBuf,
|
||||
|
||||
Reference in New Issue
Block a user