Complete milestone 09 world integration gate (#75)
Some checks failed
Native code generation / deterministic (push) Failing after 8m37s
Imaging and meshing gate / native (push) Successful in 5m24s
Native Rust workspace compile / compile (push) Failing after 6m15s

This commit is contained in:
2026-08-10 21:19:43 +00:00
parent 55424dbd7f
commit fdda05b53f
18 changed files with 767 additions and 82 deletions

View File

@@ -1,6 +1,7 @@
use std::path::Path;
const KEYS: [&str; 3] = ["GRID_USER", "GRID_PASSWORD", "GRID_LOGIN_URL"];
const LIVE_OPT_IN: &str = "RUN_LIVE_TESTS";
fn dotenv_has(path: &Path, key: &str) -> bool {
std::fs::read_to_string(path).is_ok_and(|contents| {
@@ -22,9 +23,19 @@ fn main() {
for key in KEYS {
println!("cargo:rerun-if-env-changed={key}");
}
if KEYS.iter().all(|key| {
std::env::var(key).is_ok_and(|value| !value.trim().is_empty()) || dotenv_has(&dotenv, key)
}) {
println!("cargo:rerun-if-env-changed={LIVE_OPT_IN}");
let opted_in = std::env::var(LIVE_OPT_IN).is_ok_and(|value| {
matches!(
value.trim().to_ascii_lowercase().as_str(),
"1" | "true" | "yes"
)
});
if opted_in
&& KEYS.iter().all(|key| {
std::env::var(key).is_ok_and(|value| !value.trim().is_empty())
|| dotenv_has(&dotenv, key)
})
{
println!("cargo:rustc-cfg=live_grid_credentials");
}
}

View File

@@ -734,8 +734,10 @@ fn thumbnail_known_local_folder_sends_category_id() {
let mut folder = InventoryFolder::new(folder_id).expect("InventoryFolder constructor");
folder.base.set_name("Test Folder".into());
folder.base.set_parent_uuid(UUID::zero());
let mut store = client.inventory().store().expect("fixture inventory store");
store.set_item(folder_id, folder.base);
let store = client.inventory().store().expect("fixture inventory store");
store
.update_node_for(&folder)
.expect("install fixture inventory folder");
let result = block_on(client.inventory().upload_thumbnail(
folder_id,
UUID::zero(),

View File

@@ -95,19 +95,22 @@ fn avatar_facing_flows_have_typed_callable_signatures() {
}
#[test]
fn avatar_facing_constructors_fail_with_catalog_ids() {
assert_eq!(
member_id(AssetDownload::new()),
"M:LibreMetaverse.AssetDownload.#ctor"
);
assert_eq!(
member_id(AssetUpload::new()),
"M:LibreMetaverse.AssetUpload.#ctor"
);
assert_eq!(
member_id(AppearanceManagerWearableData::new()),
"M:LibreMetaverse.AppearanceManager.WearableData.#ctor"
);
fn avatar_facing_constructors_preserve_native_defaults_and_catalog_errors() {
let download = AssetDownload::new().expect("AssetDownload constructor");
assert_eq!(download.asset_id, UUID::zero());
assert_eq!(download.next_packet, 0);
assert!(download.out_of_order_packets.read().unwrap().is_empty());
let upload = AssetUpload::new().expect("AssetUpload constructor");
assert_eq!(upload.asset_id, UUID::zero());
assert_eq!(upload.packet_num, 0);
assert_eq!(upload.xfer_id, 0);
let wearable = AppearanceManagerWearableData::new().expect("WearableData constructor");
assert_eq!(wearable.asset_id, UUID::zero());
assert_eq!(wearable.item_id, UUID::zero());
assert!(wearable.asset.is_none());
assert_eq!(
member_id(InventoryException::new_with_constructor()),
"M:LibreMetaverse.InventoryException.#ctor"