ignores

可以跳过单个文件的健全性测试,也可以忽略特定的错误。

何时忽略错误

健全性测试旨在提高代码质量并识别内容中的常见问题。如果在开发过程中发现问题,应更正这些问题。

随着 Ansible 的开发继续,健全性测试被扩展以检测以前版本无法检测到的问题。为了允许现有内容有时间更新以通过较新的测试,可以添加忽略项。新的内容不应针对现有的健全性测试使用忽略项。

当代码被修复以解决健全性测试错误时,任何相关的忽略项也必须被删除。如果忽略项未被删除,这将被报告为不必要的忽略错误。这样做是为了防止由于修复后的错误再次出现而导致未来出现回归。

何时跳过测试

虽然很少见,但有理由跳过健全性测试,而不是忽略它报告的错误。

如果健全性测试在处理内容时导致回溯,则该错误无法忽略。如果发生这种情况,请针对此问题打开一个新的错误报告,以便可以修复它。如果回溯是由于内容中的问题导致的,则应修复该问题。如果内容是正确的,则需要跳过测试,直到健全性测试中的错误被修复。

在跳过健全性测试而不是忽略它们时应谨慎。由于测试被完全跳过,因此不会自动检测到问题的解决。这将阻止回归检测在问题解决后工作。因此,定期手动检查跳过的条目以验证它们是否需要是一个好主意。

忽略文件位置

忽略文件的位置取决于正在测试的内容类型。

Ansible 集合

由于健全性测试在 Ansible 版本之间会发生变化,因此每个 Ansible 主要版本都需要一个单独的忽略文件。

文件名是 tests/sanity/ignore-X.Y.txt,其中 X.Y 是用于测试集合的 Ansible 版本。

为每个 Ansible 版本维护一个单独的文件,允许集合通过多个 Ansible 版本的测试。

Ansible

测试 Ansible 时,所有忽略项都放在 test/sanity/ignore.txt 文件中。

只需要一个文件,因为 ansible-test 作为 Ansible 本身的一部分进行开发和发布。

忽略文件格式

忽略文件每行包含一个条目。每行包含两个列,用一个空格隔开。注释可以添加到条目的末尾,以井号 (#) 字符开头,前面可以有零个或多个空格。不允许空白行和仅包含注释的行。

第一列指定条目适用的文件路径。文件路径必须相对于正在测试的内容的根目录。这可能是 Ansible 源代码或 Ansible 集合。文件路径不能包含空格或井号 (#) 字符。

第二列指定条目适用的健全性测试。这将是健全性测试的名称。如果健全性测试特定于某个 Python 版本,则名称将包含连字符 (-) 和相关的 Python 版本。如果命名测试使用错误代码,则必须将要忽略的错误代码附加到测试名称,并用冒号 (:) 分隔。

以下是一些 Ansible 集合的忽略条目示例

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

也可以跳过特定文件的健全性测试。这可以通过在第二列的健全性测试名称后添加 !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 control node

请参阅 所有健全性测试 的完整列表,其中详细介绍了各种测试以及如何修复已识别的问题。

忽略文件错误

忽略文件本身可能会报告各种错误

  • 解析忽略文件的语法错误

  • 引用不存在的文件路径

  • 引用不存在的健全性测试

  • 忽略没有发生的错误

  • 忽略被跳过的文件

  • 重复条目