测试 Ruby
以下所有命令均假定您在 构建 Ruby 过程中创建的 build/ 目录中运行它们。
除另有说明外,以下大多数命令应适用于 GNU make (Linux 和 macOS 上的默认选项)、BSD make 和 NMAKE。
测试套件
Ruby 代码库中有几个测试套件。
我们可以 并行运行 任何 make 脚本以加快速度。
-
这是一个在 Miniruby 上运行的小型测试套件。我们可以使用以下命令运行它:
make btest
要运行单个引导测试,我们可以指定文件名列表或在
BTESTS变量中使用--sets标志。make btest BTESTS="../bootstraptest/test_string.rb ../bootstraptest/test_class.rb" make btest BTESTS="--sets=string,class"
要运行这些测试并进行详细日志记录,我们可以将
-v添加到OPTS中。make btest OPTS="--sets=string,class -v"
如果我们要使用 Ruby (而不是 Miniruby) 运行引导测试套件,我们可以使用:
make test
要运行这些测试并进行详细日志记录,我们可以将
-v添加到OPTS中。make test OPTS=-v
(仅限 GNU make) 要运行特定文件,我们可以使用:
make ../test/ruby/test_string.rb
您可以使用
-n测试选项通过正则表达式运行特定测试。make ../test/ruby/test_string.rb TESTOPTS="-n /test_.*_to_s/"
-
这是一个在 Ruby 上运行的更全面的测试套件。我们可以使用以下命令运行它:
make test-all
我们可以使用
TESTS选项运行此套件中的特定测试文件或目录,例如:make test-all TESTS="../test/ruby/" make test-all TESTS="../test/ruby/test_string.rb"
我们可以使用
TESTS选项运行此套件中的特定测试,首先指定文件名,然后指定以--name为前缀的测试名称。例如:make test-all TESTS="../test/ruby/test_string.rb --name=TestString#test_to_s"
要运行这些测试并进行详细日志记录,我们可以将
-v添加到TESTS中。make test-all TESTS=-v
我们可以显示
TESTS选项的帮助信息。make test-all TESTS=--help
我们可以一起运行
test/、bootstraptest/和spec/(spec/部分将在后面解释) 中的所有测试:make check
-
这是在 Ruby spec 存储库 中定义的测试套件,并会定期镜像到此存储库的
spec/ruby目录中。它测试 Ruby 编程语言的行为。我们可以使用以下命令运行它:make test-spec
我们可以使用
SPECOPTS选项运行此套件中的特定测试文件或目录,例如:make test-spec SPECOPTS="../spec/ruby/core/string/" make test-spec SPECOPTS="../spec/ruby/core/string/to_s_spec.rb"
要运行特定测试,我们可以使用
--example标志来匹配测试名称。make test-spec SPECOPTS="../spec/ruby/core/string/to_s_spec.rb --example='returns self when self.class == String'"
要运行这些 spec 并进行详细日志记录,我们可以将
-v添加到SPECOPTS中。make test-spec SPECOPTS="../spec/ruby/core/string/to_s_spec.rb -Vfs"
(仅限 GNU make) 要运行 ruby-spec 文件或目录,我们可以使用:
make ../spec/ruby/core/string/to_s_spec.rb
-
bundler 测试套件在 RubyGems 存储库 中定义,并会定期镜像到此存储库的
spec/ruby目录中。我们可以使用以下命令运行它:make test-bundler
要运行特定的 bundler spec 文件,我们可以使用
BUNDLER_SPECS,如下所示:make test-bundler BUNDLER_SPECS=commands/exec_spec.rb
故障排除
在 s390x CPU 架构上运行测试套件
如果在 s390x CPU 架构上遇到与 zlib 库相关的失败测试,我们可以使用 DFLTCC=0 运行测试套件以通过。
DFLTCC=0 make check
当 zlib 库应用了 madler/zlib#410 补丁以启用 deflate 算法时,可能会出现压缩字节流不同的失败。我们在此 [ruby-core:114942][Bug #19909] 处处理此问题。