(#6610) Fix Autotest proper run

Autotest can be configured through the .autotest
file. Also, Autotest already has an rspec2 discovery.
This commit is contained in:
Max Riveiro 2011-08-29 00:37:00 +04:00 committed by Adrien Thebo
parent 241cddcd37
commit 1cb9cb6b14
3 changed files with 1 additions and 92 deletions

View File

@ -1,5 +1,4 @@
require 'autotest'
require 'autotest/rspec'
Autotest.add_discovery { "rspec2" }
Autotest.add_hook :initialize do |at|
at.clear_mappings
@ -36,10 +35,3 @@ Autotest.add_hook :initialize do |at|
at.files_matching %r!spec/(unit|integration)/.*\.rb!
}
end
class Autotest::FacterRspec < Autotest::Rspec
def spec_commands
ENV["AUTOTEST"] = "true"
ENV["PATH"].split(File::PATH_SEPARATOR).collect { |dir| File.join(dir, "spec") }
end
end

View File

@ -1,9 +0,0 @@
require 'autotest'
Autotest.add_discovery do
"rspec"
end
Autotest.add_discovery do
"facter"
end

View File

@ -1,74 +0,0 @@
require 'autotest'
Autotest.add_hook :initialize do |at|
at.clear_mappings
# watch out: Ruby bug (1.8.6):
# %r(/) != /\//
at.add_mapping(%r%^spec/.*\.rb$%) { |filename, _|
filename
}
at.add_mapping(%r%^lib/(.*)\.rb$%) { |_, m|
["spec/#{m[1]}_spec.rb"]
}
at.add_mapping(%r%^spec/(spec_helper|shared/.*)\.rb$%) {
at.files_matching %r{^spec/.*_spec\.rb$}
}
end
class RspecCommandError < StandardError; end
class Autotest::Rspec < Autotest
def initialize
super
self.failed_results_re = /^\d+\)\n(?:\e\[\d*m)?(?:.*?Error in )?'([^\n]*)'(?: FAILED)?(?:\e\[\d*m)?\n(.*?)\n\n/m
self.completed_re = /\Z/ # FIX: some sort of summary line at the end?
end
def consolidate_failures(failed)
filters = Hash.new { |h,k| h[k] = [] }
failed.each do |spec, failed_trace|
if f = test_files_for(failed).find { |f| failed_trace =~ Regexp.new(f) } then
filters[f] << spec
break
end
end
return filters
end
def make_test_cmd(files_to_test)
return "#{ruby} -S #{spec_command} #{add_options_if_present} #{files_to_test.keys.flatten.join(' ')}"
end
def add_options_if_present
File.exist?("spec/spec.opts") ? "-O spec/spec.opts " : ""
end
# Finds the proper spec command to use. Precendence is set in the
# lazily-evaluated method spec_commands. Alias + Override that in
# ~/.autotest to provide a different spec command then the default
# paths provided.
def spec_command(separator=File::ALT_SEPARATOR)
unless defined? @spec_command then
@spec_command = spec_commands.find { |cmd| File.exists? cmd }
raise RspecCommandError, "No spec command could be found!" unless @spec_command
@spec_command.gsub! File::SEPARATOR, separator if separator
end
@spec_command
end
# Autotest will look for spec commands in the following
# locations, in this order:
#
# * bin/spec
# * default spec bin/loader installed in Rubygems
def spec_commands
[
File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'bin', 'spec')),
File.join(Config::CONFIG['bindir'], 'spec')
]
end
end