# -*- ruby -*-

require 'autotest/restart'
require 'autotest/isolate'
require 'autotest/rcov' if ENV['RCOV']

Autotest.add_hook :initialize do |at|
  at.extra_files << "../../sexp_processor/dev/lib/pt_testcase.rb"
  at.libs << ":../../sexp_processor/dev/lib"
  at.add_exception 'unit'
  at.add_exception 'coverage'
  at.add_exception 'coverage.info'
  at.add_exception '.diff'
  at.add_exception '.output'
  at.add_exception 'rubycorpus'
  at.add_exception "lib/ruby18_parser.rb"
  at.add_exception "lib/ruby19_parser.rb"
  at.add_exception "lib/ruby20_parser.rb"
  at.add_exception "lib/gauntlet_rubyparser.rb"

  dirs = Dir["corpus*"] + Dir["gauntlet*"]

  dirs.each do |f|
    at.add_exception f
  end

  at.libs << ':../../minitest/dev/lib'
  at.testlib = "minitest/autorun"

  at.add_mapping(/^lib\/.*\.y$/) do |f, _|
    re = %r%^test/test_#{File.basename(f, '.y').gsub(/(\d+)/, '')}.rb$%
    at.files_matching re
    at.files_matching %r%^test/.*#{File.basename(f, '.y').gsub '_', '_?'}.rb$%
  end

  at.add_mapping(/pt_testcase.rb/) do |f, _|
    at.files_matching(/test_.*rb$/)
  end

  %w(TestEnvironment TestStackState).each do |klass|
    at.extra_class_map[klass] = "test/test_ruby_parser_extras.rb"
  end

  %w(TestRuby18Parser TestRuby19Parser TestRuby20Parser TestParseTree).each do |klass| # HACK
    at.extra_class_map[klass] = "test/test_ruby_parser.rb"
  end
end

Autotest.add_hook :run_command do |at, _|
  system "rake parser DEBUG=1"
end

class Autotest
  def ruby
    File.expand_path "~/.multiruby/install/1.9.3-p194/bin/ruby"
  end
end if ENV['R19']

class Autotest
  def ruby
    File.expand_path "~/.multiruby/install/2.0.0-p195/bin/ruby"
  end
end if ENV['R20']
