ignore

個々のファイルの健全性テストはスキップでき、特定のエラーを無視できます。

エラーを無視するタイミング

健全性テストは、コードの品質を改善し、コンテンツに関する典型的な問題を特定するように設計されています。 開発中に問題を特定する際に、問題を修正する必要があります。

Ansible の開発が続いていくと、以前のリリースにはなかった問題を検出するために健全性テストが拡張されていきます。 既存のコンテンツを更新して新しいテストにパスする時間を許可するには、ignore エントリーを追加できます。 新しいコンテンツでは、既存の健全性テストで ignore を使用しないでください。

コードが修正されて健全性テストエラーを解決する場合には、関連する ignore も削除する必要があります。 ignore が削除されないと、不要な ignore エラーが報告されます。 これは、修正後に同じエラーが繰り返し発生するため、今後のリグレッションを防ぐことを目的としています。

テストをスキップするタイミング

頻繁には起こりませんが、報告されたエラーを無視する代わりに、健全性テストをスキップする場合があります。

コンテンツの処理時に健全性テストでトレースバックが発生すると、そのエラーは無視できません。 この問題が発生した場合は、バグレポート を新規作成して修正してください。 コンテンツの問題が原因でトレースバックが発生した場合は、その問題を解決する必要があります。 コンテンツが正しい場合は、健全性テストのバグが修正されるまでテストをスキップする必要があります。

健全性テストを無視するのではなくスキップする場合は注意が必要です。 テストは完全にスキップされるため、問題の解決は自動的に検出されません。 これにより、問題が解決すると回帰検出が機能しなくなります。 このため、スキップしたエントリーを定期的に手動で確認して、そのエントリーが必要かどうかを確認することが推奨されます。

ignore ファイルの場所

ignore ファイルの場所は、テストするコンテンツの種類によって異なります。

Ansible コレクション

健全性テストは Ansible リリース間で異なるため、Ansible メジャーリリースごとに個別の ignore ファイルが必要です。

ファイル名は tests/sanity/ignore-X.Y.txt です。X.Y はコレクションをテストするために使用される Ansible リリースです。

Ansible リリースごとに個別のファイルを維持すると、コレクションが Ansible の複数のバージョンのテストに合格できるようになります。

Ansible

Ansible をテストする際、すべての ignore は test/sanity/ignore.txt ファイルに配置されます。

ansible-test が作成され、Ansible 自体の一部としてリリースされるため、単一のファイルのみが必要になります。

ignore ファイル形式

ignore ファイルでは、1 行に 1 つのエントリーが含まれます。 各行は、1 つのスペースで区切られた 2 つの列で構成されます。 コメントはエントリーの末尾に追加できます。先頭にハッシュ (#) 文字を付けて、空白をゼロ以上追加できます。 空白とコメントのみの行は使用できません。

最初の列は、エントリーが適用されるファイルパスを指定します。 ファイルパスは、テストするコンテンツのルートに対する相対パスでなければなりません。 これは Ansible ソースまたは Ansible コレクションのいずれかです。 ファイルパスには、空白文字またはハッシュ文字 (#) を含めることはできません。

2 列目は、エントリーが適用される健全性テストを指定します。 これが健全性テストの名前になります。 Python のバージョンに固有な健全性テストを使用する場合は、名前にダッシュ (-) と関連する Python バージョンが含まれます。 名前付きテストがエラーコードを使用する場合は、無視するエラーコードをコロン (:) で区切ってテストの名前に追加する必要があります。

以下の例は、Ansible コレクションのエントリーを無視します。

roles/my_role/files/my_script.sh shellcheck:SC2154 # ignore undefined variable plugins/modules/my_module.py validate-modules:E105 # ignore license check plugins/modules/my_module.py import-3.8 # needs update to support collections.abc on Python 3.8+

特定ファイルの健全性テストをスキップすることもできます。 これは、2 番目のコラムの健全性テスト名の後に !skip を追加することで行います。 これを行うと、健全性テストでエラーコードを使用しても、エラーコードは含まれません。

以下は、Ansible コレクションのエントリーをスキップする例です。

plugins/module_utils/my_util.py validate-modules!skip # waiting for bug fix in module validator plugins/lookup/my_plugin.py compile-2.6!skip # Python 2.6 is not supported on the controller

ignore ファイルエラー

ignore ファイル自体について報告できるさまざまなエラーがあります。

  • ignore ファイルを解析する構文エラー
  • 存在しないファイルパスを参照
  • 存在しない健全性テストへの参照
  • 発生しないエラーを無視
  • 省略されるファイルを無視
  • 重複エントリー