class Bummr::Bisecter

Public Instance Methods

bisect() click to toggle source
# File lib/bummr/bisecter.rb, line 5
def bisect
  puts "Bad commits found! Bisecting...".color(:red)

  system("bundle")
  system("git bisect start")
  system("git bisect bad")
  system("git bisect good #{BASE_BRANCH}")

  Open3.popen2e("git bisect run #{TEST_COMMAND}") do |_std_in, std_out_err|
    while line = std_out_err.gets
      puts line

      sha_regex = Regexp::new("(.*) is the first bad commit\n").match(line)
      unless sha_regex.nil?
        sha = sha_regex[1]
      end

      if line == "bisect run success\n"
        Bummr::Remover.instance.remove_commit(sha)
      end
    end
  end
end