Skip to content

Verification

SKINT ships 81 EditMode tests. Run them from Window ▸ General ▸ Test Runner, or verify everything — tests and a player build — with one command:

powershell -ExecutionPolicy Bypass -File tools\verify.ps1

It exits 0 only if the suite is green, the player build succeeds, and no SKINT assembly reached the player. Logs and the results XML land in Build/VerifyArtifacts/. Use -SkipBuild or -SkipTests to run half of it.

The script finds Unity from ProjectSettings/ProjectVersion.txt, so it follows the project rather than needing a path.

Two traps it exists to avoid

If you script this yourself, know that Unity will lie to you twice:

-runTests returns exit code 0 even when tests fail

Parse the results XML; never trust the exit code. A baseline run here returned 0 with five failures.

BuildSummary.totalErrors is non-zero on a perfectly good build

A build from a cold Library/ reports dozens of TypeDB index messages about Unity's own assemblies while still producing a valid player. Key on BuildResult.

Verification on every push

powershell -ExecutionPolicy Bypass -File tools\install-hooks.ps1

Installs a pre-push hook that runs the suite and a player build before anything leaves the machine, and refuses the push if either fails. Skip it for one push with git push --no-verify; remove it with -Uninstall.

This is how SKINT gets continuous verification, and it is a deliberate choice rather than a fallback — see below.

Why not GitHub Actions

.github/workflows/verify.yml exists and is correct, but it cannot run on a Personal Unity licence. game-ci supports three activation strategies only: a Pro/Plus serial, a .ulf licence file, or a floating licence server. Unity 6 Personal uses entitlement licensing and produces no .ulf, so none of the three is available — UNITY_EMAIL and UNITY_PASSWORD on their own yield "License activation strategy could not be determined".

The workflow is kept for either of two futures: a Pro/Plus licence (add UNITY_SERIAL), or a self-hosted runner, which uses the already-activated desktop editor and needs no secrets at all.

What the tests actually cover

Persistence and coalescing, editor-skin changes, style cache invalidation, preset schema completeness, preset path safety, undo durability across a domain reload, file IO failure handling, WCAG contrast across all ten presets, install-path resolution, geometry token derivation, and the boundary around another product's EditorPrefs keys.

What they cannot cover is IMGUI rendering — EditMode tests cannot call a style getter at all, because those build from EditorStyles and throw "You can only call GUI functions from inside OnGUI" outside a GUI callback. Layout behaviour, the designer's column reflow and the status messages are verified by hand.

If you move the project

Unity's Library/ caches absolute paths, so after moving the project folder the player build fails with Could not find a part of the path "<old location>..." even though the tests pass and nothing is wrong with the code. Clear the caches that hold paths and let Unity regenerate them:

Remove-Item -Recurse -Force Library\Bee, Library\PlayerDataCache, `
                            Library\BurstCache, Library\ShaderCache, `
                            Library\ShaderCache.db, Library\LastBuild.buildreport

Library/ is gitignored, so this is always safe. Keeping the rest of it avoids a full asset reimport.