Windows: structure_test binary missing .exe extension causes "Open With" dialog instead of running tests
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 72/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- bash, powershell
- Ambito
- build-system, operating-systems, testing-qa
Direzione di ricerca
Inizia in container/repositories.bzl e ispeziona il BUILD della toolchain Windows generato e il grafo delle azioni che risolve structure_test. Riproduci il target container_structure_test con driver="tar" su un host Bazel Windows, quindi verifica che il launcher generato risolva un percorso .exe ed esegua i test della struttura invece di aprire una finestra di dialogo. Conferma che il target riporti il risultato effettivo del test.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
On Windows, the structure_test binary downloaded by the Bazel toolchain has no file extension. When the generated .bat launcher script tries to invoke it (via bash.exe calling the binary, or via PowerShell's & operator), Windows does not recognise it as an executable.
Instead of running, Windows displays an "Open With" application picker dialog. The test process then returns exit code 0 (the dialog closes without error), so Bazel marks the test as PASSED without any structure tests having actually run.
Root cause
The Windows toolchain BUILD registers the binary without an extension:
# container/repositories.bzl — generated BUILD for windows_amd64
structure_test_toolchain(
name = "structure_test_toolchain",
structure_test = "structure_test" # no .exe
)
Windows requires an extension to recognise a file as directly executable. The binary is a valid PE (.exe), just named without the extension.
Reproduction
- Use
container_structure_testwithdriver = "tar"on a Windows Bazel host. - Run the generated test target.
- An "Open With" dialog appears briefly and disappears; the test reports
PASSED. - No structure tests were actually executed.
Fix
Symlink the binary to <name>.exe in the Bazel action graph when building on Windows. This is safe — the binary is a valid PE regardless of its name — and the generated launcher scripts use rlocation to resolve the path at runtime, so they automatically pick up the .exe copy.
is_windows = ctx.target_platform_has_constraint(ctx.attr._windows_constraint[...])
if is_windows and not test_bin.basename.endswith(".exe"):
test_bin_exe = ctx.actions.declare_file(test_bin.basename + ".exe")
ctx.actions.symlink(output = test_bin_exe, target_file = test_bin)
test_bin = test_bin_exe
A PR with this fix is attached.
- Lingua principale
- Go
- Stelle
- 2.5k
- Fork
- 213
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun 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 GoogleContainerTools/container-structure-test
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
allstar
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
GoogleContainerTools/container-structure-test#393 · 639 commenti ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
GoogleContainerTools/container-structure-test#280 · 1 reazione ·
-
go.mod pins vulnerable docker/containerd modules; two open Dependabot PRs clear most findingsAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
-
Docker Engine v29 SupportAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 42/100
Tutte le issue di GoogleContainerTools/container-structure-test
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
google/go-containerregistry#2491 ·
I maintainer di solito rispondono entro 1 giorno
-
aiac enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
phase:v1 type:harness
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
scttfrdmn/burroughs#1181 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
compiler-explorer/ce-ci#28 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno