测试
单元测试
单元测试使用 Go 编写,可以用以下命令执行:
go test -v ./...
单元测试不执行实际的虚拟机。
集成测试
集成测试涉及虚拟机的实际执行。
集成测试使用 BATS (Bash Automated Testing System) 编写。
运行以下命令以运行 BATS 测试:
git submodule update --init --recursive
make bats
BATS 测试位于 hack/bats/tests 下。
额外测试
还有额外的测试 (hack/bats/extras) 不会自动
从 make bats 中调用。
运行以下命令以运行额外的 BATS 测试:
./hack/bats/lib/bats-core/bin/bats ./hack/bats/extras
模板特定测试
特定于模板文件的测试使用 bash 编写,并部分使用 Perl 编写。
使用 hack/test-templates.sh
来执行测试,配合虚拟机模板文件,例如:
./hack/test-templates.sh ./templates/default.yaml
./hack/test-templates.sh ./templates/fedora.yaml
./hack/test-templates.sh ./hack/test-templates/test-misc.yaml
CI
.github/workflows/test.yml
在 GitHub Actions 上使用 “Tier 1” 模板执行测试。
大多数测试在 Linux 运行器上执行,因为 macOS 运行器速度慢且不稳定。
关于 macOS 特定功能(例如 vz 和 vmnet)的测试仍在 macOS 运行器上执行。
目前使用 Intel 版本的 macOS,因为 GitHub Actions 上的 ARM 版本 macOS 仍不支持嵌套虚拟化。