测试 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'"
要使用详细日志记录运行这些规范,我们可以将
-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 规范文件,我们可以按如下方式使用
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] 中管理此问题。