[インデックス 12269] ファイルの概要
このコミットは、Go言語の標準ライブラリである net
パッケージ内のテストファイル、具体的には src/pkg/net/dial_test.go
と src/pkg/net/udp_test.go
に対して行われた軽微な修正を含んでいます。
コミット
- コミットハッシュ:
ecdd9f237624be7101e2fb4e22eca9949356a234
- 作者: Mikio Hara mikioh.mikioh@gmail.com
- コミット日時: 2012年2月29日 12:34:05 +0900
- コミットメッセージ:
net: minor fixes to test R=golang-dev, r CC=golang-dev https://golang.org/cl/5707058
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/ecdd9f237624be7101e2fb4e22eca9949356a234
元コミット内容
このコミットは、Go言語のネットワークパッケージ (net
) のテストコードにおける、いくつかの軽微な修正を目的としています。具体的には、テスト出力メッセージの文法的な修正と、コマンドライン引数の指定方法の修正が含まれます。
変更の背景
このコミットの背景には、テストコードの可読性と一貫性の向上が挙げられます。
- テストメッセージの明確化:
udp_test.go
における "should be failed" という表現は、英語として不自然であり、より自然な "should fail" に修正することで、テストが失敗した際のメッセージがより明確になります。これは、テスト結果を理解しやすくするための一般的な改善です。 - コマンドライン引数の一貫性:
dial_test.go
における--run_error_test
から-run_error_test
への変更は、Goのテスト実行におけるコマンドライン引数の慣習に合わせたものです。Goの標準的なテストフラグは通常、単一のハイフン (-
) を使用します(例:-v
,-run
)。この修正は、Goのツールチェインにおける引数解析の慣習に準拠し、一貫性を保つためのものです。
これらの変更は、機能的なバグ修正ではなく、コードの品質、特にテストコードのメンテナンス性とユーザビリティを向上させるための「マイナーな修正」として位置づけられます。
前提知識の解説
このコミットを理解するためには、以下のGo言語およびテストに関する基本的な知識が必要です。
- Go言語の
net
パッケージ: Go言語の標準ライブラリの一部であり、ネットワークI/O機能を提供します。TCP/UDP通信、IPアドレスの解決、ソケット操作など、様々なネットワークプログラミングの基盤となります。このコミットでは、net
パッケージ内のテストコードが修正されています。 - Go言語のテストフレームワーク: Goには、
testing
パッケージという組み込みのテストフレームワークがあります。テストファイルは通常_test.go
というサフィックスを持ち、go test
コマンドで実行されます。func TestXxx(t *testing.T)
: テスト関数はTest
で始まり、*testing.T
型の引数を取ります。t.Fatal()
/t.Fatalf()
: テストを即座に失敗させ、メッセージを出力します。Fatalf
はフォーマット文字列と引数を取ることができます。t.Logf()
: テスト実行中にメッセージを出力しますが、テストの合否には影響しません。デバッグ情報やテストの状況を示すために使用されます。
- コマンドラインフラグ: Goのテストは、
go test
コマンドに様々なフラグを渡すことで挙動を制御できます。例えば、-v
は詳細な出力を表示し、-run
は特定のテストのみを実行します。カスタムフラグも定義でき、このコミットではrunErrorTest
というカスタムフラグが関連しています。Goのコマンドラインフラグの慣習として、単一のハイフン (-
) がよく使われます。 - Gerrit (Code Review System): コミットメッセージにある
https://golang.org/cl/5707058
は、Goプロジェクトが使用しているコードレビューシステムであるGerritのChange-IDを指します。Goプロジェクトでは、GitHubにプッシュされる前に、Gerrit上でコードレビューが行われます。R=
はレビュー担当者 (Reviewer)、CC=
はカーボンコピー (Carbon Copy) を意味し、レビュープロセスにおける関係者を示します。
技術的詳細
このコミットで行われた技術的な変更は、主に文字列リテラルの修正と、それに伴うテストコードの出力メッセージの改善です。
-
src/pkg/net/dial_test.go
の変更:- 変更前:
t.Logf("test disabled; use --run_error_test to enable")
- 変更後:
t.Logf("test disabled; use -run_error_test to enable")
- この変更は、
runErrorTest
というテストフラグの指定方法に関するメッセージを修正しています。Goの標準的なコマンドラインフラグの慣習では、通常、単一のハイフン (-
) を使用します。例えば、go test -v
のように、フラグ名が1文字以上の場合でも単一ハイフンが使われることが一般的です。この修正により、ユーザーがテストを有効にするための正しいコマンドライン引数形式が示されるようになります。
- 変更前:
-
src/pkg/net/udp_test.go
の変更:- 変更前:
t.Fatal("WriteToUDP should be failed")
- 変更後:
t.Fatal("WriteToUDP should fail")
- 同様に、
t.Fatalf("WriteToUDP should be failed as ErrWriteToConnected: %v", err)
もt.Fatalf("WriteToUDP should fail as ErrWriteToConnected: %v", err)
に変更されています。 t.Fatal("WriteTo should be failed")
もt.Fatal("WriteTo should fail")
に変更されています。t.Fatalf("WriteTo should be failed as ErrWriteToConnected: %v", err)
もt.Fatalf("WriteTo should fail as ErrWriteToConnected: %v", err)
に変更されています。t.Fatal("Write should be failed")
もt.Fatal("Write should fail")
に変更されています。- これらの変更は、英語の文法的な修正です。"should be failed" は受動態で不自然な表現であり、"should fail" という能動態の表現がより自然で、Goのテストメッセージとして適切です。これにより、テストが期待通りに失敗しなかった場合に表示されるエラーメッセージが、より明確で理解しやすいものになります。
- 変更前:
これらの修正は、コードの動作自体を変更するものではなく、主にテストの出力メッセージの品質と、Goのツールチェインにおける慣習への準拠を目的としています。
コアとなるコードの変更箇所
diff --git a/src/pkg/net/dial_test.go b/src/pkg/net/dial_test.go
index 8a91ea284a..5f5aea146a 100644
--- a/src/pkg/net/dial_test.go
+++ b/src/pkg/net/dial_test.go
@@ -186,7 +186,7 @@ var duplicateErrorPattern = `dial (.*) dial (.*)`
func TestDialError(t *testing.T) {
if !*runErrorTest {
- t.Logf("test disabled; use --run_error_test to enable")
+ t.Logf("test disabled; use -run_error_test to enable")
return
}
for i, tt := range dialErrorTests {
diff --git a/src/pkg/net/udp_test.go b/src/pkg/net/udp_test.go
index 6ba762b1f7..ea5fad41a5 100644
--- a/src/pkg/net/udp_test.go
+++ b/src/pkg/net/udp_test.go
@@ -38,18 +38,18 @@ func testWriteToConn(t *testing.T, raddr string) {
_, err = c.(*UDPConn).WriteToUDP([]byte("Connection-oriented mode socket"), ra)
if err == nil {
- t.Fatal("WriteToUDP should be failed")
+ t.Fatal("WriteToUDP should fail")
}
if err != nil && err.(*OpError).Err != ErrWriteToConnected {
- t.Fatalf("WriteToUDP should be failed as ErrWriteToConnected: %v", err)
+ t.Fatalf("WriteToUDP should fail as ErrWriteToConnected: %v", err)
}
_, err = c.(*UDPConn).WriteTo([]byte("Connection-oriented mode socket"), ra)
if err == nil {
- t.Fatal("WriteTo should be failed")
+ t.Fatal("WriteTo should fail")
}
if err != nil && err.(*OpError).Err != ErrWriteToConnected {
- t.Fatalf("WriteTo should be failed as ErrWriteToConnected: %v", err)
+ t.Fatalf("WriteTo should fail as ErrWriteToConnected: %v", err)
}
_, err = c.Write([]byte("Connection-oriented mode socket"))
@@ -82,6 +82,6 @@ func testWriteToPacketConn(t *testing.T, raddr string) {
_, err = c.(*UDPConn).Write([]byte("Connection-less mode socket"))
if err == nil {
- t.Fatal("Write should be failed")
+ t.Fatal("Write should fail")
}
}
コアとなるコードの解説
上記の差分が示すように、変更は非常にシンプルで、既存の文字列リテラルを別の文字列リテラルに置き換えるものです。
-
src/pkg/net/dial_test.go
:t.Logf
関数に渡される文字列リテラル内の--run_error_test
が-run_error_test
に変更されています。これは、Goのテスト実行時にカスタムフラグを指定する際の一般的な慣習に合わせたものです。Goのテストフラグは通常、単一のハイフンで始まります。この修正により、テストを有効にするための指示がより正確になります。
-
src/pkg/net/udp_test.go
:t.Fatal
およびt.Fatalf
関数に渡される文字列リテラル内の "should be failed" というフレーズが、すべて "should fail" に変更されています。これは、英語の文法的な修正であり、より自然で簡潔な表現にすることで、テストが失敗した際のメッセージの可読性を向上させています。例えば、"WriteToUDP should be failed" は「WriteToUDPは失敗させられるべきだった」という受動的な意味合いが強く、"WriteToUDP should fail" は「WriteToUDPは失敗するべきだ」という能動的かつ期待される結果を示す、より直接的な表現になります。
これらの変更は、コードのロジックや機能に影響を与えるものではなく、主にテストコードのメンテナンス性、可読性、およびGoのコーディングスタイルガイドラインへの準拠を目的としたクリーンアップ作業です。
関連リンク
- Gerrit Change-ID: https://golang.org/cl/5707058
- これはGoプロジェクトがコードレビューに使用しているGerritシステム上の変更セットへのリンクです。Goのコミットは通常、GitHubにプッシュされる前にGerritでレビューされ、承認されます。このリンクから、このコミットがどのようにレビューされ、どのような議論があったかを確認できます。
参考にした情報源リンク
- Go言語の公式ドキュメント (testingパッケージ、netパッケージなど)
- Go言語のコマンドラインフラグに関する慣習
- Gerritの利用方法に関する一般的な情報