Implement TestClient world commands (#93)
Some checks failed
Native code generation / deterministic (push) Failing after 31s
Imaging and meshing gate / native (push) Successful in 5m30s
JPEG 2000 feature / linux (push) Successful in 2m47s
Native Rust workspace compile / compile (push) Successful in 22m56s
Skia feature / linux (push) Successful in 31m28s

This commit is contained in:
2026-08-11 12:10:19 +00:00
parent ea10b7672c
commit 374d7958f1
9 changed files with 4182 additions and 13 deletions

View File

@@ -13,7 +13,7 @@ here so a source entry is never mistaken for a completed port.
| `prim-inspector` | PrimInspector | Implemented with live and deterministic fake-grid discovery |
| `inventory-explorer` | InventoryExplorer | Implemented with live inventory and deterministic AIS fixtures |
| `irc-gateway` | IRCGateway | Implemented with live IRC/grid transports and deterministic offline scripts |
| `test-client` | TestClient | Native shell, registry, system, communication, inventory, appearance, and asset groups implemented; remaining command groups tracked by #93#94 |
| `test-client` | TestClient | Native shell, registry, system, communication, inventory, appearance, asset, movement, object, parcel, estate, and grid groups implemented; remaining command group tracked by #94 |
| `vivox-test` | VivoxTest | Pending milestone 11 issue #95 |
| `webrtc-test` | WebRtcTest | Pending milestone 11 issue #96 |
@@ -157,8 +157,8 @@ cargo test --manifest-path tests/compat/Cargo.toml --test social_message_semanti
one account with `--first`, `--last`, and `--pass`, or a bounded account file
with `--file`. Account-file records use `First Last Password` followed by an
optional `Region/x/y/z` start location. `--loginuri`, `--startpos`, `--master`,
`--masterkey`, `--groupcommands`, `--scriptfile`, and `--nogui` preserve the
upstream shell controls. Each login has a configurable timeout, the registry is
`--masterkey`, `--groupcommands`, `--gettextures`, `--scriptfile`, and `--nogui`
preserve the upstream shell controls. Each login has a configurable timeout, the registry is
limited to 64 clients, and `@ First Last` selects one client while `@` restores
broadcast command routing.
@@ -176,6 +176,14 @@ master teleport lures are accepted, and remote `login` and `md5` command text
is redacted from transcripts. Packet logs contain only timestamped packet type,
simulator name, and byte count; they are limited to 10,000 records and 16 MiB.
The world wave adds all movement and teleport commands, primitive search,
inspection, permissions, derez, deterministic linkset export/import, texture
download, particle export, tree creation, parcel and estate queries, terrain
transfer, and grid map/layer/location/wind commands. `textures on` and
`--gettextures` perform deduplicated native asset-cache requests for observed
primitive textures. Detailed command behavior and limits are in
[`docs/test-client.md`](../docs/test-client.md).
The native `load` command reads a portable command-alias manifest instead of a
CLR assembly. Each non-comment line is tab-separated
`name<TAB>description<TAB>template`; `{args}` or `$*` inserts the quoted command
@@ -192,6 +200,12 @@ JPEG2000 texture format. Live commands use the public inventory, appearance,
asset, agent, directory, and task-inventory managers; Xfer downloads wait for
their correlated UDP completion event.
World mutations use the same global switch and confirmation requirement.
Imports and terrain uploads also require `--allow-spending`; terrain owner
messages also require `--allow-estate-actions`. Movement durations, reply
waits, files, query results, regexes, and exported/imported linksets are
bounded, and all waits propagate cancellation.
Use `--fake-script FILE` for deterministic, credential-free terminal and grid
validation. Normal lines are dispatched exactly like interactive input. Fake
grid records begin with `!` and use tab-separated fields:
@@ -228,6 +242,7 @@ framework and compatibility checks with:
```sh
cargo test -p libremetaverse-programs --test test_client_cli --locked
cargo test -p libremetaverse-programs --test test_client_inventory_cli --locked
cargo test -p libremetaverse-programs --test test_client_world_cli --locked
cargo test -p libremetaverse-programs test_client::tests --locked
cargo test --manifest-path tests/compat/Cargo.toml --test appearance_semantics --locked
cargo test --manifest-path tests/compat/Cargo.toml --test appearance_visual --locked