测试 Ruby

测试套件

Ruby 代码库中有多个测试套件

我们可以并行运行任何 make 脚本,以加快速度。

  1. bootstraptest/

    这是一个在 Miniruby 上运行的小型测试套件(请参阅构建 Ruby)。我们可以使用以下命令运行它

    make btest
    

    要使用日志运行它,我们可以使用以下命令

    make btest OPTS=-v
    

    要运行单个引导测试,我们可以指定一个文件名列表或在变量 BTESTS 中使用 --sets 标志

    make btest BTESTS="bootstraptest/test_fork.rb bootstraptest/tes_gc.rb"
    make btest BTESTS="--sets=fork,gc"
    

    如果我们想在 Ruby(而非 Miniruby)上运行引导测试套件,我们可以使用

    make test
    

    要使用日志运行它,我们可以使用以下命令

    make test OPTS=-v
    

    要使用 GNU make 运行文件或目录,我们可以使用

    make test/ruby/test_foo.rb
    make test/ruby/test_foo.rb TESTOPTS="-n /test_bar/"
  2. test/

    这是一个在 Ruby 上运行的更全面的测试套件。我们可以使用以下命令运行它

    make test-all
    

    我们可以使用 TESTS 选项运行此套件中的特定测试目录,例如

    make test-all TESTS=test/rubygems

    我们还可以使用 TESTS 选项运行此套件中的特定测试文件,例如

    make test-all TESTS=test/ruby/test_array.rb

    我们可以使用 TESTS 选项运行此套件中的特定测试,首先指定文件名,然后指定测试名称,并以 --name 为前缀。例如

    make test-all TESTS="../test/ruby/test_alias.rb --name=TestAlias#test_alias_with_zsuper_method"

    要使用日志运行这些规范,我们可以使用

    make test-all TESTS=-v

    我们可以显示 TESTS 选项的帮助

    make test-all TESTS=--help

    如果我们想运行 test/bootstraptest/spec/ 测试套件(spec/ 在后面的部分中解释),我们可以运行

    make check
    
  3. spec/ruby

    这是一个存在于 Ruby 规范存储库 中的测试套件,并镜像到 Ruby 存储库中的 spec/ruby 目录中。它测试 Ruby 编程语言的行为。我们可以使用以下命令运行它

    make test-spec
    

    要运行特定目录,我们可以使用 SPECOPTS 指定目录

    make test-spec SPECOPTS=spec/ruby/core/array

    要运行特定文件,我们还可以使用 SPECOPTS 指定文件

    make test-spec SPECOPTS=spec/ruby/core/array/any_spec.rb

    要运行特定测试,我们可以使用 --example 标志与测试名称匹配

    make test-spec SPECOPTS="../spec/ruby/core/array/any_spec.rb --example='is false if the array is empty'"

    要使用日志运行这些规范,我们可以使用

    make test-spec SPECOPTS=-Vfs

    要使用 GNU make 运行 ruby-spec 文件或目录,我们可以使用

    make spec/ruby/core/foo/bar_spec.rb
    
  4. spec/bundler

    bundler 测试套件存在于 RubyGems 存储库 中,并镜像到 Ruby 存储库中的 spec/bundler 目录中。我们可以使用以下命令运行它

    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] 中管理此问题。