`customParameters` with a quoted value (`-testCategory "a;b"`, as the Unity manual shows) silently runs 0 tests since the CLI delegation
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 68/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- bash, docker, powershell, typescript
Direzione di ricerca
Inizia da dist/platforms/ubuntu/steps/test.sh intorno alle righe 220-234, quindi confronta la suddivisione equivalente in build.sh, riga 163, e build.ps1, riga 114. Riproduci il caso di customParameters tra virgolette e verifica che il comportamento scelto sia coerente in tutti gli script, preservando l’intento degli argomenti in stile shell oppure documentando chiaramente il contratto esistente. L’attività è completata quando il workflow riprodotto non segnala più silenziosamente un’esecuzione riuscita con zero test, oppure quando la limitazione viene resa esplicita.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug description
The Unity Test Framework command-line reference — which game.ci's own customParameters docs link to — says a semicolon-separated list "should be formatted as a string enclosed in quotation marks", e.g. -testCategory "firstCategory;secondCategory". Those quotes are shell quotes: typed into a terminal, the shell removes them and Unity receives firstCategory;secondCategory.
Through the CLI's Docker path there is no layer that does that removal, so the quotes are delivered to Unity literally. Unity does not strip quotes from argv, the category filter matches nothing, and the run finishes with Test run completed. Exiting with code 0 (Ok). No tests were executed. — a green job that ran zero tests.
This is a behaviour change relative to the pre-CLI actions. unity-test-runner ≤ v4.3 / v5.0.0-beta.1 built the docker run argv with @actions/exec, whose argStringToArray toggles quote state and drops the quote characters, so the container env was already CUSTOM_PARAMETERS=-testCategory !IgnoreCI;!Integration … and the same workflow ran the full suite. Before #257 the CLI path crashed outright on this input (the inner " broke the --env NAME="…" wrapper); #257 correctly made the value reach the container verbatim, which turned the loud failure into this silent one. Escaping was the right fix at that layer — the remaining gap is in how test.sh splits CUSTOM_PARAMETERS.
How to reproduce
- uses: game-ci/[email protected] # → game-ci CLI v0.1.57
with:
customParameters: -testCategory "!IgnoreCI;!Integration" -testHelperScreenshotDirectory /github/workspace/artifacts/Screenshots
Unity's own argv dump in the log (6000.0.44f1, but identical on every version in the matrix):
COMMAND LINE ARGUMENTS:
…
-testCategory
"!IgnoreCI;!Integration"
…
Test run completed. Exiting with code 0 (Ok). No tests were executed.
- CLI v0.1.57, all five jobs green with
total="0": https://github.com/nowsprinting/UnityTestExamples/actions/runs/34415045587 - Same workflow on unity-test-runner v5.0.0-beta.1 (pre-CLI), 210 playmode + 1852 editmode tests executed: https://github.com/nowsprinting/UnityTestExamples/actions/runs/32160674823
Where it happens: dist/platforms/ubuntu/steps/test.sh expands $CUSTOM_PARAMETERS unquoted (v0.1.57 line 234) so it word-splits only — by design no eval, per the comment at lines 220-227. build.sh line 163 does the same, so unity-builder is affected the same way. build.ps1 (line 114) splits on whitespace and has the same limitation.
Expected behavior
Either
-
CUSTOM_PARAMETERSis split shell-style — quote removal, no expansion, no execution — so a value copied from the Unity manual works. One eval-free way: letxargsdo the parsing and only everprintfthe tokens back:mapfile -t customParameters < <(xargs printf '%s\n' <<< "$CUSTOM_PARAMETERS") … "${runTests[@]}" "${COVERAGE_FLAGS[@]}" "${customParameters[@]}"xargshonours single/double quotes and backslashes but never runs a shell, so the injection concern that ruled outevaldoesn't apply. (build.sh/build.ps1would want the same.)
or, if the split-on-whitespace contract is intentional,
- document on
customParametersthat values must not be quoted (the Unity manual's quoting is for interactive shells only), and ideally warn when a"or'is present inCUSTOM_PARAMETERS, since the current outcome — a green run that executed nothing — is the worst failure mode for a CI tool.
Additional details
- Related: #257 (verbatim env values — prerequisite for this to be observable), game-ci/unity-test-runner#310 (CLI delegation).
- The workaround on the user side is simply to drop the quotes (
-testCategory !IgnoreCI;!Integration); inside the container that is word-split into exactly the two argv entries Unity expects, and it also works on the pre-CLI actions.
- Lingua principale
- TypeScript
- Stelle
- 20
- Fork
- 11
- Merge medio
- 5h 28m
- PR unite (30g)
- 4
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di game-ci/cli
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 73/100
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 32/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Issue simili
-
[BUG]: Duplicate preposition in heading and unformatted feedback text on Strengthen Argument pageApertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
AOSSIE-Org/DebateAI#801 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
ci: repo has no GitHub Actions workflow, so pushes and pull requests are never built or testedApertaagents area: runtime automation chore cli consistency dependencies developer-experience difficulty: easy documentation enhancement good first issue help wanted hygiene json-output priority: P3 starters tests
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Add: BOM CineApertaapproved check:passed streams:add
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno