Skip to main content

umpk-integration-testing

Run UMPK end-to-end tests against isolated local vanilla Minecraft Java servers. Use for live protocol, lifecycle, movement, inventory, registry, proxy, or version-matrix validation where unit tests are insufficient.

跳到安装

来源信息

仓库
MCCTeam/UMPK
最近来源活动
2026年9月12日 15:34
检测到的 SKILL.md 语言
英语
星标
2
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
5 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
umpk-integration-testing
description
Run UMPK end-to-end tests against isolated local vanilla Minecraft Java servers. Use for live protocol, lifecycle, movement, inventory, registry, proxy, or version-matrix validation where unit tests are insufficient.
metadata
{"compatibility":"Linux or macOS with .NET 10, Python 3, compatible JDKs, and local disk space for untracked vanilla artifacts."}
# UMPK integration testing Use the repository's `Umpk.IntegrationTests` live harness. It boots one isolated server per test, assigns private ports, caps the server heap at 1 GiB, waits for real listener readiness, and disposes the process after the leg. Do not substitute login success for feature validation. ## Read first - Read `references/minecraft-official.md` before provisioning or decompiling game artifacts. - Read `tests/Umpk.IntegrationTests/LiveMatrix.cs` for the 49 protocol representatives. - Read the affected live test before running it. Its assertions define the claimed coverage. ## Workflow 1. Record `git rev-parse HEAD` and `git status --short`. 2. Run `scripts/preflight.sh`. 3. Provision the exact representative versions with `scripts/provision_servers.py`. 4. Build UMPK in Release mode. 5. Run the focused live leg with fresh output under `/tmp`. 6. Run the adjacent era boundary when the behavior is version-sensitive. 7. Run `scripts/run_live_matrix.sh` only after all 49 representatives are provisioned. 8. Confirm no server process or listener owned by the run remains. Never use another checkout's binaries, server directory, Java source tree, or logs. Set `UMPK_SERVER_ROOT` and `UMPK_ORACLE_ROOT` explicitly when the repository-local defaults are not used. ## Location overrides The official artifacts do not have to live inside this checkout: ```bash export UMPK_ORACLE_ROOT=/absolute/path/to/MinecraftOfficial export UMPK_SERVER_ROOT=/absolute/path/to/server-directories python3 .skills/umpk-integration-testing/scripts/provision_servers.py \ --root "$UMPK_ORACLE_ROOT" --accept-eula 26.2 ``` `UMPK_ORACLE_ROOT` owns downloads, mappings, and `<version>-decompiled` source trees. `UMPK_SERVER_ROOT` owns the per-version directories consumed by the live Harness; omit it when those directories are at `$UMPK_ORACLE_ROOT/downloads`. `--root` overrides the provisioner's destination. Use absolute paths and keep both roots outside tracked repository content. ## Provisioning ```bash python3 .skills/umpk-integration-testing/scripts/provision_servers.py \ --accept-eula 1.8 1.12.2 1.16.5 1.20.4 1.21.11 26.2 ``` The script downloads official artifacts, verifies Mojang's SHA-1, and writes them below the ignored `MinecraftOfficial/downloads/<version>/` tree. It never places artifacts in tracked paths. ## Running ```bash dotnet build UMPK.sln -c Release UMPK_NIGHTLY=1 \ UMPK_SERVER_ROOT="$PWD/MinecraftOfficial/downloads" \ dotnet test tests/Umpk.IntegrationTests/Umpk.IntegrationTests.csproj \ -c Release --no-build --filter 'Category=Nightly' ``` The full feature theory requires every representative server directory. A missing directory is not a pass. For a focused test, use an xUnit fully-qualified-name filter and inspect which theory rows the runner actually executed. ## Evidence contract Report these fields separately: - **Executed:** commit, command, test name, versions, protocols, Java executables, and ports. - **Observed:** assertions, client state, peer/server observations, and exit codes. - **Inferred:** conclusions not directly demonstrated by that run. - **Not run:** missing prerequisites, skipped rows, interrupted work, and adjacent versions. - **Harness fault:** provisioning, Java, port, timeout, or cleanup failure. A result is valid only when its assertion is caused by a fresh action in that leg. Prefer independent server-side observation for movement, inventory, entity, and disconnect behavior. Reproduce a failure in a fresh isolated run before attributing it to UMPK. ## Isolation rules - Respect the system-wide process and memory limit declared for the run. - Use unique directories and ports for concurrent work. - Count foreign server processes toward the capacity limit, but never stop them. - Do not modify a runner while it is active. Stop it, void the partial evidence, and rerun. - Use bounded blocking waits. Do not poll long-running jobs at short intervals. - Keep raw logs and downloaded artifacts outside Git. ## When not to use Do not use this skill for build-only checks, static source comparison, documentation-only changes, or public-server testing. Public servers and authenticated accounts require explicit authorization.
在 GitHub 查看