主要观点:作者为 Hyprland 编写 Go 语言的 IPC 库,在测试过程中遇到问题,通过使用 NixOS 测试实现 CI 管道。
关键信息:
- 起初在系统内运行测试,因需与运行的 Hyprland 实例交互导致测试不便,需实现 CI。
- 介绍两种测试方式,一种是 mock 客户端但效果不佳,另一种是类似集成测试,NixOS 测试进入视野。
- 展示 NixOS 测试的配置代码,包括设置机器配置(如启动器、用户、软件包等)、GPU 加速配置等。
- 说明 testScript 的作用及编写方式,通过 Python 语句执行各种操作,如启动 VM、等待系统就绪等。
- 利用 Hyprland 的
exec-once
命令在启动时运行测试脚本,通过终端模拟器执行 Go 测试并创建可收集结果的文件。
重要细节: - 在
flake.nix
中配置输入输出,通过nix build
构建和运行 VM。 - 测试脚本中通过
wait_for_unit
等待系统就绪,wait_for_file
等待特定文件出现。 - 最终的测试结果可在支持 KVM 的 Linux 机器上运行,也可在 GitHub Actions 中使用
nix-installer-action
运行。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。