From: j8takagi Date: Tue, 28 Dec 2010 02:25:05 +0000 (+0900) Subject: make set / make reset がC言語のテスト時に動作しなかったバグを修正 X-Git-Tag: 0.2p3~36 X-Git-Url: https://j8takagi.net/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3c956db5fbffe8b63f8e8f54617d8bcfb3f08ff8;p=autotest_mk.git make set / make reset がC言語のテスト時に動作しなかったバグを修正 --- diff --git a/doc/autotest_mk.html b/doc/autotest_mk.html new file mode 100644 index 0000000..d479967 --- /dev/null +++ b/doc/autotest_mk.html @@ -0,0 +1,421 @@ + + +autotest_mk - Linux上のCASL II処理系 + + + + + + + + + + +

autotest_mk - Linux上のCASL II処理系

+ + +
+

Table of Contents

+ +
+ +

+ +

1 Autotest.mkの概要

+ +

Autotest.mkは、GNU Makeを利用したテスト自動化ツールです。何回かmakeコマンドを実行し、プログラムのテスト結果を表す実行ファイルを作成すれば、テストの準備は完了です。あとはmakeコマンドを1回実行すれば、いつでもテストを実行できます。テストの実行結果は、ログに出力されます。 + +

Autotest.mkでは、次の3つの概念を使います。 + +

+
テンプレート
テストグループとテストのテンプレートです。 + +
テストグループ
複数のテストを含むグループです。 + +
テスト
テスト個々の内容と結果を表します。 +
+ +

要件

+ +

Autotest.mkは、LinuxやMac OS Xなどで動作します。現在動作を確認しているのは、次のディストリビューションです。 + +

+ +

Mac OS Xでは、GNU Findutilsをインストールしてください。 + +

+ +

2 Autotest.mkのインストール

+ +

Autotest.mkをインストールするには、次の作業をします。 + +

    +
  1. Autotest.mkファイルのダウンロード + +
  2. Autotest.mkファイルの検証 + +
  3. Autotest.mkファイルの展開 +
+ +

+ +

2.1 ダウンロード

+ +

GitHub/j8takagi/autotest_mkのダウンロードページから最新版のtgzファイルをダウンロードします。 + +

続けて、対応するmd5sumフィルをダウンロードします。 + +

+ +

2.2 ファイルの検証

+ +

ダウンロードが完了したら、md5sumとdiffで正しくファイルがダウンロードができているかを検証します。 + +

  $ md5sum autotest_mk.tar.gz | diff -s autotest_mk.tar.gz.md5sum -
+  Files autotest_mk.tar.gz.md5sum and - are identical
+
+

+ +

2.3 ファイルの展開

+ +

autotest_mkファイルをダウンロードしたら、展開先のディレクトリーに移動してから、展開します。次のコマンドでは、現在ログインしているユーザーのホームディレクトリーに展開します。 + +

  $ cd ~
+  $ tar xvzf autotest_mk.tar.gz
+
+

展開したら、Autotest.mkは使えるようになります。多くのプログラムをインストールするときに必要なコンパイルやビルド、システムディレクトリーへのインストール(./configureやmake、make install)は必要ありません。 + +

+ +

3 Autotest.mkチュートリアル

+ +

Autotest.mkを使ったテストの手順は、次のとおりです。 + +

    +
  1. グループディレクトリーの作成 + +
  2. テストディレクトリーの作成 + +
  3. テスト用コマンドファイルの作成 + +
  4. テスト想定結果の作成と検証 + +
  5. テストの実行とログの確認 +
+ +

ここでは、次のような三角形判定プログラムをテストする手順を取り上げます。 + +

+プログラムtriangleは3つの引数をとり、それぞれ三角形の3辺の長さをあらわすものとする。プログラムは、三角形が不等辺三角形の場合は`scalene triangle'、二等辺三角形の場合は`isosceles triangle'、正三角形は`equilateral triangle'を印字する。 +
+ +

+ +

3.1 サンプルプログラムの準備

+ +

まず、Autotest.mkのパッケージに含まれているsample/triangle以下のサンプルプログラムを作業用ディレクトリーにコピーします。作業用ディレクトリーは、任意の場所に作成できます。ここでは、~/triangle(~は、現在ログインしているユーザーのホームディレクトリー)を作業用ディレクトリーにします。また、autotest.mkは、ホームディレクトリーに展開されているものとします。 + +

  $ mkdir ~/triangle
