EU Build and Testing - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

Build and testing

Home · BASIC · UO API · A–Z · Examples · Languages

Build requirements

  • Windows x64 and 64-bit PowerShell;
  • the .NET SDK pinned by global.json, or a compatible patch in the same feature band;
  • an available NuGet cache or network access for package restore;
  • Node.js and npm when rebuilding the Eclipse Theia payload;
  • sufficient disk space for NativeAOT output and both editions.

Use the repository-provided Windows build command from the root of the selected source edition. Its PowerShell implementation performs environment checks, tests, compilation and output validation. Keep global.json and the package lockfiles intact unless you deliberately update and retest the toolchain.

Manual .NET checks

dotnet --version
dotnet restore .\ClassicUO.sln -p:NuGetAudit=false
dotnet test .\tests\ClassicUO.UnitTests\ClassicUO.UnitTests.csproj -c Release
dotnet test .\external\InjectionScript\src\InjectionScript.Tests\InjectionScript.Tests.csproj -c Release
dotnet test .\external\InjectionScript\src\InjectionScript.Lsp.Tests\InjectionScript.Lsp.Tests.csproj -c Release

The full and without-Basic source trees must be restored, built and tested independently. A successful full build does not prove that the without-Basic edition is free of Basic UI or Runtime dependencies.

Rebuild Eclipse Theia

Only required when the IDE frontend or extension changed:

cd .\external\YokoTheia
npm install
npm run build

Do not replace the lockfile or platform versions without rerunning the IDE and language-service checks.

NativeAOT and game data

The release client is validated as a Windows x64 NativeAOT payload. A graphical smoke test requires local Ultima Online data and is intentionally separate because copyrighted game data is not distributed with the source.

Required verification areas

  • ClassicUO tests for both editions;
  • InjectionScript Runtime tests;
  • LSP and IDE tests;
  • NativeAOT builds with no compile errors;
  • selected AutoLoad persistence per character;
  • Basic Auto Load procedure discovery and execution;
  • Basic Example storage and execution;
  • unnamed and existing-file Save behavior;
  • full-document initialization without scrolling;
  • Run, Debug, Pause, Continue, Step and Stop;
  • parallel scripts and green/yellow/stopped state indicators;
  • Runtime/API Manual parity and valid Basic examples;
  • localization and without-Basic isolation.

Archive verification

After creating the distribution ZIP:

  1. extract it into a clean temporary directory;
  2. compare the file tree and every payload hash with the staging directory;
  3. rerun native payload probes for both clients;
  4. publish the ZIP SHA-256 in an adjacent .sha256.txt file.

Automated tests do not replace a visual run against a real server. Separately inspect game-data rendering, server gumps, shard-specific packets and features whose data source is the server.