Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Windows: structure_test binary missing .exe extension causes "Open With" dialog instead of running tests

オープン
#557 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

@peakschris がすでに取り組んでいます。

2026年6月6日 から。

  • #559 @peakschris による — オープン

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
72/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
静か
技術スタック
bash, powershell

調査の方向性

container/repositories.bzl から開始し、生成された Windows ツールチェーンの BUILD と、structure_test を解決するアクショングラフを調査します。Windows Bazel ホストで driver="tar" を指定した container_structure_test ターゲットを再現し、生成されたランチャーが .exe パスを解決して、ダイアログを開くのではなく構造テストを実行することを確認します。ターゲットが実際のテスト結果を報告することを確認します。

索引モデルが issue の本文から書いたものです。

説明

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

  1. Use container_structure_test with driver = "tar" on a Windows Bazel host.
  2. Run the generated test target.
  3. An "Open With" dialog appears briefly and disappears; the test reports PASSED.
  4. 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.

主要言語
Go
スター
2.5k
フォーク
213
PR マージ指標
30日以内にマージされた PR はありません

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

GoogleContainerTools/container-structure-test のほかの issue

GoogleContainerTools/container-structure-test の issue をすべて見る

似ている issue

Go の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。