rendered paste bodyENV['MSPEC_RUNNER'] = '1'
require 'fileutils'
require 'spec/spec_helper'
$VERBOSE=nil
def exclude_dir(file, dir="D:/work/jruby-dev/jruby/build/rubyspec/code/spec/data")
if dir[0] == ?/
m = file.match %r[.*spec/(.*)/.*_spec.rb]
m ? File.join(dir, m[1]) : dir
else
File.join(File.dirname(file), dir)
end
end
def exclude_name(file)
File.join(exclude_dir(file), File.basename(file, '.*').sub(/_spec$/, '_excludes') + '.txt')
end
def create_exclude_file(file)
File.open(exclude_name(file), "w")
end
def mk_exclude_dir(file)
dir = exclude_dir(file)
FileUtils.mkdir_p(dir) unless File.exist?(dir)
end
def read_excludes(file)
begin
File.open(file) do |f|
return f.readlines.map { |l| Regexp.new(Regexp.escape(l.chomp)) }
end
rescue Errno::ENOENT
[]
end
end
all_excludes = read_excludes("spec/data/critical.txt")
set_spec_runner(DottedFormatter)
spec_runner.formatter.print_start
["spec/ruby/1.8/core/array/append_spec.rb", "spec/ruby/1.8/core/array/array_spec.rb", "spec/ruby/1.8/core/array/assoc_spec.rb", "spec/ruby/1.8/core/array/at_spec.rb", "spec/compiler/scopes_spec.rb", "spec/compiler/simple_spec.rb", "spec/compiler/variables_spec.rb", "spec/parser/sexp_spec.rb", "spec/parser/symbol_spec.rb"].each do |file|
mk_exclude_dir(file)
spec_runner.formatter.out = STDOUT
excludes = read_excludes(exclude_name(file))
spec_runner.except(*all_excludes)
spec_runner.except(*excludes)
begin
STDERR.print(nil || "\n#{file.ljust(60)}") if false
load file unless :run == :invert && all_excludes.empty? && excludes.empty?
rescue Exception => e
puts "#{e} loading #{file}"
ensure
spec_runner.clear_filters
if :run == :create
exclude = exclude_name(file)
File.delete exclude if File.zero?(exclude)
end
end
end
spec_runner.formatter.summary
tally = spec_runner.formatter.tally
exit(tally.failures + tally.errors)