Skip to content

test command needs a Docker-based mode before unity-test-runner can convert to invoke-cli #71

Description

@frostebite

Context

unity-activate (#111) and unity-builder (#844) have both been converted from importing @game-ci/unity-engine-core as an in-process library to actually shelling out to game-ci/cli as a subprocess - the real actions-invoke-cli architecture (game-ci/roadmap#11 workstream 2). unity-test-runner (#310) is the third and last, still on the old library-import approach - and unlike the other two, it can't be safely converted yet.

The gap

cli test and unity-test-runner are not the same feature with different plumbing - they're architecturally different:

  • cli test (src/command/test/unity-test-command.ts) runs Unity's own official, still-experimental unity test CLI (docs.unity.com/en-us/unity-cli) directly on the local machine. No Docker at all.
  • unity-test-runner is entirely Docker/Hub-image-driven, and has a real feature surface cli test doesn't touch: package-mode testing (packageMode, scopedRegistryUrl, registryScopes), code coverage (coverageOptions, coveragePath output), GitHub Checks API reporting (githubToken, checkName), artifactsPath output, and the same docker resource/registry options build has (dockerCpuLimit, containerRegistryRepository, etc.).

Converting unity-test-runner to invoke cli test as-is would silently drop all of that for anyone using it today - the same class of regression closed for build in #70, just much bigger.

What's needed

A Docker-based mode for cli test (or a new command) that actually matches unity-test-runner's real surface - closer in scope to build (which already has the Docker orchestration, docker resource/registry options) than to today's local-unity test-CLI-only test command. Rough shape, not a final design:

  • Docker-driven test execution (reusing Docker.run/RunnerImageTag, same as build)
  • Package-mode support (testing a Unity package instead of a full project)
  • Coverage options and a coverage output path
  • GitHub Checks API reporting (or an equivalent that doesn't hardcode a GitHub-only DX into cli, if this is meant to also serve local/non-Actions use)

Not scoping this further or attempting an implementation here - it's a materially bigger effort than #70 and deserves its own design pass, not something to rush blind.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions