ÿØÿà JFIF ÿÛ „ ( %!1!%)+//.383,7(-.+
-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ ¥2" ÿÄ ÿÄ J ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ ÿÄ * !1AQa‘"2q3±ð#b¡ÿÚ ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁTÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßwpŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
?>
.........................................
.............................................................................
ÿØÿà JFIF ÿÛ „
(
%!1!%)+//.383,7(-.+
-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ ¥2" ÿÄ
ÿÄ J ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ
ÿÄ * !1AQa‘"2q3±ð#b¡ÿÚ
? ¼QxJQaÍuò¸Zö
Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁTÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßwpŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
?>
.........................................
.............................................................................
????????????????????????????????????
????????????????????????????????????
ÿØÿà JFIF ÿÛ „ ( %!1!%)+//.383,7(-.+
-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ ¥2" ÿÄ ÿÄ J ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ ÿÄ * !1AQa‘"2q3±ð#b¡ÿÚ ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁTÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßwpŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
?>
.........................................
.............................................................................
ÿØÿà JFIF ÿÛ „
(
%!1!%)+//.383,7(-.+
-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ ¥2" ÿÄ
ÿÄ J ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ
ÿÄ * !1AQa‘"2q3±ð#b¡ÿÚ
? ¼QxJQaÍuò¸Zö
Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁTÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßwpŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
?>
.........................................
.............................................................................
????????????????????????????????????
????????????????????????????????????
U:RDoc::TopLevel[ i I"!contributing/testing_ruby.md:ETcRDoc::Parser::Markdowno:RDoc::Markup::Document:@parts[S:RDoc::Markup::Heading:
leveli: textI"Testing Ruby;To:RDoc::Markup::Paragraph;[I"All the commands below assume that you're running them from the build/ directory made during {Building Ruby}[building_ruby.md].;To;;[I"#Most commands below should work with {GNU make}[https://www.gnu.org/software/make/] (the default on Linux and macOS), {BSD make}[https://man.freebsd.org/cgi/man.cgi?make(1)] and {NMAKE}[https://learn.microsoft.com/en-us/cpp/build/reference/nmake-reference], except where indicated otherwise.;TS; ;
i;I"Test suites;To;;[I"8There are several test suites in the Ruby codebase:;To;;[I"{We can run any of the make scripts {in parallel}[building_ruby.md#label-Running+make+scripts+in+parallel] to speed them up.;To:RDoc::Markup::List:
@type:NUMBER:@items[ o:RDoc::Markup::ListItem:@label0;[o;;[I"M{bootstraptest/}[https://github.com/ruby/ruby/tree/master/bootstraptest];To;;[I"uThis is a small test suite that runs on {Miniruby}[building_ruby.md#label-Miniruby+vs+Ruby]. We can run it with:;Fo:RDoc::Markup::Verbatim;[I"make btest
;F:@format:sho;;[I"To run individual bootstrap tests, we can either specify a list of filenames or use the --sets flag in the variable BTESTS:;Fo;;[I"{make btest BTESTS="../bootstraptest/test_string.rb ../bootstraptest/test_class.rb"
make btest BTESTS="--sets=string,class"
;F;;o;;[I"bTo run these tests with verbose logging, we can add -v to the OPTS:;Fo;;[I".make btest OPTS="--sets=string,class -v"
;F;;o;;[I"SIf we want to run the bootstrap test suite on Ruby (not Miniruby), we can use:;Fo;;[I"make test
;F;;o;;[I"bTo run these tests with verbose logging, we can add -v to the OPTS:;Fo;;[I"make test OPTS=-v
;F;;o;;[I"8(GNU make only) To run a specific file, we can use:;Fo;;[I"&make ../test/ruby/test_string.rb
;F;;o;;[I"UYou can use the -n test option to run a specific test with a regex:;Fo;;[I"Cmake ../test/ruby/test_string.rb TESTOPTS="-n /test_.*_to_s/"
;F;;o;;0;[o;;[I";{test/}[https://github.com/ruby/ruby/tree/master/test];To;;[I"SThis is a more comprehensive test suite that runs on Ruby. We can run it with:;Fo;;[I"make test-all
;F;;o;;[I"qWe can run a specific test file or directory in this suite using the TESTS option, for example:;Fo;;[I"[make test-all TESTS="../test/ruby/"
make test-all TESTS="../test/ruby/test_string.rb"
;F;;o;;[I"We can run a specific test in this suite using the TESTS option, specifying
first the file name, and then the test name, prefixed with --name. For example:;Fo;;[I"Smake test-all TESTS="../test/ruby/test_string.rb --name=TestString#test_to_s"
;F;;o;;[I"_To run these tests with verbose logging, we can add -v to TESTS:;Fo;;[I"make test-all TESTS=-v
;F;;o;;[I">We can display the help of the TESTS option:;Fo;;[I" make test-all TESTS=--help
;F;;o;;[I"We can run all the tests in test/, bootstraptest/ and spec/ (the spec/ is explained in a later section) all together with:;Fo;;[I"make check
;F;;o;;0;[o;;[I"D{spec/ruby}[https://github.com/ruby/ruby/tree/master/spec/ruby];To;;[I"This is a test suite defined in {the Ruby spec repository}[https://github.com/ruby/spec], and is periodically mirrored into the spec/ruby directory of this repository. It tests the behavior of the Ruby programming language. We can run this using:;Fo;;[I"make test-spec
;F;;o;;[I"tWe can run a specific test file or directory in this suite using the SPECOPTS option, for example:;Fo;;[I"ymake test-spec SPECOPTS="../spec/ruby/core/string/"
make test-spec SPECOPTS="../spec/ruby/core/string/to_s_spec.rb"
;F;;o;;[I"gTo run a specific test, we can use the --example flag to match against the test name:;Fo;;[I"xmake test-spec SPECOPTS="../spec/ruby/core/string/to_s_spec.rb --example='returns self when self.class == String'"
;F;;o;;[I"fTo run these specs with verbose logging, we can add -v to the SPECOPTS:;Fo;;[I"Jmake test-spec SPECOPTS="../spec/ruby/core/string/to_s_spec.rb -Vfs"
;F;;o;;[I"E(GNU make only) To run a ruby-spec file or directory, we can use;Fo;;[I"0make ../spec/ruby/core/string/to_s_spec.rb
;F;;o;;0;[
o;;[I"J{spec/bundler}[https://github.com/ruby/ruby/tree/master/spec/bundler];To;;[I"The bundler test suite is defined in {the RubyGems repository}[https://github.com/rubygems/rubygems/tree/master/bundler/spec], and is periodically mirrored into the spec/ruby directory of this repository. We can run this using:;Fo;;[I"make test-bundler
;F;;o;;[I"[To run a specific bundler spec file, we can use BUNDLER_SPECS as follows:;Fo;;[I";make test-bundler BUNDLER_SPECS=commands/exec_spec.rb
;F;;S; ;
i;I"Troubleshooting;TS; ;
i;I"2Running test suites on s390x CPU Architecture;To;;[I"If we see failing tests related to the zlib library on s390x CPU architecture, we can run the test suites with DFLTCC=0 to pass:;To;;[I"DFLTCC=0 make check
;T;;o;;[I",The failures can happen with the zlib library applying the patch {madler/zlib#410}[https://github.com/madler/zlib/pull/410] to enable the deflate algorithm producing a different compressed byte stream. We manage this issue at {[ruby-core:114942][Bug #19909]}[https://bugs.ruby-lang.org/issues/19909].;T:
@file@:0@omit_headings_from_table_of_contents_below0