Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 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へのコマンド名の置換作業です。変更は主に以下の種類のファイルに影響を与えています。

  1. テストファイル内のコメント: テストの実行方法やベンチマークの実行方法を説明するコメント内で、gotestが使用されている箇所がgo testに修正されています。これは、開発者がコードを読んだ際に、最新の正しいコマンドを使用できるようにするためのドキュメンタルな変更です。
  2. ドキュメントや使用例: コード内のコメントだけでなく、Goの標準ライブラリのテストコード内で、特定のテストシナリオを再現するためのコマンド例が記述されている箇所も更新されています。例えば、crypto/tlsパッケージのテストでは、gnutlsとの連携テストを行う際のコマンド例が修正されています。
  3. ベンチマークの実行指示: math/biggo/printerパッケージのベンチマークテストに関するコメントでは、ベンチマークの実行方法としてgotest -benchが示されていましたが、これもgo test -benchに更新されています。
  4. 特定のテストフラグの利用例: 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言語の公式リポジトリのコミット履歴
  • Go言語の公式ドキュメント
  • Go言語に関する一般的な技術記事やフォーラムの議論(gotestからgo testへの移行に関する情報)