菜单

测试基础设施

相关源文件

本文档概述了 bat 项目中使用的全面测试基础设施。该测试系统确保了代码质量、防止了回归,并验证了各种语言的语法高亮功能。

概述

bat 的测试基础设施由几种互补的测试方法组成。

  1. 语法高亮测试:回归测试,用于验证语法高亮输出是否保持一致。
  2. 集成测试:端到端测试,用于验证 bat 作为命令行工具的功能。
  3. 快照测试:用于将实际输出与预期输出文件进行比较的测试。
  4. 单元测试:用于单个组件的标准 Rust 单元测试。

有关运行这些测试的构建系统和 CI/CD 管道的信息,请参阅 构建系统和 CI/CD

来源: tests/.gitattributes1-13

语法高亮测试

bat 测试基础设施中最具特色的部分是其语法高亮回归测试系统。这确保了在代码更改和底层语法定义更新时,语法高亮保持一致。

测试结构

来源: tests/syntax-tests/regression_test.sh1-16 tests/syntax-tests/compare_highlighted_versions.py1-78

语法测试工作原理

  1. 源文件:各种语言的示例代码文件存储在 tests/syntax-tests/source/ 中。
  2. 高亮参考文件:预生成的带 ANSI 颜色代码的高亮版本存储在 tests/syntax-tests/highlighted/ 中。
  3. 测试流程:
    • 测试脚本生成所有源文件的新高亮版本。
    • 它将新生成输出与存储的参考文件进行比较。
    • 任何差异都表示语法高亮行为发生变化。

这种方法允许开发人员检测可能由于以下原因导致的语法高亮行为的意外更改:

  • 语法定义的更新
  • 高亮引擎的变化
  • 主题系统的修改

来源: tests/syntax-tests/source/SSH Config/ssh_config1-13 tests/syntax-tests/highlighted/SSH Config/ssh_config1-13

运行语法测试

回归测试脚本自动化了创建和比较高亮版本的过程。

来源: tests/syntax-tests/regression_test.sh1-16 tests/syntax-tests/compare_highlighted_versions.py10-50

更新参考文件

当对语法高亮进行有意更改时(例如改进语言定义),需要更新参考文件。这通常通过以下方式完成:

  1. 运行 create_highlighted_versions.py 脚本来生成新的高亮版本。
  2. 审查更改以确保它们符合预期并被需要。
  3. 用新生成的文件替换现有的参考文件。

来源: tests/syntax-tests/compare_highlighted_versions.py45-47

集成测试

集成测试验证 bat 作为完整应用程序的正常工作。这些测试使用 assert_cmdpredicates crates 来使用各种参数运行 bat 并验证其输出。

集成测试位于标准的 Rust 测试目录中,可以使用 cargo test 运行。

来源: tests/syntax-tests/source/TOML/Cargo.toml76-79

文件格式处理

测试基础设施包括对测试夹具的特殊处理,以确保跨不同平台的行为一致。

此配置确保:

  1. 所有测试夹具都使用一致的行尾符(LF),而与开发者的平台无关。
  2. 测试文件不会影响 GitHub 上的存储库语言统计。

来源: tests/.gitattributes1-13 diagnostics/.gitattributes1-2

测试依赖项

bat 项目使用一些与测试相关的依赖项。

依赖项目的
tempdir为测试创建临时目录。
assert_cmd简化了命令行应用程序的测试。
predicates为测试验证提供断言。

来源: tests/syntax-tests/source/TOML/Cargo.toml76-79

快照测试

快照测试用于将 bat 的实际输出与预期输出文件进行比较。这种方法特别适用于测试 bat 的格式和样式组件。

快照测试有助于确保代码库的更改不会意外地改变输出格式或外观。

来源: tests/syntax-tests/compare_highlighted_versions.py31-43

测试组织

bat 存储库中的测试文件组织如下:

这种组织方式将不同类型的测试分开,并清楚地表明哪些文件是输入(源),哪些是预期输出(高亮)。

来源: tests/.gitattributes2-5

持续集成

测试基础设施与项目的 CI/CD 管道集成,该管道在多个平台上运行所有测试,以确保跨平台兼容性。有关 CI/CD 设置的更多详细信息,请参阅 构建系统和 CI/CD

结论

bat 测试基础设施对应用程序的功能进行了全面验证,特别侧重于语法高亮的准确性。语法测试、集成测试和快照测试的组合确保了核心功能和视觉输出在代码库更改时保持一致。