为了乐趣和收益而编写 NixOS 测试 - kokada

主要观点:作者为 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运行。
阅读 12
0 条评论