Next: , Previous: , Up: 贡献   [Contents][Index]


22.3 运行测试套件

成功执行 configuremake 之后,最好运行测试套件。它可以帮助查找设置和环境的错误,或者是 Guix 自身的 bug--并且,报告测试错误是帮助改进软件的好方法。输入下面的命令以运行测试套件:

make check

测试用例可以并行运行:你可以用 GNU make 的 -j 参数来加速运行。在一台较新的机器上第一次运行可能会花几分钟,后续的运行会更快,因为为测试创建的仓库已经包含了各种缓存。

你还可以通过定义 makefile 的 TESTS 变量来运行测试的一个子集,如同以下示例:

make check TESTS="tests/store.scm tests/cpio.scm"

默认情况下,测试结果只展示到文件层级。为了查看每个独立的测试用例的详情,可以像这样定义 SCM_LOG_DRIVER_FLAGS makefile 变量:

make check TESTS="tests/base64.scm" SCM_LOG_DRIVER_FLAGS="--brief=no"

The underlying SRFI 64 custom Automake test driver used for the ’check’ test suite (located at build-aux/test-driver.scm) also allows selecting which test cases to run at a finer level, via its --select and --exclude options. Here’s an example, to run all the test cases from the tests/packages.scm test file whose names start with “transaction-upgrade-entry”:

export SCM_LOG_DRIVER_FLAGS="--select=^transaction-upgrade-entry"
make check TESTS="tests/packages.scm"

Those wishing to inspect the results of failed tests directly from the command line can add the --errors-only=yes option to the SCM_LOG_DRIVER_FLAGS makefile variable and set the VERBOSE Automake makefile variable, as in:

make check SCM_LOG_DRIVER_FLAGS="--brief=no --errors-only=yes" VERBOSE=1

The --show-duration=yes option can be used to print the duration of the individual test cases, when used in combination with --brief=no:

make check SCM_LOG_DRIVER_FLAGS="--brief=no --show-duration=yes"

See Parallel Test Harness in GNU Automake for more information about the Automake Parallel Test Harness.

遇到错误时,请给 bug-guix@gnu.org 发邮件,并附带 test-suite.log 文件。请在消息里说明使用的 Guix 的版本信息和依赖(see 需求)的版本信息。

Guix 还附带了一个可以测试整个 Guix 系统实例的全系统测试套件。它只能在已经安装 Guix 的系统上运行,使用:

make check-system

或者再次,通过定义 TESTS 选择测试的一个子集来运行:

make check-system TESTS="basic mcron"

这些系统测试在 (gnu tests …) 模块中定义。原理是,在一个虚拟机(virtual machine, VM)中,以轻量级的仪表运行待测试的操作系统。它们的计算密集程度可能很高,也可能相对较低,这取决于其依赖项是否有 substitues 可用(see substitutes)。其中一些需要大量存储空间来保存 VM 镜像。

若你遇到一个像这样的错误:

Compiling Scheme modules...
ice-9/eval.scm:142:16: In procedure compile-top-call:
error: all-system-tests: unbound variable
hint: Did you forget `(use-modules (gnu tests))'?

工作树中可能存在来自先前构建的不一致处。要解决此问题,尝试运行 make clean-go,再运行 make

再次,若遇到测试错误,请向 bug-guix@gnu.org 发送所有细节信息。


Next: 在安装之前运行 Guix, Previous: 从 Git 构建, Up: 贡献   [Contents][Index]