corundum 0.0.29 → 0.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,6 +10,7 @@ module Corundum
10
10
  setting(:build_finished_path)
11
11
  setting(:gem_name)
12
12
  setting(:package_dir)
13
+ setting(:qa_rejections)
13
14
 
14
15
  def default_configuration(toolkit, build)
15
16
  super
@@ -18,6 +19,7 @@ module Corundum
18
19
  self.build_finished_path = toolkit.finished_files.build
19
20
  self.gem_name = toolkit.gemspec.full_name
20
21
  self.package_dir = build.package_dir
22
+ self.qa_rejections = toolkit.qa_rejections
21
23
  end
22
24
 
23
25
  def resolve_configuration
@@ -75,14 +77,18 @@ module Corundum
75
77
 
76
78
  task :reinstall => [:uninstall, :install]
77
79
 
78
- task :dependencies_available => :is_unpushed do
80
+ task :dependencies_available do
81
+ require 'corundum/qa-report'
79
82
  checker = Gem::SpecFetcher.new
83
+ report = QA::Report.new("Gem dependencies")
84
+ qa_rejections << report
80
85
  gemspec.runtime_dependencies.each do |dep|
81
86
  fulfilling = checker.find_matching(dep,true,false,false)
82
87
  if fulfilling.empty?
83
- fail "Dependency #{dep} is unfulfilled remotely"
88
+ report.add("missing", File::basename(gemspec.loaded_from), nil, dep)
89
+ report.fail "Dependency unfulfilled remotely"
84
90
  else
85
- puts "Remotely fulfilled: #{dep}" if verbose
91
+ report.add("fulfilled", File::basename(gemspec.loaded_from), nil, dep)
86
92
  end
87
93
  end
88
94
  end
@@ -106,7 +112,8 @@ module Corundum
106
112
  task :push => build_finished_path
107
113
  end
108
114
  task :release => in_namespace(:push)
109
- task :preflight => in_namespace(:dependencies_available, :is_unpushed)
115
+ task :preflight => in_namespace(:is_unpushed)
116
+ task :qa => in_namespace(:dependencies_available)
110
117
  end
111
118
  end
112
119
  end
@@ -0,0 +1,111 @@
1
+ module Corundum
2
+ module QA
3
+ #Adopted gratefully from Xavier Shay's Cane
4
+ class ReportFormatter
5
+ def initialize(reports)
6
+ @reports = reports
7
+ end
8
+ attr_reader :reports
9
+
10
+ def to_s
11
+ return "" if reports.empty?
12
+
13
+ widths = column_widths(reports)
14
+
15
+ reports.map do |report|
16
+ report.to_s(widths)
17
+ end.join("\n") + "\n\n" + totals + "\n\n"
18
+ end
19
+
20
+ protected
21
+
22
+ def max_width(name, &block)
23
+ reports.map(&:rejects).flatten.map do |reject|
24
+ yield(reject).to_s.length
25
+ end.max
26
+ end
27
+
28
+ def column_widths(reports)
29
+ Hash[[:file_and_line, :label, :value].map do |name|
30
+ [name, max_width(name, &name)]
31
+ end]
32
+ end
33
+
34
+ def totals
35
+ "Total QA report items: #{reports.inject(0){|sum, report| sum + report.length}}"
36
+ "Total QA failing reports: #{reports.inject(0){|sum, report| sum + (report.passed ? 0 : 1)}}"
37
+ end
38
+ end
39
+
40
+ class Rejection
41
+ def initialize(label, file, line = nil, value = nil)
42
+ @file, @line, @label, @value = file, line, label, value
43
+ end
44
+ attr_reader :file, :line, :label, :value
45
+
46
+ def file_and_line
47
+ @file_and_line ||=
48
+ begin
49
+ if line.nil?
50
+ file
51
+ else
52
+ [file, line].join(":")
53
+ end
54
+ end
55
+ end
56
+
57
+ def to_s(column_widths=nil)
58
+ column_widths ||= {}
59
+ [:file_and_line, :label, :value].map do |name|
60
+ if column_widths.has_key?(name)
61
+ self.send(name).to_s.ljust(column_widths[name])
62
+ else
63
+ self.send(name).to_s
64
+ end
65
+ end.join(' ')
66
+ end
67
+ end
68
+
69
+ class Report
70
+ def initialize(name)
71
+ @name = name
72
+ @rejects = []
73
+ @passed = true
74
+ @summary = ""
75
+ end
76
+ attr_reader :name, :rejects
77
+ attr_accessor :summary, :passed
78
+
79
+ def <<(reject)
80
+ @rejects << reject
81
+ end
82
+
83
+ def add(*args)
84
+ self << Rejection.new(*args)
85
+ end
86
+
87
+ def fail(summary)
88
+ @passed = false
89
+ @summary = summary
90
+ end
91
+
92
+ def length
93
+ @rejects.length
94
+ end
95
+ alias count length
96
+
97
+ def empty?
98
+ @rejects.empty?
99
+ end
100
+
101
+ def to_s(widths=nil)
102
+ (passed ? "Ok" : "FAIL") +
103
+ ": #{name} (#{length})\n" +
104
+ (summary.empty? ? "" : (summary + "\n")) +
105
+ rejects.map do |reject|
106
+ " " + reject.to_s(widths) + "\n"
107
+ end.join("")
108
+ end
109
+ end
110
+ end
111
+ end
@@ -117,6 +117,7 @@ module Corundum
117
117
  need_coverage = @code_files.find_all(&coverage_filter)
118
118
 
119
119
  report = QA::Report.new("Stragglers")
120
+ qa_rejections << report
120
121
  (covered_files - need_coverage).each do |file|
121
122
  report.add("Not in gemspec", file)
122
123
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: corundum
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.29
5
+ version: 0.0.30
6
6
  platform: ruby
7
7
  authors:
8
8
  - Judson Lester
@@ -321,6 +321,7 @@ files:
321
321
  - lib/corundum.rb
322
322
  - lib/corundum/configuration-store.rb
323
323
  - lib/corundum/core.rb
324
+ - lib/corundum/qa-report.rb
324
325
  - lib/corundum/browser-task.rb
325
326
  - lib/corundum/github-pages.rb
326
327
  - lib/corundum/rspec.rb
@@ -414,7 +415,7 @@ licenses:
414
415
  post_install_message:
415
416
  rdoc_options:
416
417
  - --title
417
- - corundum-0.0.29 RDoc
418
+ - corundum-0.0.30 RDoc
418
419
  require_paths:
419
420
  - lib/
420
421
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -423,7 +424,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
423
424
  - !ruby/object:Gem::Version
424
425
  segments:
425
426
  - 0
426
- hash: -574444653
427
+ hash: -251699523
427
428
  version: '0'
428
429
  none: false
429
430
  required_rubygems_version: !ruby/object:Gem::Requirement