本文档概述了 bat 项目中使用的全面测试基础设施。该测试系统确保了代码质量、防止了回归,并验证了各种语言的语法高亮功能。
bat 的测试基础设施由几种互补的测试方法组成。
bat 作为命令行工具的功能。有关运行这些测试的构建系统和 CI/CD 管道的信息,请参阅 构建系统和 CI/CD。
bat 测试基础设施中最具特色的部分是其语法高亮回归测试系统。这确保了在代码更改和底层语法定义更新时,语法高亮保持一致。
来源: tests/syntax-tests/regression_test.sh1-16 tests/syntax-tests/compare_highlighted_versions.py1-78
tests/syntax-tests/source/ 中。tests/syntax-tests/highlighted/ 中。这种方法允许开发人员检测可能由于以下原因导致的语法高亮行为的意外更改:
来源: 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
当对语法高亮进行有意更改时(例如改进语言定义),需要更新参考文件。这通常通过以下方式完成:
create_highlighted_versions.py 脚本来生成新的高亮版本。来源: tests/syntax-tests/compare_highlighted_versions.py45-47
集成测试验证 bat 作为完整应用程序的正常工作。这些测试使用 assert_cmd 和 predicates crates 来使用各种参数运行 bat 并验证其输出。
集成测试位于标准的 Rust 测试目录中,可以使用 cargo test 运行。
来源: tests/syntax-tests/source/TOML/Cargo.toml76-79
测试基础设施包括对测试夹具的特殊处理,以确保跨不同平台的行为一致。
此配置确保:
来源: 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 存储库中的测试文件组织如下:
这种组织方式将不同类型的测试分开,并清楚地表明哪些文件是输入(源),哪些是预期输出(高亮)。
测试基础设施与项目的 CI/CD 管道集成,该管道在多个平台上运行所有测试,以确保跨平台兼容性。有关 CI/CD 设置的更多详细信息,请参阅 构建系统和 CI/CD。
bat 测试基础设施对应用程序的功能进行了全面验证,特别侧重于语法高亮的准确性。语法测试、集成测试和快照测试的组合确保了核心功能和视觉输出在代码库更改时保持一致。