これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド cmdtest です。
プログラム:
NAME
cmdtest - Unix コマンド ライン ツールのブラックボックス テスト
SYNOPSIS
cmdtest [-cCOMMAND] [- 指図=COMMAND] [--config=FILE] [--ダンプ構成]
[-- ダンプ設定名] [--generate-manpage=TEMPLATE] [-h] [ - 助けて] [--ヘルプ-オール]
[--list-config-files] [- バージョン] [--no-default-configs] [--ダンプメモリプロファイル=METHOD]
[-k] [- 保つ] [--ノーキープ] [- ログ=FILE] [--ログ保持=N] [-ログレベル=LEVEL] [--log-max=サイズ]
[-ログモード=モード] [-- メモリダンプ間隔=SECONDS] [- 出力=FILE] [-tテスト] [- テスト=テスト]
[-タイミング] [--タイミングなし] [FILE] ...
DESCRIPTION
cmdtest ブラック ボックスは Unix コマンド ライン ツールをテストします。 いくつかのテスト スクリプトとその入力を考えると、
コマンドラインが期待した出力を生成することを検証します。 もしも
ではなく、問題を報告し、違いを示します。
各テストケース foo は次のファイルで構成されます。
foo.script
テストを実行するスクリプト (これは必須です)
foo.stdin
標準入力に入力されたファイル
foo.stdout
標準出力への期待される出力
foo.stderr
標準エラーへの期待される出力
foo.exit
予想される終了コード
foo.setup
テスト前に実行するシェルスクリプト
foo.分解
テスト後に実行するシェルスクリプト
通常、XNUMX 回のテストでは十分ではありません。 すべてのテストは同じディレクトリに配置され、
一部のセットアップ コードとティアダウン コードを共有する場合があります。
セットアップは XNUMX 回だけ
テスト前に一度実行するシェルスクリプト
各テストの前に実行するシェル スクリプト
取り壊す
各テストの後に実行するシェルスクリプト
分解 XNUMX 回
すべてのテスト後に XNUMX 回実行するシェル スクリプト
cmdtest すべてのテスト、またはそのような複数のテストが含まれるディレクトリの名前が指定されます。
ディレクトリにアクセスし、次のことを行います。
・ 実行する セットアップは XNUMX 回だけ
· 各テスト ケース (一意のプレフィックス) foo):
- 実行する
- 実行する foo.setup
— コマンドを実行します。 foo.script、そして標準入力をにリダイレクトします
から来る foo.stdin、標準出力、エラーおよび終了コードのキャプチャ
- 実行する foo.分解
- 実行する 取り壊す
— テスト結果のレポート: 終了コードが一致するかどうか foo.exit、標準出力の一致
foo.stdout、および標準エラー一致 foo.stderr?
・ 実行する 分解 XNUMX 回
を除いて foo.script、これらのファイルはすべてオプションです。 セットアップまたはティアダウン スクリプトが
欠落している場合は、単に実行されません。 標準入力、出力、またはエラー ファイルのいずれかが
が欠落している場合は、空であるかのように扱われます。 終了コード ファイルが見つからない場合は、
終了コード XNUMX を指定したかのように扱われます。
シェル スクリプトは次の環境変数を使用できます。
データディレクトリ
テストによってファイルが作成される可能性がある一時ディレクトリ
テスト名
現在のテストの名前 (次の場合は空になります) セットアップは XNUMX 回だけ 分解 XNUMX 回)
SRCDIR どのディレクトリから cmdtest 発売されました
OPTIONS
-c, - 指図=COMMAND
下位互換性のために無視される
--generate-manpage=TEMPLATE
サプレッシェル
-h, - 助けて
このヘルプメッセージを表示して終了します
-k, - 保つ
障害時に一時データを保持する
--ノーキープ
--keep の反対
- 出力=FILE
標準出力ではなく、出力をFILEに書き込みます
-t, - テスト=テスト
TEST のみを実行 (何度でも実行可能)
-タイミング
各テストにかかる時間を報告する
--タイミングなし
--timing の反対
- バージョン
プログラムのバージョン番号を表示して終了します
ファイル 設定
--config=FILE
設定ファイルにFILEを追加します
--ダンプ構成
現在の構成全体を書き出す
-- ダンプ設定名
サプレッシェル
--ヘルプ-オール
すべてのオプションを表示
--list-config-files
サプレッシェル
--no-default-configs
読み取る構成ファイルの明確なリスト
ロギング
- ログ=FILE
ログエントリをFILEに書き込みます(デフォルトでは、ログファイルをまったく書き込みません)。 「syslog」を使用する
システムログにログを記録するには、「stderr」を使用して標準エラー出力にログを記録するか、「none」を使用して
ロギングを無効にする
--ログ保持=N
最後のNログを保持する(10)
-ログレベル=LEVEL
レベル、デバッグ、情報、警告、エラー、クリティカル、致命的のいずれかのログ (デフォルト: デバッグ)
--log-max=サイズ
SIZEより大きいログをローテーションし、ゼロの場合はゼロ(デフォルト:0)
-ログモード=モード
新しいログファイルのアクセス許可をMODE(0600進数、デフォルトはXNUMX)に設定します
性能
--ダンプメモリプロファイル=METHOD
なし、シンプル、またはメリアスのいずれかであるMETHODを使用してメモリプロファイリングダンプを作成します
(デフォルト:シンプル)
-- メモリダンプ間隔=SECONDS
メモリプロファイリングダンプを少なくともXNUMX秒離して作成します
実施例
それをテストするには echo(1) コマンドは期待される文字列を出力します。というファイルを作成します。 エコー-
テスト/hello.script 次の内容が含まれます。
#!/bin/sh
エコー、こんにちは、世界
ファイルも作成します echo-tests/hello.stdout 含む:
こんにちは、世界中のみなさん
その後、テストを実行できます。
$ cmdtest エコーテスト
テスト1/1
1/1 テスト OK、失敗なし
stdout ファイルを別のものに変更すると、 cmdtest 違いを報告します:
$ cmdtest エコーテスト
失敗: こんにちは: 標準出力の差分:
--- echo-tests/hello.stdout 2011-09-11 19:14:47 +0100
+++ echo-tests/hello.stdout-actual 2011-09-11 19:14:49 +0100
@@ -1 +1 @@
-何か他のもの
+こんにちは、世界
テスト1/1
0/1 テスト OK、失敗なし
さらに、 エコーテスト ディレクトリには実際の出力ファイルと差分が含まれます。
期待されるファイル。 実際の出力ファイルの XNUMX つが実際に正しい場合は、次のことができます。
実際に、期待されるファイルに名前を変更します。 実はとても便利な方法なんです
予想される出力ファイルを作成します。手動で完了するまでテストを実行し、問題を修正します。
実際の出力が正しいことを確認してから、ファイルの名前を変更します。
onworks.net サービスを使用してオンラインで cmdtest を使用する