Lua 测试套件

下载适合您 Lua 版本的测试套件,然后按照下列说明运行基础完整内部测试。

如果没有任何测试套件完全匹配您的 Lua 版本,请下载与您的 Lua 版本最接近的套件。套件无法跨不同版本使用。

测试套件不是产品;它只是我们内部使用的一个工具。它在这里提供是应广大用户的要求,但我们无法为它提供任何支持。您需要自行解决问题。

所有文件均在此许可证下分发。检查它们的校验和以确认软件包的完整性。

文件

文件名 日期 大小 校验和 (sha256)
lua-5.4.6-tests.tar.gz 2023-05-02 136212 63ed5f5bcfd15dfd2f72e04c2f8c10585bb8de9e558df62b335cb9e5c1a4ef34
lua-5.4.5-tests.tar.gz 2023-04-18 136198 856103e7298d354d870010b4966ce21281cbf3373abafd50231a98561bca793d
lua-5.4.4-tests.tar.gz 2022-01-13 134094 04d28355cd67a2299dfe5708b55a0ff221ccb1a3907a3113cc103ccc05ac6aad
lua-5.4.3-tests.tar.gz 2021-03-15 131911 5d29c3022897a8290f280ebe1c6853248dfa35a668e1fc02ba9c8cde4e7bf110
lua-5.4.2-tests.tar.gz 2020-11-13 128901 91bd3163fd237b2bd0bc99127fc25b4502f4526e17ac71a3df7c218e6b0798c0
lua-5.4.1-tests.tar.gz 2020-09-30 128646 1b3792d083ea36396927b223903e364a91cb017ed3cc16f14add380353751161
lua-5.4.0-tests.tar.gz 2020-06-18 126357 f611d324ff71578d760b96f3199baaa67a806acbf90568d5d37cc99b0df938b7
lua-5.3.4-tests.tar.gz 2016-12-22 103438 b80771238271c72565e5a1183292ef31bd7166414cd0d43a8eb79845fa7f599f
lua-5.3.3-tests.tar.gz 2016-05-30 102562 13154abc20976196119db531b4169ce1ce511755879d40b4192e4173291287e5
lua-5.3.2-tests.tar.gz 2015-11-25 101342 56909863a3713dee3709b3dbd0c868237e4f5c9ea1744f5bf0ba8bafa6c4ed32
lua-5.3.1-tests.tar.gz 2015-06-10 99638 57b3230dcadd04feb680959975228fd4b5a56b91366b729bea2f537d26a0734a
lua-5.3.0-tests.tar.gz 2015-01-05 96995 0c1ff46bf7d950023a189e32a6ce3fe83bc2fbce28187cc9b38ba056c733b267
lua-5.2.2-tests.tar.gz 2013-03-07 76629 07c1071c66d9cb4dc80200ed430fc21ebbbccf1f55148b87eb0b9522932e4eb6
lua-5.2.1-tests.tar.gz 2012-07-02 76093 2346d635ee392c8d8024b07beaa10b7b66a3f861c41d575753d03155751cf114
lua-5.2.0-tests.tar.gz 2011-12-12 75065 a674018a197fa65954de0c3e8f68621c183c405a338c817d4d9d932efe14b2cf
lua5.1-tests.tar.gz 2016-01-18 55127 49e4ca6561f82ea605908c5041ab5fad66ed9930fa0686675bd51b02767f18ad

基础测试

在某个位置打开测试套件。您将看到一个名为lua-x.y.z-tests的目录,其中包含几个 .lua 文件和一些子目录。

要运行一些基础测试,请转到此目录并运行以下命令

    path/lua -e"_U=true" all.lua
确保运行您希望测试的 Lua 版本。如果您不确定,请运行lua -v并检查输出。如果版本号不匹配,您将必须提供一个明确的路径。

测试将打印许多不同的消息,但任何断言都不应失败。如果测试一直进行到最后,打印一条"final OK"消息,那么一切都正常。

请注意,Lua 本质上严重依赖于底层标准 C 库。有时测试套件会失败,因为这些底层 C 库不遵循 ANSI 标准。我们对此无能为力。

完整测试

测试套件使用一些变量来控制某些测试的执行。通过定义全局变量 _U(例如,在命令行中使用选项 -e"_U=true",如上文针对 基本测试 所做),套件会跳过不可完全移植且占用过多内存的测试。此选项还会禁止显示未执行的测试的消息。基本测试应可在未经更改编译 Lua 的任何系统中无问题地运行。

完整测试套件(即,不带 _U 选项)会尝试测试语言、其库和 C API 的每个角落,甚至系统相关的角落。与 Lua 本身不同,这些测试并不以可移植性、小内存占用或易用性为目标。其主要目标是尝试让 Lua 崩溃。它们不适用于一般用途。欢迎使用它们,但请做好弄脏手的准备。

要运行完整套件,首先确保您的测试目录有子目录 libs/libs/P1/,然后转到子目录 libs/,并使用提供的 makefile(或系统中的等效文件)在此处构建 C 库。现在,您可以尝试通过在顶级测试目录中运行以下命令来运行完整测试套件

    path/lua all.lua
再次确保您运行的是正确的 Lua 版本。

如果您第一次尝试时它不起作用,请不要担心。(这就是为什么会有 _U 选项。)您可能需要针对您的系统调整一些小细节。以下是可能出错的一些事项

内部测试

对于更难的测试,测试套件使用一个特殊库 testC,该库允许访问 Lua 中的多个内部结构。此库仅在以调试模式编译 Lua 时可用,如下所述。

如果您想运行这些内部测试,请将 ltests.cltests.hltests 目录复制到包含源 Lua 文件的目录,并使用选项 -DLUA_USER_H='"ltests.h"'(或其等效项,将 LUA_USER_H 定义为字符串 "ltests.h",包括引号)重新编译 Lua。此选项将添加 testC 库并启用其他几个内部测试。重新编译后,像以前一样运行测试。同样,预计会遇到困难。

祝您好运!