mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
51 lines
1.4 KiB
Ruby
51 lines
1.4 KiB
Ruby
|
require 'rubygems'
|
||
|
require 'gauntlet'
|
||
|
|
||
|
##
|
||
|
# GemGauntlet validates all current gems. Currently these packages are
|
||
|
# borked:
|
||
|
#
|
||
|
# Asami-0.04 : No such file or directory - bin/Asami.rb
|
||
|
# ObjectGraph-1.0.1 : No such file or directory - bin/objectgraph
|
||
|
# evil-ruby-0.1.0 : authors must be Array of Strings
|
||
|
# fresh_cookies-1.0.0 : authors must be Array of Strings
|
||
|
# plugems_deploy-0.2.0 : authors must be Array of Strings
|
||
|
# pmsrb-0.2.0 : authors must be Array of Strings
|
||
|
# pqa-1.6 : authors must be Array of Strings
|
||
|
# rant-0.5.7 : authors must be Array of Strings
|
||
|
# rvsh-0.4.5 : No such file or directory - bin/rvsh
|
||
|
# xen-0.1.2.1 : authors must be Array of Strings
|
||
|
|
||
|
class GemGauntlet < Gauntlet
|
||
|
def run(name)
|
||
|
warn name
|
||
|
|
||
|
spec = begin
|
||
|
Gem::Specification.load 'gemspec'
|
||
|
rescue SyntaxError
|
||
|
Gem::Specification.from_yaml File.read('gemspec')
|
||
|
end
|
||
|
spec.validate
|
||
|
|
||
|
self.data[name] = false
|
||
|
self.dirty = true
|
||
|
rescue SystemCallError, Gem::InvalidSpecificationException => e
|
||
|
self.data[name] = e.message
|
||
|
self.dirty = true
|
||
|
end
|
||
|
|
||
|
def should_skip?(name)
|
||
|
self.data[name] == false
|
||
|
end
|
||
|
|
||
|
def report
|
||
|
self.data.sort.reject { |k,v| !v }.each do |k,v|
|
||
|
puts "%-21s: %s" % [k, v]
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
gauntlet = GemGauntlet.new
|
||
|
gauntlet.run_the_gauntlet ARGV.shift
|
||
|
gauntlet.report
|