Skip to content

Commit

Permalink
Improve RUBYOPT's handling in tests
Browse files Browse the repository at this point in the history
When debugging the issue related to ruby/irb#919,
I noticed that debugger tests don't respect the IRB version I specified
in the Gemfile. This is because console tests force override the RUBYOPT
env, which will remove the `-rbundler/setup` injected by bundler.

Further more, if tests use `run_rdbg` with the `rubyopt` option, the
RUBYOPT will be overridden yet again.

So in this commit I did 2 improvements:

1. `run_rdbg` should append instead of override RUBYOPT
2. If tests are executed with bundler, we also run the debugger in PTY
   process with bundler by appending `-rbundler/setup` to RUBYOPT
  • Loading branch information
st0012 committed Apr 18, 2024
1 parent 0b77e82 commit ec352d2
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions test/support/console_test_case.rb
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,12 @@ def prepare_test_environment(program, test_steps, &block)
@scenario = []
test_steps.call
@scenario.freeze
inject_lib_to_load_path

ENV['RUBYOPT'] = "-I #{__dir__}/../../lib"

if ENV.key?('BUNDLE_GEMFILE')
ENV["RUBYOPT"] += " -rbundler/setup"
end

block.call

Expand Down Expand Up @@ -283,7 +288,7 @@ def run_rdbg program, options: nil, rubyopt: nil, &test_steps
prepare_test_environment(program, test_steps) do
test_info = TestInfo.new(dup_scenario, 'LOCAL', /\(rdbg\)/)
cmd = "#{RDBG_EXECUTABLE} #{options} -- #{temp_file_path}"
cmd = "RUBYOPT=#{rubyopt} #{cmd}" if rubyopt
ENV["RUBYOPT"] += " #{rubyopt}" if rubyopt
run_test_scenario cmd, test_info
end
end
Expand All @@ -301,10 +306,6 @@ def new_thread &block
end
end

def inject_lib_to_load_path
ENV['RUBYOPT'] = "-I #{__dir__}/../../lib"
end

def assert_empty_queue test_info, exception: nil
message = "Expected all commands/assertions to be executed. Still have #{test_info.queue.length} left."
if exception
Expand Down

0 comments on commit ec352d2

Please sign in to comment.