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
查看完整的 健全性测试列表,其中详细介绍了各种测试以及如何修复识别出的问题。
忽略文件错误
忽略文件本身可能会报告各种错误
解析忽略文件的语法错误
引用不存在的文件路径
引用不存在的健全性测试
忽略没有发生的错误
忽略被跳过的文件
重复条目