測試 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 修補程式以啟用縮小演算法產生不同的壓縮位元組串流時。我們在 [ruby-core:114942][Bug #19909] 管理此問題。