コンパイルされたコードが期待どおりの出力を返すか、期待どおりに失敗するかをどのようにテストしますか?
以下の実例を作成しましたが、簡単に拡張することはできません。追加のテストごとに、追加の入れ子括弧が必要になります。もちろん、これを他のファイルに分割することもできますが、これを改善する方法について何か提案はありますか?また、これをmakefileのmake testスタンザから使用することを計画しているので、テストのためだけに、デフォルトでインストールされていないものを他の人がインストールすることは期待していません。また、stdoutもstderrとインターリーブされたままにする必要があります。
簡略化した例:
./testFoo || echo execution failed
./testBar && echo expected failure
(./testBaz && (./testBaz 2>&1 | cmp -s - foo.tst && ( ./testFoo && echo and so on
|| echo testFoo's execution failed )|| echo testBaz's does not match )
|| echo testBaz's execution failed
私の現在のテスターは次のようになります(1つのテストの場合):
\#!/bin/bash
compiler1 $1 && (compiler2 -E --make $(echo $1 | sed 's/^\(.\)\(.*\)\..*$/\l\1\2/') && (./$(echo $1 | sed 's/^\(.\)\(.*\)\..*$/\l\1\2/') || echo execution failed) || less $(echo $1 | sed 's/^\(.\)\(.*\)\..*$/\l\1\2/').err) || echo compile failed