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 11, 2024
1 parent 0b77e82 commit 35c09fe
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions test/support/console_test_case.rb
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,9 @@ def debug_code(program, remote: true, verbose: false, &test_steps)
end

def run_test_scenario cmd, test_info, verbose: false
PTY.spawn({ "HOME" => pty_home_dir }, cmd) do |read, write, pid|
env = { "HOME" => pty_home_dir }

PTY.spawn(env, cmd) do |read, write, pid|
test_info.backlog = []
test_info.last_backlog = []
begin
Expand Down Expand Up @@ -225,7 +227,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 +290,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 +308,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 35c09fe

Please sign in to comment.