corundum 0.3.9 → 0.4.0
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.
- checksums.yaml +8 -8
- data/lib/corundum/core.rb +35 -51
- data/lib/corundum/documentation-task.rb +10 -30
- data/lib/corundum/gem_building.rb +6 -7
- data/lib/corundum/gemcutter.rb +10 -12
- data/lib/corundum/questionable-content.rb +9 -0
- data/lib/corundum/rspec-task.rb +34 -15
- data/lib/corundum/rspec.rb +25 -22
- data/lib/corundum/simplecov.rb +43 -22
- data/lib/corundum/tasklibs.rb +0 -3
- data/lib/corundum/version_control.rb +1 -1
- data/lib/corundum/version_control/git.rb +2 -2
- metadata +18 -86
- data/lib/corundum/default_configuration/templates/doc_assembly/index.html.erb +0 -40
- data/lib/corundum/default_configuration/templates/doc_assembly/stylesheet.scss +0 -326
- data/lib/corundum/default_configuration/templates/doc_assembly/theme/images/checker.png +0 -0
- data/lib/corundum/default_configuration/templates/doc_assembly/theme/javascripts/scale.fix.js +0 -17
- data/lib/corundum/default_configuration/templates/doc_assembly/theme/sass/styles.scss +0 -325
- data/lib/corundum/default_configuration/templates/doc_assembly/theme/stylesheets/pygment_trac.css +0 -60
- data/lib/corundum/default_configuration/templates/doc_assembly/theme/stylesheets/styles.css +0 -363
- data/lib/corundum/documentation.rb +0 -2
- data/lib/corundum/documentation/assembly.rb +0 -115
- data/lib/corundum/documentation/yardoc.rb +0 -70
- data/lib/corundum/email.rb +0 -82
- data/lib/corundum/github-pages.rb +0 -153
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NTc0ZDU1MjUxZGYyMGE5YThlYzBkMTRhMmIwNzBjMDA1NjViMmJhMg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZDE0NzFhN2ZlODViMjNhZjc1NWEwNzdlNmU2MmRjMWFkYTgxMzVjMA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NDkwYmUwNGMzYmQxMzQxMTgzMWI2NWY5NTQ3NDgwZGVjMjMxMGQ1MzNkNTll
|
10
|
+
N2JlYzg1ZDk2YzY3M2ViN2VkNzA2YmQ3ZTY5ZDQyNzI5NWMxOTM0YWM4ZTlj
|
11
|
+
YWM0YjA4ZGJjYmEwNzEzY2ZjNzMxMWI4ZDlhNjNiYjYzYWRlMjg=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NmNlMTE0MDY2ZTFlNjJlZmI5OWU3YWFmOGJjODU4YWEyZjc0ODYxMjY1Mjk5
|
14
|
+
Mjk5MmFhMDQyMzkzMWU2MjkwM2I0MjY0MTJiMzlkYjA3MjY5OTI2ZDBiMDFl
|
15
|
+
YmFiNDExMDk1ZWMwNDdhYzc1ZGY1MGNkYjdlY2MyNDk4NmVhNmE=
|
data/lib/corundum/core.rb
CHANGED
@@ -16,18 +16,19 @@ module Corundum
|
|
16
16
|
# [release] push the gem out to the world
|
17
17
|
# [press] send out notifications that the gem has been published
|
18
18
|
class Core < Mattock::TaskLib
|
19
|
+
dir(:package, "pkg",
|
20
|
+
path(:build_file))
|
21
|
+
|
22
|
+
dir(:corundum_dir, "corundum",
|
23
|
+
dir(:finished_dir, "finished",
|
24
|
+
path(:qa_file), path(:release_file)))
|
25
|
+
|
19
26
|
settings(
|
20
27
|
:gemspec => nil,
|
21
28
|
:gemspec_path => nil,
|
22
|
-
:corundum_dir => "corundum",
|
23
|
-
:finished_dir => nil,
|
24
|
-
:package_dir => "pkg",
|
25
|
-
:doc_dir => "rubydoc",
|
26
29
|
:qa_rejections => nil,
|
27
30
|
:browser => Corundum.user_preferences["browser"],
|
28
|
-
:finished_files => nested.nil_fields(:build, :qa, :package, :release, :press),
|
29
31
|
:files => nested.nil_fields(:code, :test, :docs),
|
30
|
-
:rubyforge => nested.nil_fields(:group_id, :package_id, :release_name, :home_page, :project_page),
|
31
32
|
:email => nested(
|
32
33
|
:servers => [ nested({ :server => "ruby-lang.org", :helo => "gmail.com" }) ],
|
33
34
|
:announce_to_email => "ruby-talk@ruby-lang.org"
|
@@ -40,40 +41,29 @@ module Corundum
|
|
40
41
|
:file_patterns => nested( :code => [%r{^lib/}], :test => [%r{^spec/}, %r{^test/}], :docs => [%r{^doc/}])
|
41
42
|
)
|
42
43
|
|
43
|
-
def load_gemspec
|
44
|
-
@gemspec_path ||= guess_gemspec
|
45
|
-
@gemspec ||= Gem::Specification::load(gemspec_path)
|
46
|
-
return gemspec
|
47
|
-
end
|
48
|
-
|
49
44
|
def resolve_configuration
|
50
45
|
super
|
51
|
-
load_gemspec
|
52
46
|
|
53
|
-
self.
|
54
|
-
|
47
|
+
self.gemspec_path ||= guess_gemspec
|
48
|
+
self.gemspec ||= Gem::Specification::load(gemspec_path)
|
49
|
+
|
50
|
+
self.qa_rejections ||= []
|
55
51
|
|
56
|
-
|
57
|
-
|
58
|
-
|
52
|
+
build_file.relative_path ||= gemspec.full_name + ".gem"
|
53
|
+
qa_file.relative_path ||= "qa-" + gemspec.full_name.to_s
|
54
|
+
release_file.relative_path ||= "release-" + gemspec.full_name.to_s
|
59
55
|
|
60
|
-
|
56
|
+
resolve_paths
|
61
57
|
|
62
|
-
|
63
|
-
|
64
|
-
|
58
|
+
self.files.code ||= file_patterns.code.map{ |pattern| gemspec.files.grep(pattern) }.flatten
|
59
|
+
self.files.test ||= file_patterns.test.map{ |pattern| gemspec.files.grep(pattern) }.flatten
|
60
|
+
self.files.docs ||= file_patterns.docs.map{ |pattern| gemspec.files.grep(pattern) }.flatten
|
65
61
|
|
66
|
-
|
67
|
-
|
62
|
+
self.file_lists.project << gemspec_path
|
63
|
+
self.file_lists.all ||=
|
68
64
|
file_lists.code +
|
69
65
|
file_lists.test +
|
70
66
|
file_lists.docs
|
71
|
-
|
72
|
-
@rubyforge.group_id ||= gemspec.rubyforge_project
|
73
|
-
@rubyforge.package_id ||= gemspec.name.downcase
|
74
|
-
@rubyforge.release_name ||= gemspec.full_name
|
75
|
-
@rubyforge.home_page ||= gemspec.homepage
|
76
|
-
@rubyforge.project_page ||= "http://rubyforge.org/project/#{gemspec.rubyforge_project}/"
|
77
67
|
end
|
78
68
|
|
79
69
|
def guess_gemspec
|
@@ -90,17 +80,17 @@ module Corundum
|
|
90
80
|
|
91
81
|
def define
|
92
82
|
in_namespace do
|
93
|
-
directory finished_dir
|
83
|
+
directory finished_dir.abspath
|
94
84
|
|
95
85
|
desc "Run preflight checks"
|
96
86
|
task :preflight
|
97
87
|
|
98
|
-
task :run_quality_assurance => [:preflight,
|
88
|
+
task :run_quality_assurance => [ :preflight, qa_file.abspath ]
|
99
89
|
|
100
90
|
task :run_continuous_integration
|
101
91
|
|
102
92
|
desc "Run quality assurance tasks"
|
103
|
-
task :qa => :run_quality_assurance do
|
93
|
+
qa_task = task :qa => :run_quality_assurance do
|
104
94
|
require 'corundum/qa-report'
|
105
95
|
puts QA::ReportFormatter.new(qa_rejections).to_s
|
106
96
|
unless qa_rejections.all?(&:passed)
|
@@ -119,32 +109,26 @@ module Corundum
|
|
119
109
|
end
|
120
110
|
end
|
121
111
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
Rake::Task[:qa].invoke
|
112
|
+
file qa_file.abspath =>
|
113
|
+
[finished_dir.abspath] + file_lists.project + file_lists.code + file_lists.test do |task|
|
114
|
+
qa_task.invoke
|
126
115
|
touch task.name
|
127
116
|
end
|
128
117
|
|
129
118
|
desc "Build the package"
|
130
|
-
task :build => [
|
131
|
-
file
|
132
|
-
[finished_dir] + file_lists.code + file_lists.project do |task|
|
133
|
-
|
119
|
+
build_task = task :build => [qa_file.abspath, :preflight, build_file.abspath]
|
120
|
+
file build_file.abspath.tap{|value| puts "#{__FILE__}:#{__LINE__} => #{value.inspect}"} =>
|
121
|
+
[finished_dir.abspath] + file_lists.code + file_lists.project do |task|
|
122
|
+
puts "\n#{__FILE__}:#{__LINE__} => #{task.name.inspect}"
|
123
|
+
build_task.invoke
|
124
|
+
puts "\n#{__FILE__}:#{__LINE__} => #{task.name.inspect}"
|
134
125
|
touch task.name
|
135
126
|
end
|
136
127
|
|
137
128
|
desc "Push package out to the world"
|
138
|
-
task
|
139
|
-
file
|
140
|
-
|
141
|
-
touch task.name
|
142
|
-
end
|
143
|
-
|
144
|
-
desc "Announce publication"
|
145
|
-
task :press => [finished_files.release, finished_files.press]
|
146
|
-
file finished_files.press => [finished_dir] do |task|
|
147
|
-
Rake::Task[:press].invoke
|
129
|
+
release_task = task(:release => [ build_file.abspath, :preflight, release_file.abspath ])
|
130
|
+
file release_file.abspath => [ build_file, finished_dir] do |task|
|
131
|
+
release_task.invoke
|
148
132
|
touch task.name
|
149
133
|
end
|
150
134
|
end
|
@@ -6,24 +6,15 @@ module Corundum
|
|
6
6
|
setting :browser
|
7
7
|
setting :gemspec
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
setting :target_dir
|
14
|
-
setting :sub_dir
|
15
|
-
|
16
|
-
setting :entry_file, "index.html"
|
17
|
-
|
18
|
-
#The path from the project root to the entry file
|
19
|
-
#Resolves if unset to target_dir + entry_file
|
20
|
-
setting :entry_path
|
9
|
+
dir(:corundum_dir,
|
10
|
+
dir(:docs_root, "docs",
|
11
|
+
dir(:target_dir,
|
12
|
+
path(:entry_path, "index.html"))))
|
21
13
|
|
22
14
|
#The URL path from this documentation root
|
23
15
|
#Resolves if unset to sub_dir + entry_file
|
24
16
|
setting :entry_link
|
25
17
|
|
26
|
-
|
27
18
|
def self.title(name)
|
28
19
|
setting :title, name
|
29
20
|
end
|
@@ -35,31 +26,20 @@ module Corundum
|
|
35
26
|
|
36
27
|
def resolve_configuration
|
37
28
|
super
|
38
|
-
if field_unset?(:docs_root)
|
39
|
-
self.docs_root = File::join(corundum_dir, "docs")
|
40
|
-
end
|
41
|
-
|
42
|
-
if field_unset?(:target_dir)
|
43
|
-
self.target_dir = File::join(docs_root, sub_dir)
|
44
|
-
else
|
45
|
-
self.sub_dir = target_dir.sub(/^#{docs_root}\//,"")
|
46
|
-
end
|
47
|
-
|
48
|
-
if field_unset?(:entry_path)
|
49
|
-
self.entry_path = File::join(target_dir, entry_file)
|
50
|
-
end
|
51
29
|
|
52
30
|
if field_unset?(:entry_link)
|
53
|
-
self.entry_link = File::join(
|
31
|
+
self.entry_link = File::join(target_dir.relpath, entry_path.relpath)
|
54
32
|
end
|
33
|
+
|
34
|
+
resolve_paths
|
55
35
|
end
|
56
36
|
|
57
|
-
def entry_point
|
58
|
-
|
37
|
+
def entry_point
|
38
|
+
entry_path.abspath
|
59
39
|
end
|
60
40
|
|
61
41
|
def define
|
62
|
-
directory target_dir
|
42
|
+
directory target_dir.abspath
|
63
43
|
|
64
44
|
in_namespace do
|
65
45
|
desc "Open up a browser to view your documentation"
|
@@ -3,27 +3,26 @@ require 'mattock/tasklib'
|
|
3
3
|
module Corundum
|
4
4
|
class GemBuilding < Mattock::TaskLib
|
5
5
|
setting(:gemspec)
|
6
|
-
setting(:
|
7
|
-
setting(:
|
6
|
+
setting(:package)
|
7
|
+
setting(:qa_file)
|
8
8
|
|
9
9
|
def default_configuration(toolkit)
|
10
10
|
super
|
11
|
-
|
12
|
-
self.qa_finished_file = toolkit.finished_files.qa
|
11
|
+
toolkit.copy_settings_to(self)
|
13
12
|
end
|
14
13
|
|
15
14
|
def define
|
16
15
|
require 'rubygems/package_task'
|
17
16
|
|
18
17
|
in_namespace do
|
19
|
-
|
18
|
+
Gem::PackageTask.new(gemspec) do |t|
|
20
19
|
t.need_tar_gz = true
|
21
20
|
t.need_tar_bz2 = true
|
22
|
-
t.package_dir =
|
21
|
+
t.package_dir = package.abspath
|
23
22
|
end
|
24
23
|
|
25
24
|
task(:package).prerequisites.each do |package_type|
|
26
|
-
file package_type =>
|
25
|
+
file package_type => qa_file
|
27
26
|
end
|
28
27
|
end
|
29
28
|
|
data/lib/corundum/gemcutter.rb
CHANGED
@@ -8,24 +8,22 @@ module Corundum
|
|
8
8
|
setting(:gem_path, nil)
|
9
9
|
setting(:build)
|
10
10
|
setting(:gemspec)
|
11
|
-
setting(:build_finished_path)
|
12
|
-
setting(:gem_name)
|
13
|
-
setting(:package_dir)
|
14
11
|
setting(:qa_rejections)
|
15
12
|
|
13
|
+
dir(:package,
|
14
|
+
path(:gem_path),
|
15
|
+
path(:build_file))
|
16
|
+
|
16
17
|
def default_configuration(toolkit, build)
|
17
18
|
super
|
19
|
+
toolkit.copy_settings_to(self)
|
18
20
|
self.build = build
|
19
|
-
self.gemspec = toolkit.gemspec
|
20
|
-
self.build_finished_path = toolkit.finished_files.build
|
21
|
-
self.gem_name = toolkit.gemspec.full_name
|
22
|
-
self.package_dir = build.package_dir
|
23
|
-
self.qa_rejections = toolkit.qa_rejections
|
24
21
|
end
|
25
22
|
|
26
23
|
def resolve_configuration
|
27
24
|
super
|
28
|
-
|
25
|
+
gem_path.relative_path = gemspec.file_name
|
26
|
+
resolve_paths
|
29
27
|
end
|
30
28
|
|
31
29
|
module CommandTweaks
|
@@ -90,7 +88,7 @@ module Corundum
|
|
90
88
|
def define
|
91
89
|
in_namespace do
|
92
90
|
task :uninstall do |t|
|
93
|
-
when_writing("Uninstalling #{
|
91
|
+
when_writing("Uninstalling #{gemfile.full_name}") do
|
94
92
|
require "rubygems/commands/uninstall_command"
|
95
93
|
uninstall = get_command Gem::Commands::UninstallCommand
|
96
94
|
uninstall.options[:args] = [gem_path]
|
@@ -157,10 +155,10 @@ module Corundum
|
|
157
155
|
task :push => [:dependencies_available, :is_unpushed] do
|
158
156
|
require "rubygems/commands/push_command"
|
159
157
|
push = get_command(Gem::Commands::PushCommand)
|
160
|
-
push.options[:args] = [gem_path]
|
158
|
+
push.options[:args] = [gem_path.abspath]
|
161
159
|
push.execute
|
162
160
|
end
|
163
|
-
task :push =>
|
161
|
+
task :push => build_file.abspath.tap{|value| puts "#{__FILE__}:#{__LINE__} => #{value.inspect}"}
|
164
162
|
end
|
165
163
|
task :release => in_namespace(:push)
|
166
164
|
task :preflight => in_namespace(:is_unpushed)
|
@@ -13,6 +13,7 @@ module Corundum
|
|
13
13
|
"gender" => ["bitch", "cocksucker", "cunt", "dyke", "faggot", "tranny"], #ok
|
14
14
|
"issues" => ["XXX", "TODO"], #ok
|
15
15
|
}
|
16
|
+
CANONICAL_WORD_SETS = WORD_SETS.keys
|
16
17
|
[
|
17
18
|
["debug", "debugging"],
|
18
19
|
["profanity", "swearing"],
|
@@ -24,6 +25,14 @@ module Corundum
|
|
24
25
|
WORD_SETS[other] = WORD_SETS[name]
|
25
26
|
end
|
26
27
|
|
28
|
+
def self.all_sets(core)
|
29
|
+
CANONICAL_WORD_SETS.each do |word_set|
|
30
|
+
self.new(core) do |qc|
|
31
|
+
qc.type = word_set
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
27
36
|
default_namespace :content
|
28
37
|
setting :type, :debugging
|
29
38
|
setting :words
|
data/lib/corundum/rspec-task.rb
CHANGED
@@ -9,9 +9,7 @@ module Corundum
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
required_fields :pattern, :ruby_opts,
|
12
|
+
runtime_required_fields :runner_command, :pattern, :ruby_opts,
|
15
13
|
:warning, :rspec_path, :rspec_opts, :failure_message, :files_to_run,
|
16
14
|
:file_dependencies
|
17
15
|
|
@@ -20,20 +18,28 @@ module Corundum
|
|
20
18
|
rspec.copy_settings_to(self)
|
21
19
|
end
|
22
20
|
|
23
|
-
def
|
21
|
+
def resolve_runtime_configuration
|
24
22
|
self.rspec_path = %x"which #{rspec_path}".chomp
|
25
23
|
|
26
24
|
ruby_command.options << ruby_opts if ruby_opts
|
27
25
|
ruby_command.options << "-w" if warning
|
28
26
|
|
29
27
|
self.runner_command = cmd(rspec_path) do |cmd|
|
30
|
-
cmd.options <<
|
28
|
+
cmd.options << all_rspec_options
|
31
29
|
cmd.options << files_to_run
|
32
30
|
end
|
33
31
|
|
34
32
|
self.command = ruby_command - runner_command
|
35
33
|
|
36
34
|
super
|
35
|
+
end
|
36
|
+
|
37
|
+
def all_rspec_options
|
38
|
+
rspec_opts
|
39
|
+
end
|
40
|
+
|
41
|
+
def resolve_configuration
|
42
|
+
super
|
37
43
|
|
38
44
|
if task_args.last.is_a? Hash
|
39
45
|
key = task_args.last.keys.first
|
@@ -46,16 +52,19 @@ module Corundum
|
|
46
52
|
end
|
47
53
|
|
48
54
|
class RSpecReportTask < RSpecTask
|
49
|
-
|
50
|
-
|
51
|
-
setting
|
55
|
+
dir(:target_dir, path(:doc_path, "index.html"))
|
56
|
+
|
57
|
+
setting(:formats, {})
|
52
58
|
|
53
59
|
def timestamp
|
54
|
-
if
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
60
|
+
return Rake::EARLY if formats.empty?
|
61
|
+
formats.values.map do |path|
|
62
|
+
if File.exist?(path.to_s)
|
63
|
+
File.mtime(path.to_s)
|
64
|
+
else
|
65
|
+
Rake::EARLY
|
66
|
+
end
|
67
|
+
end.min
|
59
68
|
end
|
60
69
|
|
61
70
|
def out_of_date?(stamp)
|
@@ -63,12 +72,22 @@ module Corundum
|
|
63
72
|
end
|
64
73
|
|
65
74
|
def needed?
|
66
|
-
! File.exist?(doc_path) || out_of_date?(timestamp)
|
75
|
+
! File.exist?(doc_path.abspath) || out_of_date?(timestamp)
|
67
76
|
end
|
68
77
|
|
69
78
|
def default_configuration(rspec)
|
70
79
|
super
|
71
|
-
|
80
|
+
end
|
81
|
+
|
82
|
+
def all_rspec_options
|
83
|
+
super + formats.inject([]) do |list, (format, target)|
|
84
|
+
list + ["--format", format, "--out", target]
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def resolve_configuration
|
89
|
+
super
|
90
|
+
resolve_paths
|
72
91
|
end
|
73
92
|
end
|
74
93
|
end
|
data/lib/corundum/rspec.rb
CHANGED
@@ -8,7 +8,6 @@ module Corundum
|
|
8
8
|
|
9
9
|
settings(
|
10
10
|
:qa_rejections => nil,
|
11
|
-
:sub_dir => "rspec",
|
12
11
|
:pattern => './spec{,/*/**}/*_spec.rb',
|
13
12
|
:warning => false,
|
14
13
|
:verbose => true,
|
@@ -19,19 +18,27 @@ module Corundum
|
|
19
18
|
:files_to_run => "spec"
|
20
19
|
)
|
21
20
|
|
21
|
+
dir(:target_dir,
|
22
|
+
path(:json_report, "rspec.json"),
|
23
|
+
path(:doc_path, "index.html"))
|
24
|
+
|
22
25
|
setting :rspec_path
|
23
26
|
|
24
27
|
required_fields :gemspec_path, :qa_finished_path, :file_lists, :file_dependencies
|
25
28
|
|
29
|
+
attr_reader :report_task
|
30
|
+
|
26
31
|
def default_configuration(toolkit)
|
27
32
|
super
|
28
|
-
|
33
|
+
target_dir.relative_path = "rspec"
|
34
|
+
self.qa_finished_path = toolkit.qa_file.abspath
|
29
35
|
self.qa_rejections = toolkit.qa_rejections
|
30
36
|
self.file_dependencies = file_lists.code + file_lists.test + file_lists.project
|
31
37
|
end
|
32
38
|
|
33
39
|
def resolve_configuration
|
34
40
|
self.rspec_path ||= %x"which #{rspec_program}".chomp
|
41
|
+
resolve_paths
|
35
42
|
super
|
36
43
|
end
|
37
44
|
|
@@ -54,33 +61,29 @@ module Corundum
|
|
54
61
|
test_task(:all)
|
55
62
|
|
56
63
|
desc "Generate specifications documentation"
|
57
|
-
|
58
|
-
t.rspec_opts
|
64
|
+
@report_task = doc_task(:doc => file_dependencies) do |t|
|
65
|
+
t.rspec_opts += %w{-o /dev/null --failure-exit-code 0}
|
66
|
+
t.formats["html"] = doc_path
|
67
|
+
t.formats["json"] = json_report
|
59
68
|
end
|
60
|
-
file
|
69
|
+
file entry_point => :doc
|
70
|
+
file json_report => :doc
|
61
71
|
|
62
|
-
task :verify =>
|
63
|
-
require '
|
72
|
+
task :verify => json_report do |task|
|
73
|
+
require 'json'
|
64
74
|
require 'corundum/qa-report'
|
65
75
|
|
66
|
-
doc =
|
76
|
+
doc = JSON::parse(File::read(json_report.to_s))
|
67
77
|
|
68
|
-
rejections = QA::Report.new("RSpec[#{
|
78
|
+
rejections = QA::Report.new("RSpec[#{json_report}]")
|
69
79
|
qa_rejections << rejections
|
70
80
|
|
71
|
-
|
72
|
-
"
|
73
|
-
end
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
backtrace_line =
|
78
|
-
node.xpath(".//*[#{class_xpath("backtrace")}]").first.content.split("\n").first
|
79
|
-
file,line,_ = backtrace_line.split(":")
|
80
|
-
label = "fail"
|
81
|
-
value = node.xpath(".//*[#{class_xpath("message")}]").first.content.gsub(/\s+/m, " ")
|
82
|
-
|
83
|
-
rejections.add(label, file, line, value)
|
81
|
+
doc["examples"].find_all do |example|
|
82
|
+
example["status"] == "failed"
|
83
|
+
end.each do |failed|
|
84
|
+
file,line,_ = failed["exception"]["backtrace"].first.split(":", 3)
|
85
|
+
value = failed["exception"]["message"]
|
86
|
+
rejections.add("fail", file, line, value)
|
84
87
|
end
|
85
88
|
|
86
89
|
unless rejections.empty?
|