class TestLauncher::Rubymine::Launcher

Public Class Methods

new(args:, shell:, request:) click to toggle source
# File lib/test_launcher/rubymine/launcher.rb, line 10
def initialize(args:, shell:, request:)
  @args = args
  @shell = shell
  @request = request
end

Public Instance Methods

launch() click to toggle source
# File lib/test_launcher/rubymine/launcher.rb, line 16
def launch
  if args.any? {|a| a.match("ruby-debug-ide")}
    shell.puts "test_launcher: hijacking and debugging"

    debug_command = (
      if args.first.match(/bash/)
        "cd #{test_case.app_root} && #{args.join(" ")}"
      else
        "cd #{test_case.app_root} && bundle exec ruby -I test #{args.join(" ")}"
      end
    )

    shell.puts debug_command
    shell.exec debug_command
  else
    shell.puts "test_launcher: hijacking and running:"
    shell.puts command

    shell.exec command
  end
end

Private Instance Methods

args() click to toggle source
# File lib/test_launcher/rubymine/launcher.rb, line 70
def args
  @args
end
command() click to toggle source
# File lib/test_launcher/rubymine/launcher.rb, line 40
def command
  if test_case.is_example?
    Frameworks::Minitest::Runner.new.single_example(test_case, exact_match: true)
  else
    Frameworks::Minitest::Runner.new.single_file(test_case)
  end
end
request() click to toggle source
# File lib/test_launcher/rubymine/launcher.rb, line 78
def request
  @request
end
shell() click to toggle source
# File lib/test_launcher/rubymine/launcher.rb, line 74
def shell
  @shell
end
test_case() click to toggle source
# File lib/test_launcher/rubymine/launcher.rb, line 48
def test_case
  @test_case ||=
    if args[-1].match("--name=")
      Frameworks::Minitest::TestCase.new(
        file: args[-2],
        example: args[-1][%r{--name=#{TEST_NAME_REGEX}}, 1],
        request: request
      )
    elsif args[-2]&.match("--name")
      Frameworks::Minitest::TestCase.new(
        file: args[-3],
        example: args[-1][TEST_NAME_REGEX, 1],
        request: request
      )
    else
      Frameworks::Minitest::TestCase.new(
        file: args[-1],
        request: request
      )
    end
end