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

[インデックス 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言語の動作と一致していることが保証されます。

関連リンク

参考にした情報源リンク