[インデックス 1278] ファイルの概要
このコミットは、Go言語の初期開発段階において、テスト実行スクリプトである run.bash
が、当時存在する全てのテストを実行するように更新されたことを示しています。具体的には、src/lib/Makefile
と src/run.bash
の2つのファイルが変更され、新たに導入されたテストスイートがビルドおよび実行プロセスに含まれるようになりました。
コミット
commit 1a19cb8ec03f2a7fa145b0f7790abe46cbfee2e3
Author: Ian Lance Taylor <iant@golang.org>
Date: Thu Dec 4 13:14:09 2008 -0800
Make run.bash run all the current tests.
R=r,rsc
DELTA=8 (8 added, 0 deleted, 0 changed)
OCL=20468
CL=20473
--
src/lib/Makefile | 4 ++++
src/run.bash | 4 ++++
2 files changed, 8 insertions(+)
diff --git a/src/lib/Makefile b/src/lib/Makefile
index a50bdf0316..7079433897 100644
--- a/src/lib/Makefile
+++ b/src/lib/Makefile
@@ -34,6 +34,10 @@ FILES=\
utf8\
TEST=\
+\tbignum\
+\tbufio\
+\tsort\
+\tstrings\
utf8\
clean.dirs: $(addsuffix .dirclean, $(DIRS))\ndiff --git a/src/run.bash b/src/run.bash
index 64795b5e72..dccc924eb2 100755
--- a/src/run.bash
+++ b/src/run.bash
@@ -24,10 +24,14 @@ maketest() {
}
maketest \
+\tlib/fmt\
+\tlib/hash\
lib/math\
lib/reflect\
lib/regexp\
lib/strconv\
+\tlib/tabwriter\
+\tlib/time\
# all of these are subtly different
# from what maketest does.
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/1a19cb8ec03f2a7fa145b0f7790abe46cbfee2e3
元コミット内容
Make run.bash run all the current tests.
このコミットの目的は、run.bash
スクリプトが、その時点で存在する全てのテストを実行するようにすることです。
変更の背景
Go言語のプロジェクトは継続的に進化しており、新しいパッケージや機能が追加されるたびに、それらに対応するテストも作成されます。このコミットが行われた2008年12月は、Go言語がまだ一般に公開される前の初期段階であり、活発な開発が行われていました。
この変更の背景には、おそらく以下の理由が考えられます。
- テストカバレッジの維持: 新しいパッケージ(
bignum
,bufio
,sort
,strings
,fmt
,hash
,tabwriter
,time
など)が追加され、それらのテストが書かれたにもかかわらず、既存の自動テスト実行プロセス(run.bash
)がそれらを網羅していなかった可能性があります。 - 開発プロセスの効率化: 開発者が全てのテストを手動で実行することなく、単一のスクリプトでプロジェクト全体の健全性を確認できるようにするため。
- CI/CDの基盤: 将来的な継続的インテグレーション/継続的デリバリー(CI/CD)システムの基盤として、全てのテストが自動的に実行される仕組みを確立する必要があったため。
このコミットは、Goプロジェクトのテストインフラストラクチャを最新の状態に保ち、開発者が変更が既存の機能に悪影響を与えないことを迅速に確認できるようにするための、継続的な取り組みの一部です。
前提知識の解説
このコミットを理解するためには、以下の概念について基本的な知識が必要です。
- Go言語の初期開発: Go言語は2009年に一般公開されましたが、このコミットはそれ以前の2008年に行われています。当時のGoプロジェクトの構造やビルドシステムは、現在のものとは異なる部分が多くあります。
run.bash
: これはGoプロジェクトのルートディレクトリにあるシェルスクリプトで、Goのビルド、テスト、およびその他の開発関連タスクを実行するために使用されていました。Goの初期段階では、go
コマンドが存在しなかったため、このようなシェルスクリプトが重要な役割を担っていました。Makefile
:Makefile
は、ソフトウェアのビルドプロセスを自動化するためのツールであるmake
コマンドによって解釈されるファイルです。Goプロジェクトでは、特に初期段階において、ライブラリのビルドやテストの実行など、様々なタスクを自動化するために使用されていました。- Goのテスト: Go言語は、標準ライブラリに組み込まれた
testing
パッケージを通じて、テストをサポートしています。テストファイルは通常、テスト対象のソースファイルと同じディレクトリに_test.go
サフィックスを付けて配置されます。 src/lib
ディレクトリ: Goの初期のソースコードレイアウトでは、標準ライブラリのパッケージはsrc/lib
ディレクトリの下に配置されていました。現在のGoのソースコードレイアウトとは異なります。
技術的詳細
このコミットは、Goプロジェクトのテスト実行フローにおける2つの主要なコンポーネント、すなわち Makefile
と run.bash
を連携させて、新しいテストスイートを統合しています。
-
src/lib/Makefile
の変更:TEST=
変数に、新たにbignum
,bufio
,sort
,strings
が追加されています。- この
TEST
変数は、Makefile
内でテスト対象となるライブラリやパッケージをリストアップするために使用されます。make test
のようなコマンドが実行された際に、このリストに含まれる各パッケージのテストがビルドおよび実行されるように設定されていたと考えられます。 - これにより、これらの新しいパッケージのテストが、
make
ベースのビルドシステムによって認識され、実行される準備が整います。
-
src/run.bash
の変更:maketest
関数呼び出しに、新たにlib/fmt
,lib/hash
,lib/tabwriter
,lib/time
が追加されています。run.bash
スクリプトは、Goプロジェクト全体のテストを実行するための主要なエントリポイントでした。maketest
関数は、特定のライブラリパスに対してテストを実行するロジックをカプセル化していたと考えられます。- これらの追加により、
run.bash
が実行されると、これらの新しいライブラリのテストも自動的に実行されるようになります。
この変更は、Goプロジェクトのテストインフラストラクチャが、新しいコードベースの成長に合わせて動的に適応できるように設計されていたことを示しています。Makefile
は個々のライブラリのテストビルドを管理し、run.bash
はそれらのテストを統合的に実行する役割を担っていました。
コアとなるコードの変更箇所
diff --git a/src/lib/Makefile b/src/lib/Makefile
index a50bdf0316..7079433897 100644
--- a/src/lib/Makefile
+++ b/src/lib/Makefile
@@ -34,6 +34,10 @@ FILES=\
utf8\
TEST=\
+\tbignum\
+\tbufio\
+\tsort\
+\tstrings\
utf8\
clean.dirs: $(addsuffix .dirclean, $(DIRS))\ndiff --git a/src/run.bash b/src/run.bash
index 64795b5e72..dccc924eb2 100755
--- a/src/run.bash
+++ b/src/run.bash
@@ -24,10 +24,14 @@ maketest() {\
}
maketest \
+\tlib/fmt\
+\tlib/hash\
lib/math\
lib/reflect\
lib/regexp\
lib/strconv\
+\tlib/tabwriter\
+\tlib/time\
# all of these are subtly different
# from what maketest does.
コアとなるコードの解説
src/lib/Makefile
の変更点
src/lib/Makefile
では、TEST
変数に以下の4つのライブラリ名が追加されています。
bignum
bufio
sort
strings
これは、これらのライブラリがGoの標準ライブラリの一部として開発され、それらのテストが Makefile
を通じてビルドおよび実行されるべきであることを示しています。TEST
変数は、make
コマンドがテストターゲットを処理する際に参照するリストであり、これらの追加によって、これらのパッケージのテストがビルドシステムに組み込まれることになります。
src/run.bash
の変更点
src/run.bash
では、maketest
関数への呼び出しに以下の4つのライブラリパスが追加されています。
lib/fmt
lib/hash
lib/tabwriter
lib/time
run.bash
はGoプロジェクト全体のテスト実行をオーケストレーションするスクリプトであり、maketest
関数は個々のライブラリのテストを実行するためのヘルパー関数です。これらのパスの追加は、run.bash
が実行されるたびに、これらのライブラリのテストも実行されるようにすることを意味します。
これらの変更は、Go言語の初期段階におけるテストインフラストラクチャの進化を示しており、新しいパッケージが追加されるたびに、それらのテストが自動化されたテストスイートに確実に含まれるようにするための手動での調整が必要であったことが伺えます。現在のGoのビルドシステム(go test
コマンドなど)は、このような手動でのリスト更新を必要とせず、より自動化されています。
関連リンク
- Go言語の初期のソースコード: https://go.dev/doc/devel/release#go1 (Go 1のリリースノートには、それ以前の歴史への言及があります)
- Go言語の
testing
パッケージ: https://pkg.go.dev/testing Makefile
の基本: https://www.gnu.org/software/make/manual/make.html
参考にした情報源リンク
- Go言語の公式ドキュメント
- Go言語のGitHubリポジトリのコミット履歴
- 一般的なシェルスクリプト (
.bash
) とMakefile
の知識