#nix #snapshot #assert #cli

app namaka

基于haumea的Nix快照测试

3个不稳定版本

0.2.0 2023年6月2日
0.1.1 2023年5月2日
0.1.0 2023年4月9日

#428 in 测试

每月 33 次下载

MPL-2.0LGPL-3.0-or-later

29KB
491

namaka

release version deps license ci

基于haumea的快照测试

快速开始

nix flake init -t github:nix-community/namaka
nix develop # add namaka to the environment
namaka check # run checks
namaka review # review pending snapshots

版本控制

Namaka遵循语义版本控制。破坏性变更可能在任何时间发生在主分支上,因此建议将namaka固定到特定的标签。可在发行版页面找到可用版本列表。

使用方法

Usage: namaka [OPTIONS] [DIR] <COMMAND>

Commands:
  check   Wrapper around `nix flake check` to prepare snapshots for failed tests [aliases: c]
  clean   Remove unused and pending snapshots [aliases: cl]
  review  Review pending snapshots and selectively accept or reject them [aliases: r]
  help    Print this message or the help of the given subcommand(s)

Arguments:
  [DIR]  Change to this working directory

Options:
  -c, --cmd <CMD>...  Command to run instead of `nix flake check`
  -h, --help          Print help (see more with '--help')
  -V, --version       Print version

加载

类型:{ ... } -> { }

haumea.load的包装,用于从目录加载快照测试。

如果任何测试失败,则抛出错误,否则总是返回{ }load { src = ./tests; }将从tests目录加载测试,该目录应如下组织

tests
├─ foo/
│  ├─ expr.nix
└─ bar/
   ├─ expr.nix
   └─ format.nix (optional)

expr.nix包含您想要测试的Nix表达式。

format.nix包含一个指定表达式如何序列化的Nix字符串。以下是一些可能的值

  • "json"使用builtins.toJSON序列化表达式(默认)
  • "pretty"使用lib.generators.toPretty { }序列化表达式
  • "string"按原样序列化字符串

请参阅 测试目录 或模板之一以获取示例。忽略 _snapshots 目录,因为它是由 namaka 自动生成的。

其余的可用选项在 haumea.load 中有文档说明,因为它们将完全以相同的方式工作。

配置

namaka 将尝试在工作目录中读取 namaka.toml。以下是一个示例配置文件(所有字段都是可选的)

# namaka.toml

# change the working directory
# this stacks with the command line option
#`namaka check bar` will read `bar/namaka.toml` and change the working directory to `bar/foo`
dir = "foo"

[check]
# the command to run with `namaka check`
# defaults to `nix flake check --extra-experimental-features "flakes nix-command"`
cmd = ["nix", "eval", "./dev#checks"]

[eval]
# the command to run with `namaka review` and `namaka clean`
# defaults to `nix eval ./checks --extra-experimental-features "flakes nix-command"`
cmd = ["nix", "flake", "check"]

快照测试

快照测试是一种允许您在不手动编写参考值的情况下编写测试的策略。而不是 assert foo == bar;,您只需拥有 foo,然后 namaka 将将 bar 存储在快照文件中,并要求您使用 namaka review 更新它。

要开始,您可以遵循 快速入门指南,或参阅 load 获取更详细的文档。

  • Namaka 大部分灵感来自 insta,一个 Rust 的快照测试库。
  • Namaka 基于 haumea,它也有一些测试功能。

依赖项

~23–39MB
~551K SLoC