diff options
Diffstat (limited to 'spec/ruby/command_line')
18 files changed, 246 insertions, 67 deletions
diff --git a/spec/ruby/command_line/backtrace_limit_spec.rb b/spec/ruby/command_line/backtrace_limit_spec.rb index bc40a542a0..4d57bc268b 100644 --- a/spec/ruby/command_line/backtrace_limit_spec.rb +++ b/spec/ruby/command_line/backtrace_limit_spec.rb @@ -1,46 +1,93 @@ require_relative '../spec_helper' describe "The --backtrace-limit command line option" do - it "limits top-level backtraces to a given number of entries" do - file = fixture(__FILE__ , "backtrace.rb") - out = ruby_exe(file, options: "--backtrace-limit=2", args: "top 2>&1", exit_status: 1) - out = out.gsub(__dir__, '') + ruby_version_is ""..."3.4" do + it "limits top-level backtraces to a given number of entries" do + file = fixture(__FILE__ , "backtrace.rb") + out = ruby_exe(file, options: "--backtrace-limit=2", args: "top 2>&1", exit_status: 1) + out = out.gsub(__dir__, '') - out.should == <<-MSG + out.should == <<-MSG top /fixtures/backtrace.rb:2:in `a': oops (RuntimeError) \tfrom /fixtures/backtrace.rb:6:in `b' \tfrom /fixtures/backtrace.rb:10:in `c' \t ... 2 levels... - MSG - end + MSG + end - it "affects Exception#full_message" do - file = fixture(__FILE__ , "backtrace.rb") - out = ruby_exe(file, options: "--backtrace-limit=2", args: "full_message 2>&1") - out = out.gsub(__dir__, '') + it "affects Exception#full_message" do + file = fixture(__FILE__ , "backtrace.rb") + out = ruby_exe(file, options: "--backtrace-limit=2", args: "full_message 2>&1") + out = out.gsub(__dir__, '') - out.should == <<-MSG + out.should == <<-MSG full_message /fixtures/backtrace.rb:2:in `a': oops (RuntimeError) \tfrom /fixtures/backtrace.rb:6:in `b' \tfrom /fixtures/backtrace.rb:10:in `c' \t ... 2 levels... - MSG - end + MSG + end - it "does not affect Exception#backtrace" do - file = fixture(__FILE__ , "backtrace.rb") - out = ruby_exe(file, options: "--backtrace-limit=2", args: "backtrace 2>&1") - out = out.gsub(__dir__, '') + it "does not affect Exception#backtrace" do + file = fixture(__FILE__ , "backtrace.rb") + out = ruby_exe(file, options: "--backtrace-limit=2", args: "backtrace 2>&1") + out = out.gsub(__dir__, '') - out.should == <<-MSG + out.should == <<-MSG backtrace /fixtures/backtrace.rb:2:in `a' /fixtures/backtrace.rb:6:in `b' /fixtures/backtrace.rb:10:in `c' /fixtures/backtrace.rb:14:in `d' /fixtures/backtrace.rb:29:in `<main>' - MSG + MSG + end + end + + ruby_version_is "3.4" do + it "limits top-level backtraces to a given number of entries" do + file = fixture(__FILE__ , "backtrace.rb") + out = ruby_exe(file, options: "--backtrace-limit=2", args: "top 2>&1", exit_status: 1) + out = out.gsub(__dir__, '') + + out.should == <<-MSG +top +/fixtures/backtrace.rb:2:in 'Object#a': oops (RuntimeError) +\tfrom /fixtures/backtrace.rb:6:in 'Object#b' +\tfrom /fixtures/backtrace.rb:10:in 'Object#c' +\t ... 2 levels... + MSG + end + + it "affects Exception#full_message" do + file = fixture(__FILE__ , "backtrace.rb") + out = ruby_exe(file, options: "--backtrace-limit=2", args: "full_message 2>&1") + out = out.gsub(__dir__, '') + + out.should == <<-MSG +full_message +/fixtures/backtrace.rb:2:in 'Object#a': oops (RuntimeError) +\tfrom /fixtures/backtrace.rb:6:in 'Object#b' +\tfrom /fixtures/backtrace.rb:10:in 'Object#c' +\t ... 2 levels... + MSG + end + + it "does not affect Exception#backtrace" do + file = fixture(__FILE__ , "backtrace.rb") + out = ruby_exe(file, options: "--backtrace-limit=2", args: "backtrace 2>&1") + out = out.gsub(__dir__, '') + + out.should == <<-MSG +backtrace +/fixtures/backtrace.rb:2:in 'Object#a' +/fixtures/backtrace.rb:6:in 'Object#b' +/fixtures/backtrace.rb:10:in 'Object#c' +/fixtures/backtrace.rb:14:in 'Object#d' +/fixtures/backtrace.rb:29:in '<main>' + MSG + end end end diff --git a/spec/ruby/command_line/dash_0_spec.rb b/spec/ruby/command_line/dash_0_spec.rb new file mode 100755 index 0000000000..2ce4f49b5e --- /dev/null +++ b/spec/ruby/command_line/dash_0_spec.rb @@ -0,0 +1,13 @@ +require_relative '../spec_helper' + +describe "The -0 command line option" do + it "sets $/ and $-0" do + ruby_exe("puts $/, $-0", options: "-072").should == ":\n:\n" + end + + ruby_version_is "4.0" do + it "sets $/ and $-0 as a frozen string" do + ruby_exe("puts $/.frozen?, $-0.frozen?", options: "-072").should == "true\ntrue\n" + end + end +end diff --git a/spec/ruby/command_line/dash_r_spec.rb b/spec/ruby/command_line/dash_r_spec.rb index ea5bde5adf..0de9ba2e24 100644 --- a/spec/ruby/command_line/dash_r_spec.rb +++ b/spec/ruby/command_line/dash_r_spec.rb @@ -8,15 +8,15 @@ describe "The -r command line option" do it "requires the specified file" do out = ruby_exe(@script, options: "-r #{@test_file}") - out.should include("REQUIRED") - out.should include(@test_file + ".rb") + out.should.include?("REQUIRED") + out.should.include?(@test_file + ".rb") end it "requires the file before parsing the main script" do out = ruby_exe(fixture(__FILE__, "bad_syntax.rb"), options: "-r #{@test_file}", args: "2>&1", exit_status: 1) $?.should_not.success? - out.should include("REQUIRED") - out.should include("syntax error") + out.should.include?("REQUIRED") + out.should.include?("SyntaxError") end it "does not require the file if the main script file does not exist" do diff --git a/spec/ruby/command_line/dash_upper_i_spec.rb b/spec/ruby/command_line/dash_upper_i_spec.rb index 4cafb724e3..4005a27d23 100644 --- a/spec/ruby/command_line/dash_upper_i_spec.rb +++ b/spec/ruby/command_line/dash_upper_i_spec.rb @@ -6,7 +6,7 @@ describe "The -I command line option" do end it "adds the path to the load path ($:)" do - ruby_exe(@script, options: "-I fixtures").should include("fixtures") + ruby_exe(@script, options: "-I fixtures").should.include?("fixtures") end it "adds the path at the front of $LOAD_PATH" do @@ -18,16 +18,16 @@ describe "The -I command line option" do idx.should < 2 idx.should < lines.size-1 else - lines[0].should include("fixtures") + lines[0].should.include?("fixtures") end end it "adds the path expanded from CWD to $LOAD_PATH" do - ruby_exe(@script, options: "-I fixtures").lines.should include "#{Dir.pwd}/fixtures\n" + ruby_exe(@script, options: "-I fixtures").lines.should.include? "#{Dir.pwd}/fixtures\n" end it "expands a path from CWD even if it does not exist" do - ruby_exe(@script, options: "-I not_exist/not_exist").lines.should include "#{Dir.pwd}/not_exist/not_exist\n" + ruby_exe(@script, options: "-I not_exist/not_exist").lines.should.include? "#{Dir.pwd}/not_exist/not_exist\n" end end @@ -45,7 +45,7 @@ platform_is_not :windows do end it "does not expand symlinks" do - ruby_exe(@script, options: "-I #{@symlink}").lines.should include "#{@symlink}\n" + ruby_exe(@script, options: "-I #{@symlink}").lines.should.include? "#{@symlink}\n" end end end diff --git a/spec/ruby/command_line/dash_upper_s_spec.rb b/spec/ruby/command_line/dash_upper_s_spec.rb index 17991503f1..71c6016659 100644 --- a/spec/ruby/command_line/dash_upper_s_spec.rb +++ b/spec/ruby/command_line/dash_upper_s_spec.rb @@ -2,7 +2,8 @@ require_relative '../spec_helper' describe 'The -S command line option' do before :each do - @path = [ENV['PATH'], fixture(__FILE__, "bin")].join(':') + @bin = fixture(__FILE__, "bin") + @path = [ENV['PATH'], @bin].join(File::PATH_SEPARATOR) end platform_is_not :windows do @@ -10,20 +11,57 @@ describe 'The -S command line option' do # and MRI shows warning when including world writable path in ENV['PATH']. # This is why we are using /success$/ matching in the following cases. + it "runs launcher found in RUBYPATH, but only code after the first /\#!.*ruby.*/-ish line in target file" do + result = ruby_exe(nil, options: '-S hybrid_launcher.sh', env: { 'RUBYPATH' => @bin }, args: '2>&1') + result.should =~ /success$/ + end + it "runs launcher found in PATH, but only code after the first /\#!.*ruby.*/-ish line in target file" do result = ruby_exe(nil, options: '-S hybrid_launcher.sh', env: { 'PATH' => @path }, args: '2>&1') result.should =~ /success$/ end + it "runs launcher found in RUBYPATH" do + result = ruby_exe(nil, options: '-S launcher.rb', env: { 'RUBYPATH' => @bin }, args: '2>&1') + result.should =~ /success$/ + end + it "runs launcher found in PATH" do result = ruby_exe(nil, options: '-S launcher.rb', env: { 'PATH' => @path }, args: '2>&1') result.should =~ /success$/ end + it "runs launcher found in RUBYPATH and sets the exit status to 1 if it fails" do + result = ruby_exe(nil, options: '-S dash_s_fail', env: { 'RUBYPATH' => @bin }, args: '2>&1', exit_status: 1) + result.should =~ /\bdie\b/ + $?.exitstatus.should == 1 + end + it "runs launcher found in PATH and sets the exit status to 1 if it fails" do result = ruby_exe(nil, options: '-S dash_s_fail', env: { 'PATH' => @path }, args: '2>&1', exit_status: 1) result.should =~ /\bdie\b/ $?.exitstatus.should == 1 end + + ruby_version_is "4.1" do + describe "if the script name contains separator" do + before(:each) do + @bin = File.dirname(@bin) + @path = [ENV['PATH'], @bin].join(File::PATH_SEPARATOR) + end + + it "does not search launcher in RUBYPATH" do + result = ruby_exe(nil, options: '-S bin/launcher.rb', env: { 'RUBYPATH' => @bin }, args: '2>&1', exit_status: 1) + result.should =~ /LoadError/ + $?.should_not.success? + end + + it "does not search launcher in PATH" do + result = ruby_exe(nil, options: '-S bin/launcher.rb', env: { 'PATH' => @path }, args: '2>&1', exit_status: 1) + result.should =~ /LoadError/ + $?.should_not.success? + end + end + end end end diff --git a/spec/ruby/command_line/dash_upper_u_spec.rb b/spec/ruby/command_line/dash_upper_u_spec.rb index 15854e7b73..2c210eb603 100644 --- a/spec/ruby/command_line/dash_upper_u_spec.rb +++ b/spec/ruby/command_line/dash_upper_u_spec.rb @@ -2,8 +2,8 @@ require_relative '../spec_helper' describe "ruby -U" do it "sets Encoding.default_internal to UTF-8" do - ruby_exe('print Encoding.default_internal.name', - options: '-U').should == 'UTF-8' + ruby_exe('print Encoding.default_internal.name', + options: '-U').should == 'UTF-8' end it "sets Encoding.default_internal to UTF-8 when RUBYOPT is empty or only spaces" do @@ -14,25 +14,25 @@ describe "ruby -U" do end it "does nothing different if specified multiple times" do - ruby_exe('print Encoding.default_internal.name', - options: '-U -U').should == 'UTF-8' + ruby_exe('print Encoding.default_internal.name', + options: '-U -U').should == 'UTF-8' end it "is overruled by Encoding.default_internal=" do - ruby_exe('Encoding.default_internal="ascii"; print Encoding.default_internal.name', - options: '-U').should == 'US-ASCII' + ruby_exe('Encoding.default_internal="ascii"; print Encoding.default_internal.name', + options: '-U').should == 'US-ASCII' end it "does not affect the default external encoding" do - ruby_exe('Encoding.default_external="ascii"; print Encoding.default_external.name', - options: '-U').should == 'US-ASCII' + ruby_exe('Encoding.default_external="ascii"; print Encoding.default_external.name', + options: '-U').should == 'US-ASCII' end it "does not affect the source encoding" do - ruby_exe("print __ENCODING__.name", - options: '-U -KE').should == 'EUC-JP' - ruby_exe("print __ENCODING__.name", - options: '-KE -U').should == 'EUC-JP' + ruby_exe("print __ENCODING__.name", + options: '-U -KE').should == 'EUC-JP' + ruby_exe("print __ENCODING__.name", + options: '-KE -U').should == 'EUC-JP' end # I assume IO redirection will break on Windows... diff --git a/spec/ruby/command_line/dash_v_spec.rb b/spec/ruby/command_line/dash_v_spec.rb index 7c7ca1bca6..6a4f7d3a15 100644 --- a/spec/ruby/command_line/dash_v_spec.rb +++ b/spec/ruby/command_line/dash_v_spec.rb @@ -6,9 +6,10 @@ describe "The -v command line option" do describe "when used alone" do it "prints version and ends" do - ruby_exe(nil, args: '-v').should include(RUBY_DESCRIPTION) + ruby_exe(nil, args: '-v').gsub("+PRISM ", "").should.include?(RUBY_DESCRIPTION.gsub("+PRISM ", "")) end unless (defined?(RubyVM::YJIT) && RubyVM::YJIT.enabled?) || (defined?(RubyVM::RJIT) && RubyVM::RJIT.enabled?) || + (ENV['RUBY_GC_LIBRARY'] && ENV['RUBY_GC_LIBRARY'].length > 0) || (ENV['RUBY_MN_THREADS'] == '1') end end diff --git a/spec/ruby/command_line/dash_x_spec.rb b/spec/ruby/command_line/dash_x_spec.rb index ae14b61070..38f97a5ab1 100644 --- a/spec/ruby/command_line/dash_x_spec.rb +++ b/spec/ruby/command_line/dash_x_spec.rb @@ -10,7 +10,7 @@ describe "The -x command line option" do it "fails when /\#!.*ruby.*/-ish line in target file is not found" do bad_embedded_ruby = fixture __FILE__, "bin/bad_embedded_ruby.txt" result = ruby_exe(bad_embedded_ruby, options: '-x', args: '2>&1', exit_status: 1) - result.should include "no Ruby script found in input" + result.should.include? "no Ruby script found in input" end it "behaves as -x was set when non-ruby shebang is encountered on first line" do diff --git a/spec/ruby/command_line/error_message_spec.rb b/spec/ruby/command_line/error_message_spec.rb index 02150f30ce..157cb8969c 100644 --- a/spec/ruby/command_line/error_message_spec.rb +++ b/spec/ruby/command_line/error_message_spec.rb @@ -8,4 +8,9 @@ describe "The error message caused by an exception" do out = ruby_exe("end #syntax error", args: "2> #{File::NULL}", exit_status: 1) out.chomp.should.empty? end + + it "is not modified with extra escaping of control characters and backslashes" do + out = ruby_exe('raise "\e[31mRed\e[0m error\\\\message"', args: "2>&1", exit_status: 1) + out.chomp.should.include?("\e[31mRed\e[0m error\\message") + end end diff --git a/spec/ruby/command_line/feature_spec.rb b/spec/ruby/command_line/feature_spec.rb index 4a24cc6795..0a3252b88d 100644 --- a/spec/ruby/command_line/feature_spec.rb +++ b/spec/ruby/command_line/feature_spec.rb @@ -51,7 +51,7 @@ describe "The --enable and --disable flags" do env = {'RUBYOPT' => '-w'} # Use a single variant here because it can be quite slow as it might enable jit, etc ruby_exe(e, options: "--enable-all", env: env).chomp.should == "[\"constant\", \"constant\", true, true]" - end + end unless defined?(RubyVM::YJIT) && defined?(RubyVM::ZJIT) && RubyVM::ZJIT.enabled? # You're not supposed to enable YJIT with --enable-all when ZJIT options are passed. end it "can be used with all for disable" do @@ -62,10 +62,10 @@ describe "The --enable and --disable flags" do end it "prints a warning for unknown features" do - ruby_exe("p 14", options: "--enable=ruby-spec-feature-does-not-exist 2>&1").chomp.should include('warning: unknown argument for --enable') - ruby_exe("p 14", options: "--disable=ruby-spec-feature-does-not-exist 2>&1").chomp.should include('warning: unknown argument for --disable') - ruby_exe("p 14", options: "--enable-ruby-spec-feature-does-not-exist 2>&1").chomp.should include('warning: unknown argument for --enable') - ruby_exe("p 14", options: "--disable-ruby-spec-feature-does-not-exist 2>&1").chomp.should include('warning: unknown argument for --disable') + ruby_exe("p 14", options: "--enable=ruby-spec-feature-does-not-exist 2>&1").chomp.should.include?('warning: unknown argument for --enable') + ruby_exe("p 14", options: "--disable=ruby-spec-feature-does-not-exist 2>&1").chomp.should.include?('warning: unknown argument for --disable') + ruby_exe("p 14", options: "--enable-ruby-spec-feature-does-not-exist 2>&1").chomp.should.include?('warning: unknown argument for --enable') + ruby_exe("p 14", options: "--disable-ruby-spec-feature-does-not-exist 2>&1").chomp.should.include?('warning: unknown argument for --disable') end end diff --git a/spec/ruby/command_line/fixtures/debug_info.rb b/spec/ruby/command_line/fixtures/debug_info.rb index ee607910c0..f02b041920 100644 --- a/spec/ruby/command_line/fixtures/debug_info.rb +++ b/spec/ruby/command_line/fixtures/debug_info.rb @@ -1,4 +1,3 @@ -# frozen_string_literal: true a = 'string' b = a c = b diff --git a/spec/ruby/command_line/fixtures/string_literal_frozen_comment.rb b/spec/ruby/command_line/fixtures/string_literal_frozen_comment.rb new file mode 100644 index 0000000000..fb84b546c0 --- /dev/null +++ b/spec/ruby/command_line/fixtures/string_literal_frozen_comment.rb @@ -0,0 +1,4 @@ +# frozen_string_literal: true +frozen = "test".frozen? +interned = "test".equal?("test") +puts "frozen:#{frozen} interned:#{interned}" diff --git a/spec/ruby/command_line/fixtures/string_literal_mutable_comment.rb b/spec/ruby/command_line/fixtures/string_literal_mutable_comment.rb new file mode 100644 index 0000000000..381a742001 --- /dev/null +++ b/spec/ruby/command_line/fixtures/string_literal_mutable_comment.rb @@ -0,0 +1,4 @@ +# frozen_string_literal: false +frozen = "test".frozen? +interned = "test".equal?("test") +puts "frozen:#{frozen} interned:#{interned}" diff --git a/spec/ruby/command_line/fixtures/string_literal_raw.rb b/spec/ruby/command_line/fixtures/string_literal_raw.rb new file mode 100644 index 0000000000..56b1841296 --- /dev/null +++ b/spec/ruby/command_line/fixtures/string_literal_raw.rb @@ -0,0 +1,3 @@ +frozen = "test".frozen? +interned = "test".equal?("test") +puts "frozen:#{frozen} interned:#{interned}" diff --git a/spec/ruby/command_line/frozen_strings_spec.rb b/spec/ruby/command_line/frozen_strings_spec.rb index 647b69daed..32ff7d0371 100644 --- a/spec/ruby/command_line/frozen_strings_spec.rb +++ b/spec/ruby/command_line/frozen_strings_spec.rb @@ -19,11 +19,76 @@ describe "The --enable-frozen-string-literal flag causes string literals to" do end end +describe "The --disable-frozen-string-literal flag causes string literals to" do + + it "produce a different object each time" do + ruby_exe(fixture(__FILE__, "freeze_flag_one_literal.rb"), options: "--disable-frozen-string-literal").chomp.should == "false" + end + +end + +describe "With neither --enable-frozen-string-literal nor --disable-frozen-string-literal flag set" do + before do + # disable --enable-frozen-string-literal and --disable-frozen-string-literal passed in $RUBYOPT + @rubyopt = ENV["RUBYOPT"] + ENV["RUBYOPT"] = "" + end + + after do + ENV["RUBYOPT"] = @rubyopt + end + + it "produce a different object each time" do + ruby_exe(fixture(__FILE__, "freeze_flag_one_literal.rb")).chomp.should == "false" + end + + context "if file has no frozen_string_literal comment" do + it "produce different mutable strings each time" do + ruby_exe(fixture(__FILE__, "string_literal_raw.rb")).chomp.should == "frozen:false interned:false" + end + + guard -> { ruby_version_is "3.4" and !"test".frozen? } do + it "complain about modification of produced mutable strings" do + -> { eval(<<~RUBY) }.should complain(/warning: literal string will be frozen in the future \(run with --debug-frozen-string-literal for more information\)/) + "test" << "!" + RUBY + end + + it "does not complain about modification if Warning[:deprecated] is false" do + deprecated = Warning[:deprecated] + Warning[:deprecated] = false + -> { eval(<<~RUBY) }.should_not complain + "test" << "!" + RUBY + ensure + Warning[:deprecated] = deprecated + end + end + end + + it "if file has frozen_string_literal:true comment produce same frozen strings each time" do + ruby_exe(fixture(__FILE__, "string_literal_frozen_comment.rb")).chomp.should == "frozen:true interned:true" + end + + it "if file has frozen_string_literal:false comment produce different mutable strings each time" do + ruby_exe(fixture(__FILE__, "string_literal_mutable_comment.rb")).chomp.should == "frozen:false interned:false" + end +end + describe "The --debug flag produces" do it "debugging info on attempted frozen string modification" do - error_str = ruby_exe(fixture(__FILE__, 'debug_info.rb'), options: '--debug', args: "2>&1") - error_str.should include("can't modify frozen String") - error_str.should include("created at") - error_str.should include("command_line/fixtures/debug_info.rb:2") + error_str = ruby_exe(fixture(__FILE__, 'debug_info.rb'), options: '--enable-frozen-string-literal --debug', args: "2>&1") + error_str.should.include?("can't modify frozen String") + error_str.should.include?("created at") + error_str.should.include?("command_line/fixtures/debug_info.rb:1") + end + + guard -> { ruby_version_is "3.4" and !"test".frozen? } do + it "debugging info on mutating chilled string" do + error_str = ruby_exe(fixture(__FILE__, 'debug_info.rb'), options: '-w --debug', args: "2>&1") + error_str.should.include?("literal string will be frozen in the future") + error_str.should.include?("the string was created here") + error_str.should.include?("command_line/fixtures/debug_info.rb:1") + end end end diff --git a/spec/ruby/command_line/rubylib_spec.rb b/spec/ruby/command_line/rubylib_spec.rb index b45919b997..1bedd146e3 100644 --- a/spec/ruby/command_line/rubylib_spec.rb +++ b/spec/ruby/command_line/rubylib_spec.rb @@ -14,15 +14,15 @@ describe "The RUBYLIB environment variable" do dir = tmp("rubylib/incl") ENV["RUBYLIB"] = @pre + dir paths = ruby_exe("puts $LOAD_PATH").lines.map(&:chomp) - paths.should include(dir) + paths.should.include?(dir) end it "adds a File::PATH_SEPARATOR-separated list of directories to $LOAD_PATH" do dir1, dir2 = tmp("rubylib/incl1"), tmp("rubylib/incl2") ENV["RUBYLIB"] = @pre + "#{dir1}#{File::PATH_SEPARATOR}#{dir2}" paths = ruby_exe("puts $LOAD_PATH").lines.map(&:chomp) - paths.should include(dir1) - paths.should include(dir2) + paths.should.include?(dir1) + paths.should.include?(dir2) paths.index(dir1).should < paths.index(dir2) end @@ -46,8 +46,8 @@ describe "The RUBYLIB environment variable" do rubylib_dir = tmp("rubylib_include") ENV["RUBYLIB"] = @pre + rubylib_dir paths = ruby_exe("puts $LOAD_PATH", options: "-I #{dash_i_dir}").lines.map(&:chomp) - paths.should include(dash_i_dir) - paths.should include(rubylib_dir) + paths.should.include?(dash_i_dir) + paths.should.include?(rubylib_dir) paths.index(dash_i_dir).should < paths.index(rubylib_dir) end @@ -56,14 +56,14 @@ describe "The RUBYLIB environment variable" do rubylib_dir = tmp("rubylib_include") ENV["RUBYLIB"] = @pre + rubylib_dir paths = ruby_exe("puts $LOAD_PATH", env: { "RUBYOPT" => "-I#{rubyopt_dir}" }).lines.map(&:chomp) - paths.should include(rubyopt_dir) - paths.should include(rubylib_dir) + paths.should.include?(rubyopt_dir) + paths.should.include?(rubylib_dir) paths.index(rubyopt_dir).should < paths.index(rubylib_dir) end it "keeps spaces in the value" do ENV["RUBYLIB"] = @pre + " rubylib/incl " out = ruby_exe("puts $LOAD_PATH") - out.should include(" rubylib/incl ") + out.should.include?(" rubylib/incl ") end end diff --git a/spec/ruby/command_line/rubyopt_spec.rb b/spec/ruby/command_line/rubyopt_spec.rb index 734db8d519..eb297cd6fe 100644 --- a/spec/ruby/command_line/rubyopt_spec.rb +++ b/spec/ruby/command_line/rubyopt_spec.rb @@ -22,15 +22,15 @@ describe "Processing RUBYOPT" do result.should =~ /value of \$DEBUG is true/ end - guard -> { not CROSS_COMPILING } do + guard -> { RbConfig::CONFIG["CROSS_COMPILING"] != "yes" } do it "prints the version number for '-v'" do ENV["RUBYOPT"] = '-v' - ruby_exe("")[/\A.*/].should == RUBY_DESCRIPTION + ruby_exe("")[/\A.*/].gsub(/\s\+(YJIT( \w+)?|ZJIT( \w+)?|PRISM|GC(\[\w+\])?)(?=\s)/, "").should == RUBY_DESCRIPTION.gsub(/\s\+(YJIT( \w+)?|ZJIT( \w+)?|PRISM|GC(\[\w+\])?)(?=\s)/, "") end it "ignores whitespace around the option" do ENV["RUBYOPT"] = ' -v ' - ruby_exe("")[/\A.*/].should == RUBY_DESCRIPTION + ruby_exe("")[/\A.*/].gsub(/\s\+(YJIT( \w+)?|ZJIT( \w+)?|PRISM|GC(\[\w+\])?)(?=\s)/, "").should == RUBY_DESCRIPTION.gsub(/\s\+(YJIT( \w+)?|ZJIT( \w+)?|PRISM|GC(\[\w+\])?)(?=\s)/, "") end end diff --git a/spec/ruby/command_line/syntax_error_spec.rb b/spec/ruby/command_line/syntax_error_spec.rb index 444ea9635c..88864c048e 100644 --- a/spec/ruby/command_line/syntax_error_spec.rb +++ b/spec/ruby/command_line/syntax_error_spec.rb @@ -3,11 +3,11 @@ require_relative '../spec_helper' describe "The interpreter" do it "prints an error when given a file with invalid syntax" do out = ruby_exe(fixture(__FILE__, "bad_syntax.rb"), args: "2>&1", exit_status: 1) - out.should include "syntax error" + out.should.include?("SyntaxError") end it "prints an error when given code via -e with invalid syntax" do out = ruby_exe(nil, args: "-e 'a{' 2>&1", exit_status: 1) - out.should include "syntax error" + out.should.include?("SyntaxError") end end |
