[インデックス 11850] ファイルの概要
このコミットは、Go言語のテストコマンドに関する変更を反映したものです。具体的には、Goのテスト実行コマンドがgotest
からgo test
へと移行したことに伴い、Goプロジェクト内の様々なファイルに記述されていたgotest
の参照をgo test
に更新しています。この変更は、Goツールチェインの進化とコマンド体系の標準化の一環として行われました。
コミット
commit 9a4487458a6a7f434b21bac375aaf2af06f33e86
Author: Shenghou Ma <minux.ma@gmail.com>
Date: Mon Feb 13 13:58:17 2012 -0500
all: update 'gotest' to 'go test'
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5645099
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/9a4487458a6a7f434b21bac375aaf2af06f33e86
元コミット内容
このコミットの元の内容は、Go言語の公式リポジトリにおける、テストコマンドの表記をgotest
からgo test
へ一括して更新するものです。これは、Goツールチェインの設計変更に伴うもので、主にコメントやドキュメント、テストスクリプト内のコマンド例が修正されています。
変更の背景
Go言語の初期のバージョンでは、テストを実行するためのコマンドとしてgotest
が独立して存在していました。しかし、Go言語のツールチェインが成熟するにつれて、様々な開発ツール(ビルド、フォーマット、テストなど)がgo
コマンドのサブコマンドとして統合される方針が採用されました。これは、ユーザーがGoのツールをより一貫性のある方法で利用できるようにするためです。
この統合の一環として、gotest
コマンドはgo test
という形式に置き換えられました。この変更により、Goのビルド、テスト、実行、フォーマットといった主要な操作がすべてgo <subcommand>
という統一されたインターフェースの下に集約され、開発者の利便性と学習コストの削減が図られました。このコミットは、その移行期において、既存のコードベース内に残っていた古いgotest
の参照を新しいgo test
に更新する作業を反映しています。
前提知識の解説
Go言語のツールチェイン
Go言語は、コンパイラ、リンカ、アセンブラ、フォーマッタ、テストランナーなど、開発に必要な一連のツールを統合した「ツールチェイン」を提供しています。これらのツールは、通常go
コマンドのサブコマンドとして利用されます。例えば、go build
でプログラムをビルドし、go run
で実行し、go fmt
でコードをフォーマットします。
go test
コマンド
go test
は、Go言語の標準的なテスト実行コマンドです。Goのテストは、_test.go
というサフィックスを持つファイルに記述され、TestXxx
という命名規則に従う関数として実装されます。go test
コマンドは、これらのテスト関数を自動的に発見し、実行します。
go test
には、以下のような様々なオプションがあります。
-run <regexp>
: 指定した正規表現にマッチするテストのみを実行します。-bench <regexp>
: 指定した正規表現にマッチするベンチマークテストのみを実行します。-v
: 詳細なテスト結果を表示します。-cover
: コードカバレッジを測定します。-update
: ゴールデンファイル(テストの期待結果を保存したファイル)を更新します。
gotest
コマンド(旧称)
gotest
は、go test
が導入される以前に存在した独立したテスト実行コマンドです。機能的には現在のgo test
と類似していましたが、go
コマンドのサブコマンドとして統合されることで、その役割を終えました。このコミットは、その歴史的な移行期におけるコードベースのクリーンアップ作業を示しています。
技術的詳細
このコミットは、Go言語のソースコードリポジトリ全体にわたる、gotest
からgo test
へのコマンド名の置換作業です。変更は主に以下の種類のファイルに影響を与えています。
- テストファイル内のコメント: テストの実行方法やベンチマークの実行方法を説明するコメント内で、
gotest
が使用されている箇所がgo test
に修正されています。これは、開発者がコードを読んだ際に、最新の正しいコマンドを使用できるようにするためのドキュメンタルな変更です。 - ドキュメントや使用例: コード内のコメントだけでなく、Goの標準ライブラリのテストコード内で、特定のテストシナリオを再現するためのコマンド例が記述されている箇所も更新されています。例えば、
crypto/tls
パッケージのテストでは、gnutls
との連携テストを行う際のコマンド例が修正されています。 - ベンチマークの実行指示:
math/big
やgo/printer
パッケージのベンチマークテストに関するコメントでは、ベンチマークの実行方法としてgotest -bench
が示されていましたが、これもgo test -bench
に更新されています。 - 特定のテストフラグの利用例:
net/http/httptest
パッケージのserver.go
では、デバッグ目的でHTTPサーバーを起動する際のgotest -run=BrokenTest -httptest.serve=...
というコマンド例がgo test -run=BrokenTest -httptest.serve=...
に修正されています。
この変更は、Goツールチェインの統一されたインターフェースへの移行を徹底するためのものであり、Go言語の設計思想である「シンプルさと一貫性」を反映しています。
コアとなるコードの変更箇所
このコミットでは、コードのロジック自体に大きな変更はありません。代わりに、Go言語のソースツリー内の複数のファイルにわたって、文字列の置換が行われています。以下に、変更されたファイルとその変更内容の例を挙げます。
src/pkg/crypto/tls/handshake_client_test.go
--- a/src/pkg/crypto/tls/handshake_client_test.go
+++ b/src/pkg/crypto/tls/handshake_client_test.go
@@ -62,7 +62,7 @@ func TestRunClient(t *testing.T) {
// Script of interaction with gnutls implementation.
// The values for this test are obtained by building and running in client mode:
-// % gotest -test.run "TestRunClient" -connect
+// % go test -run "TestRunClient" -connect
// and then:
// % gnutls-serv -p 10443 --debug 100 --x509keyfile key.pem --x509certfile cert.pem -a > /tmp/log 2>&1
// % python parse-gnutls-cli-debug-log.py < /tmp/log
src/pkg/go/printer/performance_test.go
--- a/src/pkg/go/printer/performance_test.go
+++ b/src/pkg/go/printer/performance_test.go
@@ -3,7 +3,7 @@
// license that can be found in the LICENSE file.
// This file implements a simple printer performance benchmark:
-// gotest -bench=BenchmarkPrint
+// go test -bench=BenchmarkPrint
package printer
src/pkg/math/big/calibrate_test.go
--- a/src/pkg/math/big/calibrate_test.go
+++ b/src/pkg/math/big/calibrate_test.go
@@ -8,7 +8,7 @@
// results are somewhat fragile; use repeated runs to get
// a clear picture.
-// Usage: gotest -calibrate
+// Usage: go test -run=TestCalibrate -calibrate
package big
src/pkg/sync/mutex_test.go
--- a/src/pkg/sync/mutex_test.go
+++ b/src/pkg/sync/mutex_test.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// GOMAXPROCS=10 gotest
+// GOMAXPROCS=10 go test
package sync_test
これらの変更は、主にコメント行や文字列リテラル内のコマンド表記を修正しており、プログラムの実行ロジックそのものには影響を与えていません。
コアとなるコードの解説
このコミットにおける「コアとなるコードの変更」は、特定の機能追加やバグ修正ではなく、Goツールチェインのコマンド体系の標準化に伴う、コードベース全体にわたる表記の統一です。
具体的には、Goのテストコマンドがgotest
からgo test
へと変更されたため、Goのソースコード内に存在するgotest
という文字列をgo test
に置き換える作業が行われました。これは、Goのテストの実行方法に関するドキュメントやコメント、テストスクリプトの例を最新の状態に保つためのメンテナンス作業です。
この変更は、Go言語のユーザーが常に最新かつ推奨されるコマンドを使用できるようにするための重要なステップであり、Goツールチェインの一貫性と使いやすさを向上させることに貢献しています。
関連リンク
- Go言語の公式ドキュメント: https://go.dev/doc/
go test
コマンドのドキュメント: https://go.dev/cmd/go/#hdr-Test_packages- Go言語のツールチェインに関する情報: https://go.dev/doc/code
参考にした情報源リンク
- Go言語の公式リポジトリのコミット履歴
- Go言語の公式ドキュメント
- Go言語に関する一般的な技術記事やフォーラムの議論(
gotest
からgo test
への移行に関する情報)