mirror of
https://github.com/Yuyi-Oak/BlueArchiveToolkit.git
synced 2026-09-18 10:04:55 +08:00
feat(addressables): 补全 catalog 可校验字段
补充 JSON/compact catalog 的 provider ID、bundle name、资源类型、hash、size、CRC 和依赖字段,并贯通 ResourceEntry、SQLite 资源索引和回归 golden。对 compact extra data 与 resource type index 的损坏返回明确错误,不再把 bundle name 当作 hash fallback。\n\n验证:cargo fmt --check;cargo test -p bat-core --locked;cargo test -p bat-adapters --locked;cargo test -p bat-infrastructure --locked;git diff --check。\n\nClippy 仍受既有 core/src/domain/game_client.rs:141 的 needless-question-mark 和 items-after-test-module 基线问题影响,未混入本 issue 修复。\n\nFixes #2
This commit is contained in:
@@ -21,6 +21,19 @@ async fn parses_current_catalog_fixture_with_resource_categories() {
|
||||
manifest.resources[3].dependencies,
|
||||
vec!["shared_dependencies.bundle".to_string()]
|
||||
);
|
||||
assert_eq!(
|
||||
manifest.resources[0].provider_id.as_deref(),
|
||||
Some("provider-table")
|
||||
);
|
||||
assert_eq!(
|
||||
manifest.resources[0].bundle_name.as_deref(),
|
||||
Some("table-bundle")
|
||||
);
|
||||
assert_eq!(manifest.resources[0].crc, Some(0x1234_5678));
|
||||
assert_eq!(
|
||||
manifest.resources[3].provider_id.as_deref(),
|
||||
Some("provider-bundle")
|
||||
);
|
||||
assert_eq!(
|
||||
manifest.metadata.cdn_prefixes,
|
||||
vec!["https://fixture.invalid/current/".to_string()]
|
||||
@@ -63,6 +76,18 @@ async fn parses_catalog_structure_change_with_alias_fields() {
|
||||
manifest.resources[0].dependencies,
|
||||
vec!["shared_assets_current.bundle".to_string()]
|
||||
);
|
||||
assert_eq!(
|
||||
manifest.resources[0].provider_id.as_deref(),
|
||||
Some("provider-android")
|
||||
);
|
||||
assert_eq!(
|
||||
manifest.resources[0].bundle_name.as_deref(),
|
||||
Some("title-android-bundle")
|
||||
);
|
||||
assert_eq!(manifest.resources[1].resource_type, ResourceType::TextAsset);
|
||||
assert_eq!(manifest.resources[1].address.as_deref(), Some("lesson"));
|
||||
assert_eq!(
|
||||
manifest.resources[1].provider_id.as_deref(),
|
||||
Some("provider-text")
|
||||
);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
"internal_id": "TableBundles/ExcelDB.db",
|
||||
"hash": "current-table-hash",
|
||||
"size": 4096,
|
||||
"provider_id": "provider-table",
|
||||
"bundle_name": "table-bundle",
|
||||
"crc": "305419896",
|
||||
"address": "ExcelDB",
|
||||
"dependencies": []
|
||||
},
|
||||
@@ -15,6 +18,8 @@
|
||||
"internal_id": "MediaResources-Windows/voice/title.acb",
|
||||
"hash": "current-media-hash",
|
||||
"size": 2048,
|
||||
"m_ProviderId": "provider-media",
|
||||
"m_BundleName": "media-bundle",
|
||||
"address": "title",
|
||||
"dependencies": []
|
||||
},
|
||||
@@ -22,6 +27,8 @@
|
||||
"internal_id": "TextAssets/dialogue.csv",
|
||||
"hash": "current-text-hash",
|
||||
"size": 128,
|
||||
"Provider": "provider-text",
|
||||
"BundleName": "text-bundle",
|
||||
"address": "dialogue",
|
||||
"dependencies": []
|
||||
},
|
||||
@@ -29,6 +36,8 @@
|
||||
"internal_id": "shared_assets_current.bundle",
|
||||
"hash": "current-bundle-hash",
|
||||
"size": 8192,
|
||||
"provider": "provider-bundle",
|
||||
"bundleName": "shared-bundle",
|
||||
"address": "shared_assets_current",
|
||||
"dependencies": [
|
||||
"shared_dependencies.bundle"
|
||||
|
||||
+4
@@ -9,6 +9,8 @@
|
||||
"InternalId": "MediaResources-Android/voice/title.awb",
|
||||
"Hash": "changed-media-hash",
|
||||
"Size": 65536,
|
||||
"ProviderId": "provider-android",
|
||||
"BundleName": "title-android-bundle",
|
||||
"Address": "title-android",
|
||||
"m_Dependencies": [
|
||||
"shared_assets_current.bundle"
|
||||
@@ -18,6 +20,8 @@
|
||||
"Path": "TextAssets/lesson.json",
|
||||
"Hash": "changed-text-hash",
|
||||
"Size": 512,
|
||||
"provider_id": "provider-text",
|
||||
"bundle_name": "lesson-bundle",
|
||||
"Key": "lesson"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"dependencies": [
|
||||
"shared_assets_all_123.bundle"
|
||||
],
|
||||
"provider_id": "UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider",
|
||||
"bundle_name": "bundle-main",
|
||||
"crc": 0
|
||||
},
|
||||
{
|
||||
@@ -22,6 +24,8 @@
|
||||
"resource_type": "AssetBundle",
|
||||
"address": "academy-_mxload-prefabs-2025-08-26_assets_all_1581352935.bundle",
|
||||
"dependencies": [],
|
||||
"provider_id": "UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider",
|
||||
"bundle_name": "bundle-second",
|
||||
"crc": 0
|
||||
},
|
||||
{
|
||||
@@ -31,16 +35,20 @@
|
||||
"resource_type": "AssetBundle",
|
||||
"address": "shared_assets_all_123.bundle",
|
||||
"dependencies": [],
|
||||
"provider_id": "UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider",
|
||||
"bundle_name": "bundle-shared",
|
||||
"crc": 0
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"asset_bundle_count": "3",
|
||||
"declared_size_count": "3",
|
||||
"bundle_name_count": "3",
|
||||
"dependency_count": "1",
|
||||
"internal_id_count": "3",
|
||||
"resource_count": "3",
|
||||
"resource_type_count": "1",
|
||||
"provider_id_count": "3",
|
||||
"key_object_count": "4",
|
||||
"bucket_record_count": "4",
|
||||
"entry_record_count": "3",
|
||||
|
||||
@@ -22,6 +22,8 @@ async fn parses_real_shape_addressables_catalog_against_golden() {
|
||||
"resource_type": format!("{:?}", resource.resource_type),
|
||||
"address": resource.address,
|
||||
"dependencies": resource.dependencies,
|
||||
"provider_id": resource.provider_id,
|
||||
"bundle_name": resource.bundle_name,
|
||||
"crc": resource.crc,
|
||||
})
|
||||
}).collect::<Vec<_>>(),
|
||||
|
||||
Reference in New Issue
Block a user