【CMake】テスト結果をダッシュボードサーバーに送信: ctest_submit() の詳細解説とサンプルコード
ctest_submit()
コマンドは、CMake で生成されたテスト結果をダッシュボードサーバーに送信するために使用されます。ダッシュボードサーバーは、テスト結果を分析し、プロジェクトの進捗状況を追跡するために使用されます。
構文
ctest_submit([PARTS <part>...] [FILES <file>...] [RETRY_COUNT <count>] [RETRY_DELAY <delay>] [RETURN_VALUE <result-var>] [QUIET])
オプション
- QUIET: エラーメッセージ以外のすべての非エラーメッセージをコンソールに出力しないようにします。
- RETURN_VALUE: 結果を
result-var
変数に格納します。0 は成功、ゼロ以外の場合は失敗。 - RETRY_DELAY: タイムアウトした送信後に再送信を試みるまでの待機時間(秒)。
- RETRY_COUNT: タイムアウトした送信を再試行する回数。
- FILES: 送信する特定のファイルを明示的にリストします。各ファイルは、呼び出し時に存在する必要があります。
- PARTS: 送信する結果のサブセットを指定します。有効なパート名は次のとおりです。
- Start: 送信なし
- Update:
Update.xml
ファイル内の ctest_update 結果 - Configure:
Configure.xml
ファイル内の ctest_configure 結果 - Build:
Build.xml
ファイル内の ctest_build 結果 - Test:
Test.xml
ファイル内の ctest_test 結果 - Coverage:
Coverage.xml
ファイル内の ctest_coverage 結果 - MemCheck:
DynamicAnalysis.xml
ファイル内の ctest_memcheck 結果 - Notes:
CTEST_NOTES_FILES
で指定されたファイル - ExtraFiles:
CTEST_EXTRA_SUBMIT_FILES
で指定されたファイル - Upload:
ctest_upload()
で準備されたファイルをアップロード - Submit: 送信なし
CDash Upload APIへの送信
ctest_submit(CDASH_UPLOAD <file> [CDASH_UPLOAD_TYPE <type>] [RETRY_COUNT <count>] [RETRY_DELAY <delay>] [QUIET])
オプション
- QUIET: エラーメッセージ以外のすべての非エラーメッセージをコンソールに出力しないようにします。
- RETRY_DELAY: タイムアウトしたアップロード後に再アップロードを試みるまでの待機時間(秒)。
- RETRY_COUNT: タイムアウトしたアップロードを再試行する回数。
- CDASH_UPLOAD_TYPE: CDash へのアップロードに使用されるタイプ。
- CDASH_UPLOAD: CDash にアップロードするファイル。
例
ctest_submit(PARTS Test Coverage)
ctest_submit(FILES test_results.xml coverage_report.html)
ctest_submit(CDASH_UPLOAD test_binary CDASH_UPLOAD_TYPE BINARY)
ctest_submit()
コマンドは、テストの実行後にのみ呼び出すことができます。- 送信する前に、ダッシュボードサーバーが適切に構成されていることを確認してください。
ctest_submit()
コマンドは、CMake 3.0 以降でのみ使用できます。
ctest_submit()
コマンドは、エラーが発生した場合にエラーコードを返します。エラーコードの詳細については、CMake ドキュメントを参照してください。ctest_submit()
コマンドは、非同期で実行されます。つまり、コマンドが返される前に送信が完了するとは限りません。
cmake_minimum_required(VERSION 3.0)
project(MyProject)
add_executable(MyProgram main.cpp)
add_test(MyTest MyProgram)
ctest_submit(PARTS Test Coverage)
例 2: テストバイナリを CDash にアップロードする
cmake_minimum_required(VERSION 3.0)
project(MyProject)
add_executable(MyProgram main.cpp)
add_test(MyTest MyProgram)
ctest_submit(CDASH_UPLOAD test_binary CDASH_UPLOAD_TYPE BINARY)
例 3: ログファイルをダッシュボードサーバーに送信する
cmake_minimum_required(VERSION 3.0)
project(MyProject)
add_executable(MyProgram main.cpp)
add_test(MyTest MyProgram)
set(CTEST_SUBMIT_LOGS TRUE)
ctest_submit()
説明
- 例 3
この例では、CTEST_SUBMIT_LOGS
変数をTRUE
に設定して、ctest_submit()
コマンドにログファイルをダッシュボードサーバーに送信するように指示します。 - 例 2
この例では、ctest_submit()
コマンドを使用して、test_binary
ファイルを CDash にバイナリファイルとしてアップロードします。 - 例 1
この例では、ctest_submit()
コマンドを使用して、Test.xml
およびCoverage.xml
ファイル内のテスト結果をダッシュボードサーバーに送信します。
ctest_submit()
コマンドの使用の詳細については、CMake ドキュメントを参照してください。- これらの例は、単なる例であり、プロジェクトのニーズに応じて変更する必要がある場合があります。
代替方法
- カスタムスクリプトを作成する
独自の要件に完全に一致するダッシュボードサーバーに送信機能を作成できます。 - 別のテスト結果解析ツールを使用する
多くのオープンソースのテスト結果解析ツールがあり、それぞれ独自の機能と利点があります。 - 手動でダッシュボードサーバーにファイルをアップロードする
これは、テスト結果のファイル数が少ない場合や、ダッシュボードサーバーへのアクセスに制限がある場合に役立ちます。
各代替方法の詳細
手動でダッシュボードサーバーにファイルをアップロードする
ctest
コマンドを使用して、テスト結果ファイルを生成します。- ダッシュボードサーバーにログインします。
- テスト結果ファイルをアップロードします。
別のテスト結果解析ツールを使用する
- 使用したいテスト結果解析ツールを選択します。
- ツールのドキュメントに従って、CMake プロジェクトを設定します。
- テストを実行して、ツールの結果を分析します。
カスタムスクリプトを作成する
- ダッシュボードサーバーの API ドキュメントを読みます。
- テスト結果ファイルを解析し、ダッシュボードサーバーに必要な形式に変換するスクリプトを作成します。
- スクリプトを実行して、テスト結果をダッシュボードサーバーに送信します。
どの代替方法を選択するか
最適な代替方法は、個々のニーズによって異なります。以下の要素を考慮する必要があります。
- 必要な機能
必要な機能が特定のツールで提供されていない場合は、カスタムスクリプトを作成する必要があるかもしれません。 - ダッシュボードサーバーへのアクセス
ダッシュボードサーバーへのアクセスが制限されている場合は、別のツールを使用する必要があるかもしれません。 - テスト結果の量
テスト結果のファイル数が少ない場合は、手動でアップロードするのが最善の方法かもしれません。