| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | require 'rubygems'Gem.load_yamlrequire 'rdoc'require 'gauntlet'require 'fileutils'### Allows for testing of RDoc against every gemclass RDoc::Gauntlet < Gauntlet  def initialize # :nodoc:    super    @args = nil    @type = nil  end  ##  # Runs an RDoc generator for gem +name+  def run name    return if self.data.key? name    dir = File.expand_path "~/.gauntlet/data/#{@type}/#{name}"    FileUtils.rm_rf dir if File.exist? dir    yaml = File.read 'gemspec'    begin      spec = Gem::Specification.from_yaml yaml    rescue Psych::SyntaxError      puts "bad spec #{name}"      self.data[name] = false      return    end    args = @args.dup    args << '--op' << dir    args.push(*spec.rdoc_options)    args << spec.require_paths    args << spec.extra_rdoc_files    args = args.flatten.map { |a| a.to_s }    args.delete '--quiet'    puts "#{name} - rdoc #{args.join ' '}"    self.dirty = true    r = RDoc::RDoc.new    begin      r.document args      self.data[name] = true      puts 'passed'      FileUtils.rm_rf dir    rescue Interrupt, StandardError, RDoc::Error, SystemStackError => e      puts "failed - (#{e.class}) #{e.message}"      self.data[name] = false    end  rescue Gem::Exception    puts "bad gem #{name}"  ensure    puts  end  ##  # Runs the gauntlet with the given +type+ (rdoc or ri) and +filter+ for  # which gems to run  def run_the_gauntlet type = 'rdoc', filter = nil    @type = type || 'rdoc'    @args = type == 'rdoc' ? [] : %w[--ri]    @data_file = "#{DATADIR}/#{@type}-data.yml"    super filter  endendtype = ARGV.shiftfilter = ARGV.shiftfilter = /#{filter}/ if filterRDoc::Gauntlet.new.run_the_gauntlet type, filter
 |