+  $ cd ~/autotest.mk/sample/triangle
+  $ cp triangle.c Makefile ~/triangle
+
+

作業用ディレクトリーに移動し、サンプルプログラムをビルドします。 + +

  $ cd ~/triangle
+  $ ls
+  Makefile        triangle.c
+  $ make
+  gcc -o triangle triangle.c
+
+

ビルドが正常にできたかどうか、最低限のテストをします。 + +

  $ ./triangle 3 4 5
+  scalene triangle
+
+

+ +

3.2 グループディレクトリーの作成

+ +

Autotest.mkのテストを実行するためにはまず、テンプレートディレクトリーでmakeを実行します。このとき、テストグループのディレクトリーを変数GROUPDIRで指定します。ここでは、~/triangle/testをテストグループのディレクトリーにします。 + +

  $ cd ~/autotest.mk/template
+  $ make GROUPDIR=~/triangle/test
+
+

次のコマンドでグループディレクトリーに移動し、その中を確認します。 + +

  $ cd ~/triangle/test
+  $ ls
+  Define.mk Define_group.mk Define_test.mk Makefile Test.mk
+
+

+ +

3.3 テストディレクトリーの作成

+ +

+ +

3.4 テスト用コマンドファイルの作成

+ +

+ +

3.5 テスト想定結果の作成と検証

+ +

+ +

3.6 テストの実行とログの確認

+ +

+ +

4 Autotest.mkマニュアル

+ +

+ +

4.1 テンプレートディレクトリー

+ +

テンプレートディレクトリーは、Autotest.mkをインストールするときに展開により作成されたtemplateディレクトリーです。このディレクトリーに移動すると次の操作ができます。 + +

+ +

4.1.1 makeまたはmake group グループの作成

+ +

変数GROUPDIRで指定されたディレクトリーをテストグループディレクトリーとして作成し、必要な次のファイルをコピーします。 + +

+ +

4.1.2 テンプレートのファイル

+ +

+ +

4.2 グループディレクトリー

+ +

+ +

4.2.1 make create テストの作成

+ +

+ +

4.2.2 テスト名の変更

+ +

+ +

4.2.3 テストの削除

+ +

+ +

4.2.4 makeまたはmake check グループ内にあるすべてのテストの実行

+ +

+ +

4.2.5 make checkall グループ内にあるすべてのテストの実行、計時

+ +

+ +

4.2.6 make clean グループ内にあるすべてのテストで、実行結果をクリア

+ +

+ +

4.2.7 make time グループ内にあるすべてのテストを計時

+ +

+ +

4.2.8 make cleantime グループ内にあるすべてのテストで、計時結果をクリア

+ +

+ +

4.2.9 グループのファイル

+ +

+ +

4.3 テストディレクトリー

+ +

+ +

4.3.1 make set テスト想定の作成

+ +

+ +

4.3.2 make set テスト想定の再作成

+ +

+ +

4.3.3 makeまたはmake check テストの実行

+ +

+ +

4.3.4 make time テストの計時

+ +

+ +

4.3.5 make cleantime テスト計時結果のクリア

+ +

+ +

4.3.6 make cleantime テスト結果のクリア

+ +

+ +

4.3.7 make cleanall テストの想定と結果をクリア

+ +

+ +

4.3.8 テストのファイル

