Background
CI currently runs the whole Unity version matrix (2019.4 → 6000.0, editmode/playmode, base/windows-mono) against a single Unity-Package/ project with one Packages/manifest.json.
This is fragile: any dependency that isn't compatible with the oldest editor in the matrix breaks every older-version job at compile time, before a single test runs. We just hit exactly this — a stray com.ivanmurzak.unity.mcp + com.unity.ai.navigation in the manifest failed to compile on Unity < 2022.3, taking down all 2019/2020/2021 jobs (fixed in #44 / commit e76a0a5 by restoring the clean manifest).
Goal
Adopt the more robust structure used by the sibling repo IvanMurzak/Unity-AI-Animation: a separate, self-contained test project per Unity version, each with its own manifest pinned to packages compatible with that editor.
Unity-Tests/
2019.4.40f1/Packages/manifest.json
2020.3.48f1/Packages/manifest.json
2021.3.45f1/Packages/manifest.json
...
Each test project references the library under test via a local file: dependency pointing at Unity-Package/Assets/root (or a Packages/ embed), so the shipped package source stays single-sourced.
Tasks
Reference
Do in a separate PR (not #44).
Background
CI currently runs the whole Unity version matrix (2019.4 → 6000.0, editmode/playmode,
base/windows-mono) against a singleUnity-Package/project with onePackages/manifest.json.This is fragile: any dependency that isn't compatible with the oldest editor in the matrix breaks every older-version job at compile time, before a single test runs. We just hit exactly this — a stray
com.ivanmurzak.unity.mcp+com.unity.ai.navigationin the manifest failed to compile on Unity < 2022.3, taking down all 2019/2020/2021 jobs (fixed in #44 / commit e76a0a5 by restoring the clean manifest).Goal
Adopt the more robust structure used by the sibling repo IvanMurzak/Unity-AI-Animation: a separate, self-contained test project per Unity version, each with its own manifest pinned to packages compatible with that editor.
Each test project references the library under test via a local
file:dependency pointing atUnity-Package/Assets/root(or a Packages/ embed), so the shipped package source stays single-sourced.Tasks
Unity-Tests/<version>/projects for each Unity version in the matrix, each with a version-appropriatemanifest.json+ committedpackages-lock.json.extensions.unity.imageloader(theAssets/rootpackage) from each test project via a localfile:path so there is one source of truth..github/workflows/test_pull_request.yml(and therelease.ymltest stage) so each matrix entry passes its ownprojectPath: ./Unity-Tests/<version>. The reusabletest_unity_plugin.ymlalready acceptsprojectPathas an input, so no change needed there.TestHttpServertest infrastructure still works from the relocated test projects.standalonetestMode (the reference project runs editmode/playmode/standalone).Unity-Package/(it becomes purely the package-authoring project, matching the reference).Reference
IvanMurzak/Unity-AI-Animation/.github/workflows/test_pull_request.ymlDo in a separate PR (not #44).