测试

单元测试

单元测试使用 Go 编写,可以用以下命令执行:

go test -v ./...

单元测试不执行实际的虚拟机。

集成测试

集成测试涉及虚拟机的实际执行。

集成测试使用 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 仍不支持嵌套虚拟化。