+ + + + diff --git a/doc/autotest_mk.texi b/doc/autotest_mk.texi index 961a0b1..4a66ac9 100644 --- a/doc/autotest_mk.texi +++ b/doc/autotest_mk.texi @@ -132,13 +132,14 @@ Files autotest_mk.tar.gz.md5sum and - are identical @node Expand, , Verify, Install @section ファイルの展開 -@file{autotest_mk}ファイルをダウンロードしたら、次のコマンドで展開します。 +@file{autotest_mk}ファイルをダウンロードしたら、展開先のディレクトリーに移動してから、展開します。次のコマンドでは、現在ログインしているユーザーのホームディレクトリーに展開します。 @example +$ @kbd{cd ~} $ @kbd{tar xvzf autotest_mk.tar.gz} @end example -展開したら、Autotest.mkは使える状態です。多くのプログラムをインストールするときに必要なコンパイルやビルド、システムディレクトリーへのインストール(@kbd{./configure}や@kbd{make}、@kbd{make install})は必要ありません。 +展開したら、Autotest.mkは使えるようになります。多くのプログラムをインストールするときに必要なコンパイルやビルド、システムディレクトリーへのインストール(@kbd{./configure}や@kbd{make}、@kbd{make install})は必要ありません。 @node Tutorial, Manual, Install, Top @chapter Autotest.mkチュートリアル @@ -165,7 +166,7 @@ Autotest.mkを使ったテストの手順は、次のとおりです。 ここでは、次のような三角形判定プログラムをテストする手順を取り上げます。 @quotation -プログラムtriangleは3つの引数をとり、それぞれ三角形の3辺の長さをあらわすものとする。プログラムは、三角形が不等辺三角形の場合は`isosceles triangle'、二等辺三角形の場合は`isosceles triangle'、正三角形は`equilateral triangle'を印字する。 +プログラムtriangleは3つの引数をとり、それぞれ三角形の3辺の長さをあらわすものとする。プログラムは、三角形が不等辺三角形の場合は`scalene triangle'、二等辺三角形の場合は`isosceles triangle'、正三角形は`equilateral triangle'を印字する。 @end quotation @@ -181,32 +182,48 @@ Autotest.mkを使ったテストの手順は、次のとおりです。 @node Preapre, Create Group, Tutorial, Tutorial @section サンプルプログラムの準備 -まず、Autotest.mkのパッケージに含まれている@file{sample/calc}を任意のフォルダーへコピーします。 +まず、Autotest.mkのパッケージに含まれている@file{sample/triangle}以下のサンプルプログラムを作業用ディレクトリーにコピーします。作業用ディレクトリーは、任意の場所に作成できます。ここでは、@file{~/triangle}(@file{~}は、現在ログインしているユーザーのホームディレクトリー)を作業用ディレクトリーにします。また、@file{autotest.mk}は、ホームディレクトリーに展開されているものとします。 @example -$ @kbd{cd ~/autotest.mk} -$ @kbd{cp -r ~/sample/calc ~/calc} +$ @kbd{mkdir ~/triangle} +$ @kbd{cd ~/autotest.mk/sample/triangle} +$ @kbd{cp triangle.c Makefile ~/triangle} @end example +作業用ディレクトリーに移動し、サンプルプログラムをビルドします。 + +@example +$ @kbd{cd ~/triangle} +$ @kbd{ls} +Makefile triangle.c +$ @kbd{make} +gcc -o triangle triangle.c +@end example + +ビルドが正常にできたかどうか、最低限のテストをします。 + +@example +$ @kbd{./triangle 3 4 5} +scalene triangle +@end example + + @node Create Group @section グループディレクトリーの作成 -テンプレートディレクトリーで、@kbd{make}を実行します。このとき、テストグループのディレクトリーを変数@code{GROUPDIR}で指定します。 - -指定したディレクトリーが作成されます。 +Autotest.mkのテストを実行するためにはまず、テンプレートディレクトリーで@kbd{make}を実行します。このとき、テストグループのディレクトリーを変数@code{GROUPDIR}で指定します。ここでは、@kbd{~/triangle/test}をテストグループのディレクトリーにします。 @example $ @kbd{cd ~/autotest.mk/template} -$ @kbd{make GROUPDIR=~/calc/calc_test} +$ @kbd{make GROUPDIR=~/triangle/test} @end example 次のコマンドでグループディレクトリーに移動し、その中を確認します。 -テストを実行するためのMakefileが作成されます。 - @example -$ @kbd{cd ~/autotest.mk/template} -$ @kbd{make GROUPDIR=~/calc/calc_test} +$ @kbd{cd ~/triangle/test} +$ @kbd{ls} +Define.mk Define_group.mk Define_test.mk Makefile Test.mk @end example @node Create Test, Edit cmd, Create Group, Tutorial diff --git a/template/Test.mk b/template/Test.mk index 8da44c1..3a599f5 100644 --- a/template/Test.mk +++ b/template/Test.mk @@ -20,7 +20,6 @@ TEST = $(notdir $(CURRDIR)) # コマンドファイルのソース CMDSRC_FILE := $(CMD_FILE) -#CMDSRC_FILE := $(CMD_FILE).c .PHONY: check set reset time cleantime clean cleanall @@ -31,7 +30,7 @@ checkall: clean $(DETAIL_FILE) $(TIME_FILE) @$(CAT) $(TIME_FILE) >>$(LOG_FILE) @$(call disp_test_log,$(LOG_FILE)) -set: +set: $(CMD_FILE) @-$(call exec_cmd,$(CMD_FILE),$(TEST0_FILE),$(ERR_FILE)) @$(CAT) $(TEST0_FILE)