[インデックス 11732] ファイルの概要
このコミットは、Go言語のコマンドラインツールであるgo
コマンドのtest
サブコマンドに関するヘルプメッセージの構成を再編成するものです。具体的には、go test
コマンド自体のフラグに関する説明をgo help test
に統合し、go help testflags
はコンパイルされたテストバイナリが受け入れるフラグに特化するように変更されました。これにより、ユーザーがgo test
のヘルプ情報を参照する際の混乱を解消し、より明確な情報提供を目指しています。
コミット
commit 00d0f8e3201d1865b7cd1efa031c4dbe4a96dd7e
Author: Rob Pike <r@golang.org>
Date: Thu Feb 9 14:12:18 2012 +1100
cmd/go: rearrange help for 'go test'
Put the 'go test' flags into 'go help test', so 'go help testflags'
is about the flags for the compiled test binary.
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5641060
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/00d0f8e3201d1865b7cd1efa031c4dbe4a96dd7e
元コミット内容
cmd/go: rearrange help for 'go test'
Put the 'go test' flags into 'go help test', so 'go help testflags'
is about the flags for the compiled test binary.
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5641060
変更の背景
Go言語のgo test
コマンドは、Goパッケージのテストを実行するための主要なツールです。このコマンドは、それ自身の動作を制御するフラグ(例: -c
でテストバイナリをコンパイルするだけにする)と、テスト実行時にコンパイルされるテストバイナリに渡されるフラグ(例: -test.v
で詳細な出力を表示する)の両方を受け入れます。
このコミット以前は、go help test
とgo help testflags
のヘルプメッセージが、これらのフラグの区別を明確にしていませんでした。特に、go help testflags
がgo test
コマンド自体のフラグについても言及しており、ユーザーがどのヘルプコマンドでどのフラグ情報を参照すべきか混乱する可能性がありました。
この変更の背景には、ユーザーエクスペリエンスの向上と、コマンドラインヘルプの明確化という目的があります。ユーザーがより直感的に必要な情報にアクセスできるよう、ヘルプドキュメントの構造を論理的に整理する必要がありました。
前提知識の解説
このコミットを理解するためには、以下のGo言語の基本的な概念とコマンドラインツールの知識が必要です。
go test
コマンド: Go言語の標準的なテスト実行ツールです。指定されたパッケージ内のテスト関数(Test
で始まる関数)を実行し、結果を報告します。go help
コマンド: Go言語のコマンドラインツール全般のヘルプ情報を表示するためのコマンドです。例えば、go help <command>
とすることで、特定のサブコマンド(例:go help test
)の詳細なヘルプを表示できます。go test
のフラグ:go test
コマンドには、大きく分けて2種類のフラグがあります。go test
コマンド自身のフラグ:go test
の動作を制御します。例えば、-c
フラグはテストバイナリをコンパイルするだけで実行しないことを指示します。- テストバイナリのフラグ:
go test
によってコンパイル・実行されるテストバイナリに渡されるフラグです。これらは通常、test.
というプレフィックスを持ちます(例:-test.v
)。これらのフラグは、テストの実行方法(例: 詳細出力、特定のテストの実行、ベンチマークの実行など)を制御します。
src/cmd/go/test.go
: Go言語のソースコードリポジトリ内のパスで、go test
コマンドの実装とヘルプメッセージの定義が含まれています。Goのコマンドラインツールは、Go言語自体で書かれており、そのソースコードはsrc/cmd/go
ディレクトリ以下に配置されています。
技術的詳細
このコミットは、src/cmd/go/test.go
ファイル内のヘルプメッセージの文字列を変更することで、go help test
とgo help testflags
の役割を明確に分離しています。
具体的には、以下の変更が行われました。
-
go help test
のヘルプメッセージの更新:- 以前は
go help test
のヘルプメッセージ内で、go test
コマンド自体のフラグとテストバイナリのフラグの両方について言及し、go help testflag
を参照するように促していました。 - 変更後、
go help test
のヘルプメッセージは、go test
コマンド自体のフラグに関する説明をより詳細に含むようになりました。そして、テストバイナリのフラグについては、go help testflag
を参照するように明確に指示するようになりました。
- 以前は
-
go help testflag
のヘルプメッセージの更新:- 以前の
go help testflag
のヘルプメッセージは、go test
コマンド自体のフラグとテストバイナリのフラグの両方について説明していました。 - 変更後、
go help testflag
のヘルプメッセージは、コンパイルされたテストバイナリが受け入れるフラグにのみ焦点を当てるようになりました。これにより、testflag
という名前が示す通り、テストバイナリのフラグに関する専門的なヘルプを提供するようになりました。
- 以前の
この変更は、コードのロジック自体を変更するものではなく、ユーザーに表示されるドキュメント文字列を修正することで、情報の構造と可読性を向上させるものです。Goのコマンドラインツールは、Command
構造体の中にLong
フィールドとしてヘルプメッセージの文字列を保持しており、この文字列がユーザーに表示されます。このコミットは、そのLong
フィールドの内容を調整しています。
コアとなるコードの変更箇所
--- a/src/cmd/go/test.go
+++ b/src/cmd/go/test.go
@@ -56,23 +56,7 @@ compiled.)
The package is built in a temporary directory so it does not interfere with the
non-test installation.
-See 'go help testflag' for details about flags handled by 'go test'
-and the test binary.
-
-See 'go help importpath' for more about import paths.
-
-See also: go build, go vet.
- `,
-}
-
-var helpTestflag = &Command{
- UsageLine: "testflag",
- Short: "description of testing flags",
- Long: `
-The 'go test' command takes both flags that apply to 'go test' itself
-and flags that apply to the resulting test binary.
-
-The flags handled by 'go test' are:
+The flags handled by 'go test' itself are:
-c Compile the test binary to pkg.test but do not run it.
@@ -90,7 +74,23 @@ The flags handled by 'go test' are:
-x Print each subcommand go test executes.
-The resulting test binary, called pkg.test, where pkg is the name of the
+The test binary also accepts flags that control execution of the test; these
+flags are also accessible by 'go test'. See 'go help testflag' for details.
+
+See 'go help importpath' for more about import paths.
+
+See also: go build, go vet.
+ `,
+}
+
+var helpTestflag = &Command{
+ UsageLine: "testflag",
+ Short: "description of testing flags",
+ Long: `
+The 'go test' command takes both flags that apply to 'go test' itself
+and flags that apply to the resulting test binary.
+
+The test binary, called pkg.test, where pkg is the name of the
directory containing the package sources, has its own flags:
-test.v
コアとなるコードの解説
上記のdiffは、src/cmd/go/test.go
ファイル内の2つのCommand
構造体のLong
フィールド(ヘルプメッセージの本文)に対する変更を示しています。
-
最初の変更ブロック(
go help test
のヘルプメッセージ):- 削除された行:
これらの行は、-See 'go help testflag' for details about flags handled by 'go test' -and the test binary. - -See 'go help importpath' for more about import paths. - -See also: go build, go vet.
go help test
のヘルプメッセージの末尾に存在し、go test
とテストバイナリの両方のフラグについてgo help testflag
を参照するように促していました。また、他の関連コマンドへの参照も含まれていました。 - 追加された行:
この行は、+The flags handled by 'go test' itself are:
go test
コマンド自体のフラグの説明の前に挿入され、これから続くフラグがgo test
コマンド自身のものであることを明確に示しています。 - このブロックの変更により、
go help test
はgo test
コマンド自体のフラグに関する情報をより直接的に提供するようになりました。
- 削除された行:
-
2番目の変更ブロック(
go help testflag
のヘルプメッセージ):- 削除された行:
この行は、テストバイナリに関する説明の冒頭部分です。-The resulting test binary, called pkg.test, where pkg is the name of the
- 追加された行:
この追加された行は、+The test binary also accepts flags that control execution of the test; these +flags are also accessible by 'go test'. See 'go help testflag' for details. + +See 'go help importpath' for more about import paths. + +See also: go build, go vet. + `, +} + +var helpTestflag = &Command{ + UsageLine: "testflag", + Short: "description of testing flags", + Long: ` +The 'go test' command takes both flags that apply to 'go test' itself +and flags that apply to the resulting test binary. + +The test binary, called pkg.test, where pkg is the name of the
go help test
のヘルプメッセージの末尾に移動されたもので、go test
コマンド自体のフラグとテストバイナリのフラグの両方を受け入れること、そしてテストバイナリのフラグについてはgo help testflag
を参照するように促しています。 そして、helpTestflag
のLong
フィールドの冒頭部分が変更され、go test
コマンドが両方の種類のフラグを受け入れることを再確認しつつ、その後に続く説明がテストバイナリのフラグに特化していることを明確にしています。
- 削除された行:
これらの変更は、ヘルプメッセージの論理的な分割と再配置を通じて、ユーザーがgo test
とgo help testflags
のどちらを参照すべきかをより明確にするためのものです。これにより、Goのコマンドラインツールのドキュメンテーションがより使いやすくなりました。
関連リンク
参考にした情報源リンク
- Go Command Documentation (Go言語の公式コマンドドキュメント)
- golang/go GitHub Repository (Go言語の公式GitHubリポジトリ)
- Go CL 5641060 (このコミットのGo Code Reviewサイトでの変更リスト)
- Go test command flags (Go 1.1のリリースノートにおける
go test
の変更点に関する記述) - Go test flags vs. test binary flags (Stack Overflowでの関連議論)
- Go testing package documentation (Go言語の
testing
パッケージのドキュメント)