[インデックス 10949] ファイルの概要
このコミットは、Go言語のドキュメントに含まれるサンプルプログラムのテストスクリプト doc/progs/run
における変更です。具体的には、go1
という名前のサンプルプログラムのテストが、そのプログラムが標準出力に特定の文字列を出力するようになったことに合わせて修正されました。
コミット
commit ba9cb9dcf748081c10c5c13e01bab3fb1c4bc93a
Author: Rob Pike <r@golang.org>
Date: Wed Dec 21 12:06:20 2011 -0800
doc/progs/run: go1 prints output; fix test
R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/5502060
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/ba9cb9dcf748081c10c5c13e01bab3fb1c4bc93a
元コミット内容
doc/progs/run: go1 prints output; fix test
R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/5502060
変更の背景
このコミットの背景には、Go言語のドキュメントに含まれるサンプルプログラム go1
の振る舞いの変更があります。以前の go1
プログラムは、おそらく標準出力に何も出力しないか、テストでその出力が検証されていなかったと考えられます。しかし、何らかの変更(このコミット自体ではない、先行する変更)によって go1
プログラムが「Christmas is a holiday: true」という文字列を標準出力に出力するようになりました。
これに伴い、doc/progs/run
スクリプト内で go1
プログラムの実行結果を検証するテストが、新しい出力に対応するように更新される必要がありました。このコミットは、そのテストの修正を行うものです。つまり、go1
プログラムの出力変更に合わせて、テストの期待値を調整し、テストが正しくパスするようにすることが目的です。
前提知識の解説
このコミットを理解するためには、以下のGo言語プロジェクトにおける慣習とツールに関する知識が必要です。
- Go言語のドキュメントとサンプルコード: Go言語の公式ドキュメントは、単なる説明文だけでなく、実際に実行可能なコード例を豊富に含んでいます。これらのコード例は、読者がGo言語の機能や使い方を実際に試すことができるように設計されています。
doc/progs
ディレクトリ: Go言語のソースコードリポジトリ内にあるdoc/progs
ディレクトリは、これらのドキュメントに埋め込まれたプログラム例を格納するために使用されます。これらのプログラムは、Go言語の特定の機能を示すための小さな、自己完結型の例です。doc/progs/run
スクリプト:doc/progs/run
は、doc/progs
ディレクトリ内のサンプルプログラムを実行し、その出力が期待通りであるかを検証するためのシェルスクリプトです。これは、ドキュメントのコード例が常に最新のGo言語の動作と一致していることを保証するための、一種の統合テストハーネスとして機能します。このスクリプトは、Go言語のビルドプロセスやテストスイートの一部として実行されることがあります。testit
関数/コマンド:doc/progs/run
スクリプト内で定義されている(または利用されている)testit
は、特定のプログラムを実行し、その標準出力 (stdout) と標準エラー出力 (stderr) を、あらかじめ定義された期待値と比較するためのヘルパー関数(またはシェル関数)です。その一般的な形式はtestit <program_name> <expected_stderr> <expected_stdout>
のようになります。
技術的詳細
doc/progs/run
スクリプトは、Go言語のドキュメントに含まれる実行可能なサンプルコードの正確性を検証する役割を担っています。このスクリプトは、各サンプルプログラムをコンパイル・実行し、その出力(標準出力および標準エラー出力)を事前に定義された期待値と比較します。この比較は、通常 testit
というヘルパー関数によって行われます。
このコミットでは、go1
という特定のサンプルプログラムに関する testit
の呼び出しが変更されています。
変更前:
testit go1 "" ""
これは、「go1
プログラムを実行し、標準エラー出力は空 (""
) で、標準出力も空 (""
) であることを期待する」という意味です。
変更後:
testit go1 "" "Christmas is a holiday: true"
これは、「go1
プログラムを実行し、標準エラー出力は空 (""
) であるが、標準出力には正確に Christmas is a holiday: true
という文字列が出力されることを期待する」という意味です。
この変更は、go1
プログラム自体が更新され、この特定の文字列を標準出力に出力するようになったため、それに対応してテストの期待値を更新したものです。これにより、go1
プログラムの新しい振る舞いがテストによって正しく検証されるようになります。
コアとなるコードの変更箇所
--- a/doc/progs/run
+++ b/doc/progs/run
@@ -117,6 +117,6 @@ testit server1 "" ""
testit eff_bytesize "" "1.00YB 9.09TB"
testit eff_sequence "" "[-1 2 6 16 44]"
-testit go1 "" ""
+testit go1 "" "Christmas is a holiday: true"
rm -f $O.out $O.out.exe *.$O "$TMPFILE"
コアとなるコードの解説
変更の中心は、doc/progs/run
スクリプト内の testit
関数の呼び出しです。
-testit go1 "" ""
: 変更前の行です。これは、go1
という名前のプログラムを実行し、その標準出力と標準エラー出力がどちらも空であることを期待していました。+testit go1 "" "Christmas is a holiday: true"
: 変更後の行です。これは、go1
プログラムを実行し、標準エラー出力は引き続き空であることを期待しつつ、標準出力には「Christmas is a holiday: true」という正確な文字列が出力されることを期待するように変更されました。
この変更は、go1
プログラムの内部的なロジックが更新され、この特定の文字列を出力するようになったことを反映しています。したがって、このコミットは go1
プログラム自体の機能変更ではなく、その機能変更に伴うテストの修正です。これにより、ドキュメントのサンプルコードが常に最新のGo言語の動作と一致していることが保証されます。
関連リンク
- Gerrit Change-ID: https://golang.org/cl/5502060
参考にした情報源リンク
- GitHubコミットページ: https://github.com/golang/go/commit/ba9cb9dcf748081c10c5c13e01bab3fb1c4bc93a
- Go言語の公式ドキュメント (一般的な情報源として)
- Go言語のソースコードリポジトリ (特に
doc/progs
ディレクトリの構造とrun
スクリプトの動作を理解するため)