make set / make reset がC言語のテスト時に動作しなかったバグを修正
authorj8takagi <j8takagi@nifty.com>
Tue, 28 Dec 2010 02:25:05 +0000 (11:25 +0900)
committerj8takagi <j8takagi@nifty.com>
Tue, 28 Dec 2010 02:26:34 +0000 (11:26 +0900)
doc/autotest_mk.html [new file with mode: 0644]
doc/autotest_mk.texi
template/Test.mk

diff --git a/doc/autotest_mk.html b/doc/autotest_mk.html
new file mode 100644 (file)
index 0000000..d479967
--- /dev/null
@@ -0,0 +1,421 @@
+<html lang="en">
+<head>
+<title>autotest_mk - Linux上のCASL II処理系</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="description" content="autotest_mk - Linux上のCASL II処理系">
+<meta name="generator" content="makeinfo 4.13">
+<link title="Top" rel="top" href="#Top">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+Copyright (C) 2010 j8takagi-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+body {
+    margin-left: 6em;
+    margin-right: 12em;
+    color: black;
+    background-color: #EEE;
+}
+
+h1, h2 {
+    margin-left: -2em;
+}
+
+.node{
+    margin-left: -3em;
+}
+
+h2 {
+    padding: 0.25em;
+    color: white;
+    background-color: navy;
+}
+
+h3, h4 {
+    color: navy;
+    margin-left: -1em;
+}
+
+p {
+    line-height: 1.5em;
+    margin-top: 0;
+    margin-bottom: 0.5em;
+}
+
+a:hover {
+    color: red;
+    text-decoration: underline;
+}
+
+.command {
+    font-family: monospace;
+}
+
+table.cartouche {
+    width: 60%;
+}
+
+pre.example {
+    padding: 0.5em 1em 0.5em 1em;
+    color: #CCC;
+    background: black;
+    font-size: 90%;
+}
+
+a {
+    text-decoration: none;
+}
+
+blockquote {
+    border: 1px solid #00F;
+}
+
+blockquote.p {
+    margin-top:0;
+    padding-top:0;
+    line-height: 100%;
+}
+
+table, th, td {
+    border: 1px solid #CCC;
+    border-collapse: collapse; /* 枠線の表示方法 */
+}
+
+table.cartouche, table.cartouche th, table.cartouche td  {
+    border: none;
+}
+
+pre.example .command, pre.example .option {
+    font-weight: bold;
+    background-color: inherit;
+    color: white;
+}
+
+pre.example strong {
+    font: inherit;
+    border: 2px solid green;
+}
+--></style>
+</head>
+<body>
+<h1 class="settitle">autotest_mk - Linux上のCASL II処理系</h1>
+<a name="Top"></a>
+
+<div class="contents">
+<h2>Table of Contents</h2>
+<ul>
+<li><a name="toc_About" href="#About">1 Autotest.mkの概要</a>
+<ul>
+<li><a href="#About">要件</a>
+</li></ul>
+<li><a name="toc_Install" href="#Install">2 Autotest.mkのインストール</a>
+<ul>
+<li><a href="#Download">2.1 ダウンロード</a>
+<li><a href="#Verify">2.2 ファイルの検証</a>
+<li><a href="#Expand">2.3 ファイルの展開</a>
+</li></ul>
+<li><a name="toc_Tutorial" href="#Tutorial">3 Autotest.mkチュートリアル</a>
+<ul>
+<li><a href="#Preapre">3.1 サンプルプログラムの準備</a>
+<li><a href="#Create-Group">3.2 グループディレクトリーの作成</a>
+<li><a href="#Create-Test">3.3 テストディレクトリーの作成</a>
+<li><a href="#Edit-cmd">3.4 テスト用コマンドファイルの作成</a>
+<li><a href="#Test-Set">3.5 テスト想定結果の作成と検証</a>
+<li><a href="#Test-Execute">3.6 テストの実行とログの確認</a>
+</li></ul>
+<li><a name="toc_Manual" href="#Manual">4 Autotest.mkマニュアル</a>
+<ul>
+<li><a href="#Template-Dir">4.1 テンプレートディレクトリー</a>
+<ul>
+<li><a href="#make-group">4.1.1 <kbd>make</kbd>または<kbd>make group</kbd> グループの作成</a>
+<li><a href="#Template-Files">4.1.2 テンプレートのファイル</a>
+</li></ul>
+<li><a href="#Group-Dir">4.2 グループディレクトリー</a>
+<ul>
+<li><a href="#make-create">4.2.1 <kbd>make create</kbd> テストの作成</a>
+<li><a href="#Rename">4.2.2 テスト名の変更</a>
+<li><a href="#Delete">4.2.3 テストの削除</a>
+<li><a href="#make-check-at-group">4.2.4 <kbd>make</kbd>または<kbd>make check</kbd> グループ内にあるすべてのテストの実行</a>
+<li><a href="#make-checkall">4.2.5 <kbd>make checkall</kbd> グループ内にあるすべてのテストの実行、計時</a>
+<li><a href="#make-clean-at-group">4.2.6 <kbd>make clean</kbd> グループ内にあるすべてのテストで、実行結果をクリア</a>
+<li><a href="#make-time-at-group">4.2.7 <kbd>make time</kbd> グループ内にあるすべてのテストを計時</a>
+<li><a href="#make-cleantime-at-group">4.2.8 <kbd>make cleantime</kbd> グループ内にあるすべてのテストで、計時結果をクリア</a>
+<li><a href="#Group-Files">4.2.9 グループのファイル</a>
+</li></ul>
+<li><a href="#Test-Dir">4.3 テストディレクトリー</a>
+<ul>
+<li><a href="#make-set">4.3.1 <kbd>make set</kbd> テスト想定の作成</a>
+<li><a href="#make-reset">4.3.2 <kbd>make set</kbd> テスト想定の再作成</a>
+<li><a href="#make-check-at-test">4.3.3 <kbd>make</kbd>または<kbd>make check</kbd> テストの実行</a>
+<li><a href="#make-time-at-test">4.3.4 <kbd>make time</kbd> テストの計時</a>
+<li><a href="#make-cleantime-at-test">4.3.5 <kbd>make cleantime</kbd> テスト計時結果のクリア</a>
+<li><a href="#make-clean-at-test">4.3.6 <kbd>make cleantime</kbd> テスト結果のクリア</a>
+<li><a href="#make-cleanall-at-test">4.3.7 <kbd>make cleanall</kbd> テストの想定と結果をクリア</a>
+<li><a href="#Test-Files">4.3.8 テストのファイル</a>
+</li></ul>
+</li></ul>
+</li></ul>
+</div>
+
+<p><a name="About"></a>
+
+<h2 class="chapter">1 Autotest.mkの概要</h2>
+
+<p>Autotest.mkは、GNU Makeを利用したテスト自動化ツールです。何回か<kbd>make</kbd>コマンドを実行し、プログラムのテスト結果を表す実行ファイルを作成すれば、テストの準備は完了です。あとは<kbd>make</kbd>コマンドを1回実行すれば、いつでもテストを実行できます。テストの実行結果は、ログに出力されます。
+
+ <p>Autotest.mkでは、次の3つの概念を使います。
+
+     <dl>
+<dt><samp><span class="option">テンプレート</span></samp><dd>テストグループとテストのテンプレートです。
+
+     <br><dt><samp><span class="option">テストグループ</span></samp><dd>複数のテストを含むグループです。
+
+     <br><dt><samp><span class="option">テスト</span></samp><dd>テスト個々の内容と結果を表します。
+</dl>
+
+<h3 class="unnumberedsec">要件</h3>
+
+<p>Autotest.mkは、LinuxやMac OS Xなどで動作します。現在動作を確認しているのは、次のディストリビューションです。
+
+     <ul>
+<li>Ubuntu Linux 10.10
+
+     <li>Mac OS X バージョン 10.6.5
+</ul>
+
+ <p>Mac OS Xでは、<a href="http://www.gnu.org/software/findutils/">GNU Findutils</a>をインストールしてください。
+
+<p><a name="Install"></a>
+
+<h2 class="chapter">2 Autotest.mkのインストール</h2>
+
+<p>Autotest.mkをインストールするには、次の作業をします。
+
+     <ol type=1 start=1>
+<li>Autotest.mkファイルのダウンロード
+
+     <li>Autotest.mkファイルの検証
+
+     <li>Autotest.mkファイルの展開
+      </ol>
+
+<p><a name="Download"></a>
+
+<h3 class="section">2.1 ダウンロード</h3>
+
+<p><a href="http://github.com/j8takagi/autotest_mk">GitHub/j8takagi/autotest_mk</a>の<a href="http://github.com/j8takagi/autotest_mk/downloads">ダウンロードページ</a>から最新版のtgzファイルをダウンロードします。
+
+ <p>続けて、対応する<samp><span class="file">md5sum</span></samp>フィルをダウンロードします。
+
+<p><a name="Verify"></a>
+
+<h3 class="section">2.2 ファイルの検証</h3>
+
+<p>ダウンロードが完了したら、<kbd>md5sum</kbd>と<kbd>diff</kbd>で正しくファイルがダウンロードができているかを検証します。
+
+<pre class="example">  $ <kbd>md5sum autotest_mk.tar.gz | diff -s autotest_mk.tar.gz.md5sum -</kbd>
+  Files autotest_mk.tar.gz.md5sum and - are identical
+</pre>
+ <p><a name="Expand"></a>
+
+<h3 class="section">2.3 ファイルの展開</h3>
+
+<p><samp><span class="file">autotest_mk</span></samp>ファイルをダウンロードしたら、展開先のディレクトリーに移動してから、展開します。次のコマンドでは、現在ログインしているユーザーのホームディレクトリーに展開します。
+
+<pre class="example">  $ <kbd>cd ~</kbd>
+  $ <kbd>tar xvzf autotest_mk.tar.gz</kbd>
+</pre>
+ <p>展開したら、Autotest.mkは使えるようになります。多くのプログラムをインストールするときに必要なコンパイルやビルド、システムディレクトリーへのインストール(<kbd>./configure</kbd>や<kbd>make</kbd>、<kbd>make install</kbd>)は必要ありません。
+
+<p><a name="Tutorial"></a>
+
+<h2 class="chapter">3 Autotest.mkチュートリアル</h2>
+
+<p>Autotest.mkを使ったテストの手順は、次のとおりです。
+
+     <ol type=1 start=1>
+<li>グループディレクトリーの作成
+
+     <li>テストディレクトリーの作成
+
+     <li>テスト用コマンドファイルの作成
+
+     <li>テスト想定結果の作成と検証
+
+     <li>テストの実行とログの確認
+      </ol>
+
+ <p>ここでは、次のような三角形判定プログラムをテストする手順を取り上げます。
+
+ <blockquote>
+プログラムtriangleは3つの引数をとり、それぞれ三角形の3辺の長さをあらわすものとする。プログラムは、三角形が不等辺三角形の場合は`scalene triangle'、二等辺三角形の場合は`isosceles triangle'、正三角形は`equilateral triangle'を印字する。
+</blockquote>
+
+<p><a name="Preapre"></a>
+
+<h3 class="section">3.1 サンプルプログラムの準備</h3>
+
+<p>まず、Autotest.mkのパッケージに含まれている<samp><span class="file">sample/triangle</span></samp>以下のサンプルプログラムを作業用ディレクトリーにコピーします。作業用ディレクトリーは、任意の場所に作成できます。ここでは、<samp><span class="file">~/triangle</span></samp>(<samp><span class="file">~</span></samp>は、現在ログインしているユーザーのホームディレクトリー)を作業用ディレクトリーにします。また、<samp><span class="file">autotest.mk</span></samp>は、ホームディレクトリーに展開されているものとします。
+
+<pre class="example">  $ <kbd>mkdir ~/triangle</kbd>
+  $ <kbd>cd ~/autotest.mk/sample/triangle</kbd>
+  $ <kbd>cp triangle.c Makefile ~/triangle</kbd>
+</pre>
+ <p>作業用ディレクトリーに移動し、サンプルプログラムをビルドします。
+
+<pre class="example">  $ <kbd>cd ~/triangle</kbd>
+  $ <kbd>ls</kbd>
+  Makefile        triangle.c
+  $ <kbd>make</kbd>
+  gcc -o triangle triangle.c
+</pre>
+ <p>ビルドが正常にできたかどうか、最低限のテストをします。
+
+<pre class="example">  $ <kbd>./triangle 3 4 5</kbd>
+  scalene triangle
+</pre>
+ <p><a name="Create-Group"></a>
+
+<h3 class="section">3.2 グループディレクトリーの作成</h3>
+
+<p>Autotest.mkのテストを実行するためにはまず、テンプレートディレクトリーで<kbd>make</kbd>を実行します。このとき、テストグループのディレクトリーを変数<code>GROUPDIR</code>で指定します。ここでは、<kbd>~/triangle/test</kbd>をテストグループのディレクトリーにします。
+
+<pre class="example">  $ <kbd>cd ~/autotest.mk/template</kbd>
+  $ <kbd>make GROUPDIR=~/triangle/test</kbd>
+</pre>
+ <p>次のコマンドでグループディレクトリーに移動し、その中を確認します。
+
+<pre class="example">  $ <kbd>cd ~/triangle/test</kbd>
+  $ <kbd>ls</kbd>
+  Define.mk Define_group.mk Define_test.mk Makefile Test.mk
+</pre>
+ <p><a name="Create-Test"></a>
+
+<h3 class="section">3.3 テストディレクトリーの作成</h3>
+
+<p><a name="Edit-cmd"></a>
+
+<h3 class="section">3.4 テスト用コマンドファイルの作成</h3>
+
+<p><a name="Test-Set"></a>
+
+<h3 class="section">3.5 テスト想定結果の作成と検証</h3>
+
+<p><a name="Test-Execute"></a>
+
+<h3 class="section">3.6 テストの実行とログの確認</h3>
+
+<p><a name="Manual"></a>
+
+<h2 class="chapter">4 Autotest.mkマニュアル</h2>
+
+<p><a name="Template-Dir"></a>
+
+<h3 class="section">4.1 テンプレートディレクトリー</h3>
+
+<p>テンプレートディレクトリーは、Autotest.mkをインストールするときに展開により作成された<code>template</code>ディレクトリーです。このディレクトリーに移動すると次の操作ができます。
+
+<p><a name="make-group"></a>
+
+<h4 class="subsection">4.1.1 <kbd>make</kbd>または<kbd>make group</kbd> グループの作成</h4>
+
+<p>変数<code>GROUPDIR</code>で指定されたディレクトリーをテストグループディレクトリーとして作成し、必要な次のファイルをコピーします。
+
+<p><a name="Template-Files"></a>
+
+<h4 class="subsection">4.1.2 テンプレートのファイル</h4>
+
+<p><a name="Group-Dir"></a>
+
+<h3 class="section">4.2 グループディレクトリー</h3>
+
+<p><a name="make-create"></a>
+
+<h4 class="subsection">4.2.1 <kbd>make create</kbd> テストの作成</h4>
+
+<p><a name="Rename"></a>
+
+<h4 class="subsection">4.2.2 テスト名の変更</h4>
+
+<p><a name="Delete"></a>
+
+<h4 class="subsection">4.2.3 テストの削除</h4>
+
+<p><a name="make-check-at-group"></a>
+
+<h4 class="subsection">4.2.4 <kbd>make</kbd>または<kbd>make check</kbd> グループ内にあるすべてのテストの実行</h4>
+
+<p><a name="make-checkall"></a>
+
+<h4 class="subsection">4.2.5 <kbd>make checkall</kbd> グループ内にあるすべてのテストの実行、計時</h4>
+
+<p><a name="make-clean-at-group"></a>
+
+<h4 class="subsection">4.2.6 <kbd>make clean</kbd> グループ内にあるすべてのテストで、実行結果をクリア</h4>
+
+<p><a name="make-time-at-group"></a>
+
+<h4 class="subsection">4.2.7 <kbd>make time</kbd> グループ内にあるすべてのテストを計時</h4>
+
+<p><a name="make-cleantime-at-group"></a>
+
+<h4 class="subsection">4.2.8 <kbd>make cleantime</kbd> グループ内にあるすべてのテストで、計時結果をクリア</h4>
+
+<p><a name="Group-Files"></a>
+
+<h4 class="subsection">4.2.9 グループのファイル</h4>
+
+<p><a name="Test-Dir"></a>
+
+<h3 class="section">4.3 テストディレクトリー</h3>
+
+<p><a name="make-set"></a>
+
+<h4 class="subsection">4.3.1 <kbd>make set</kbd> テスト想定の作成</h4>
+
+<p><a name="make-reset"></a>
+
+<h4 class="subsection">4.3.2 <kbd>make set</kbd> テスト想定の再作成</h4>
+
+<p><a name="make-check-at-test"></a>
+
+<h4 class="subsection">4.3.3 <kbd>make</kbd>または<kbd>make check</kbd> テストの実行</h4>
+
+<p><a name="make-time-at-test"></a>
+
+<h4 class="subsection">4.3.4 <kbd>make time</kbd> テストの計時</h4>
+
+<p><a name="make-cleantime-at-test"></a>
+
+<h4 class="subsection">4.3.5 <kbd>make cleantime</kbd> テスト計時結果のクリア</h4>
+
+<p><a name="make-clean-at-test"></a>
+
+<h4 class="subsection">4.3.6 <kbd>make cleantime</kbd> テスト結果のクリア</h4>
+
+<p><a name="make-cleanall-at-test"></a>
+
+<h4 class="subsection">4.3.7 <kbd>make cleanall</kbd> テストの想定と結果をクリア</h4>
+
+<p><a name="Test-Files"></a>
+
+<h4 class="subsection">4.3.8 テストのファイル</h4>
+
+</body></html>
+
+<!--
+\1f
+Local Variables:
+coding: utf-8
+End:
+
+-->
index 961a0b1..4a66ac9 100644 (file)
@@ -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
index 8da44c1..3a599f5 100644 (file)
@@ -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)