ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#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ÿ ‘ñ(ßw­pŽ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"aq2‘#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ÿ ‘ñ(ßw­pŽ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"aq2‘#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ÿ ‘ñ(ßw­pŽ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"aq2‘#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ÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ???????????????????????????????????? ???????????????????????????????????? U:RDoc::TopLevel[ iI"!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