Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 39 lines (27 sloc) 0.911 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
# -*- ruby -*-

require "autotest/restart"

class Autotest
  attr_reader :test_mappings
  alias_method :old_path_to_classname, :path_to_classname

  ACRONYMS = %w(api)

  def path_to_classname path
    path.sub!(/^(lib|test)\//, "")
    path = path[0..-4]

    klass = path.split(File::SEPARATOR).
      map { |s| s.split("_").
      map { |n| ACRONYMS.include?(n.downcase) ? n.upcase : n.capitalize }.
        join }.join "::"

    klass << "Test" unless /Test$/ =~ klass
    klass
  end
end

Autotest.add_hook :initialize do |at|
  at.testlib = "minitest/autorun"

  %w(.autotest .git .gems .rvmrc tmp).each { |p| at.add_exception p }

  at.test_mappings.clear

  at.add_mapping(%r#^test/.*_test\.rb$#) { |f, _| f }
  at.add_mapping(%r#^(Isolate|Rakefile)#) { |f, _| at.known_files }

  at.add_mapping %r#^lib/.*\.rb$# do |f, _|
    at.files_matching %r|^test/#{f[4..-4]}.*_test\.rb$|
  end
end
Something went wrong with that request. Please try again.