ci_reporter 1.6.9 → 1.7.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.
- data/LICENSE.txt +1 -1
- data/Manifest.txt +12 -9
- data/README.rdoc +2 -0
- data/Rakefile +12 -6
- data/lib/ci/reporter/core.rb +1 -1
- data/lib/ci/reporter/cucumber.rb +1 -1
- data/lib/ci/reporter/minitest.rb +220 -0
- data/lib/ci/reporter/rake/cucumber.rb +1 -1
- data/lib/ci/reporter/rake/cucumber_loader.rb +1 -1
- data/lib/ci/reporter/rake/minitest.rb +15 -0
- data/lib/ci/reporter/rake/minitest_loader.rb +9 -0
- data/lib/ci/reporter/rake/rspec.rb +1 -1
- data/lib/ci/reporter/rake/rspec_loader.rb +1 -1
- data/lib/ci/reporter/rake/test_unit.rb +1 -1
- data/lib/ci/reporter/rake/test_unit_loader.rb +1 -1
- data/lib/ci/reporter/rake/utils.rb +1 -1
- data/lib/ci/reporter/report_manager.rb +1 -1
- data/lib/ci/reporter/rspec.rb +5 -3
- data/lib/ci/reporter/test_suite.rb +2 -2
- data/lib/ci/reporter/test_unit.rb +1 -1
- data/lib/ci/reporter/version.rb +7 -1
- data/spec/ci/reporter/cucumber_spec.rb +1 -1
- data/spec/ci/reporter/output_capture_spec.rb +1 -1
- data/spec/ci/reporter/rake/rake_tasks_spec.rb +10 -5
- data/spec/ci/reporter/report_manager_spec.rb +13 -1
- data/spec/ci/reporter/rspec_spec.rb +1 -1
- data/spec/ci/reporter/test_suite_spec.rb +1 -1
- data/spec/ci/reporter/test_unit_spec.rb +1 -1
- data/spec/spec_helper.rb +3 -1
- data/stub.rake +3 -2
- data/tasks/ci_reporter.rake +3 -1
- metadata +126 -123
data/LICENSE.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -1,29 +1,32 @@
|
|
1
1
|
History.txt
|
2
|
+
LICENSE.txt
|
2
3
|
Manifest.txt
|
3
4
|
README.rdoc
|
4
|
-
LICENSE.txt
|
5
5
|
Rakefile
|
6
|
-
stub.rake
|
7
6
|
lib/ci/reporter/core.rb
|
8
7
|
lib/ci/reporter/cucumber.rb
|
9
|
-
lib/ci/reporter/
|
10
|
-
lib/ci/reporter/rspec.rb
|
11
|
-
lib/ci/reporter/test_suite.rb
|
12
|
-
lib/ci/reporter/test_unit.rb
|
13
|
-
lib/ci/reporter/version.rb
|
8
|
+
lib/ci/reporter/minitest.rb
|
14
9
|
lib/ci/reporter/rake/cucumber.rb
|
15
10
|
lib/ci/reporter/rake/cucumber_loader.rb
|
11
|
+
lib/ci/reporter/rake/minitest.rb
|
12
|
+
lib/ci/reporter/rake/minitest_loader.rb
|
16
13
|
lib/ci/reporter/rake/rspec.rb
|
17
14
|
lib/ci/reporter/rake/rspec_loader.rb
|
18
15
|
lib/ci/reporter/rake/test_unit.rb
|
19
16
|
lib/ci/reporter/rake/test_unit_loader.rb
|
20
17
|
lib/ci/reporter/rake/utils.rb
|
21
|
-
|
18
|
+
lib/ci/reporter/report_manager.rb
|
19
|
+
lib/ci/reporter/rspec.rb
|
20
|
+
lib/ci/reporter/test_suite.rb
|
21
|
+
lib/ci/reporter/test_unit.rb
|
22
|
+
lib/ci/reporter/version.rb
|
22
23
|
spec/ci/reporter/cucumber_spec.rb
|
23
24
|
spec/ci/reporter/output_capture_spec.rb
|
25
|
+
spec/ci/reporter/rake/rake_tasks_spec.rb
|
24
26
|
spec/ci/reporter/report_manager_spec.rb
|
25
27
|
spec/ci/reporter/rspec_spec.rb
|
26
28
|
spec/ci/reporter/test_suite_spec.rb
|
27
29
|
spec/ci/reporter/test_unit_spec.rb
|
28
|
-
spec/
|
30
|
+
spec/spec_helper.rb
|
31
|
+
stub.rake
|
29
32
|
tasks/ci_reporter.rake
|
data/README.rdoc
CHANGED
@@ -16,6 +16,7 @@ CI::Reporter works best with projects that use a +Rakefile+ along with the stand
|
|
16
16
|
require 'ci/reporter/rake/rspec' # use this if you're using RSpec
|
17
17
|
require 'ci/reporter/rake/cucumber' # use this if you're using Cucumber
|
18
18
|
require 'ci/reporter/rake/test_unit' # use this if you're using Test::Unit
|
19
|
+
require 'ci/reporter/rake/minitest' # use this if you're using MiniTest::Unit
|
19
20
|
|
20
21
|
2. Next, either modify your Rakefile to make the <code>ci:setup:rspec</code>, <code>ci:setup:cucumber</code> or <code>ci:setup:testunit</code> task a dependency of your test tasks, or include them on the Rake command-line before the name of the task that runs the tests or specs.
|
21
22
|
|
@@ -28,6 +29,7 @@ Report files are written, by default, to the <code>test/reports</code>, <code>fe
|
|
28
29
|
If you don't have control over the Rakefile or don't want to modify it, CI::Reporter has a substitute rake file that you can specify on the command-line. It assumes that the main project rake file is called +Rakefile+ and lives in the current directory. Run like so:
|
29
30
|
|
30
31
|
rake -f GEM_PATH/stub.rake ci:setup:testunit test
|
32
|
+
rake -f GEM_PATH/stub.rake ci:setup:minitest test
|
31
33
|
rake -f GEM_PATH/stub.rake ci:setup:rspec spec
|
32
34
|
rake -f GEM_PATH/stub.rake ci:setup:cucumber features
|
33
35
|
|
data/Rakefile
CHANGED
@@ -1,10 +1,16 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2006-2012 Nick Sieger <nicksieger@gmail.com>
|
3
|
+
# See the file LICENSE.txt included with the distribution for
|
4
|
+
# software license details.
|
5
|
+
#++
|
6
|
+
|
1
7
|
require 'bundler/setup'
|
2
8
|
|
3
9
|
MANIFEST = FileList["History.txt", "Manifest.txt", "README.rdoc", "LICENSE.txt", "Rakefile",
|
4
10
|
"*.rake", "lib/**/*.rb", "spec/**/*.rb", "tasks/**/*.rake"]
|
5
11
|
|
6
12
|
begin
|
7
|
-
File.open("Manifest.txt", "w") {|f| MANIFEST.each {|n| f << "#{n}\n"} }
|
13
|
+
File.open("Manifest.txt", "w") {|f| MANIFEST.sort.each {|n| f << "#{n}\n"} }
|
8
14
|
require 'hoe'
|
9
15
|
Hoe.plugin :rubyforge
|
10
16
|
require File.dirname(__FILE__) + '/lib/ci/reporter/version'
|
@@ -43,8 +49,8 @@ end
|
|
43
49
|
Rake::Task[task].actions.clear
|
44
50
|
end
|
45
51
|
|
46
|
-
#
|
47
|
-
if
|
52
|
+
# RCov only on 1.8
|
53
|
+
if defined?(RUBY_ENGINE)
|
48
54
|
task :default => :spec
|
49
55
|
else
|
50
56
|
task :default => :rcov
|
@@ -61,6 +67,7 @@ rescue LoadError
|
|
61
67
|
end
|
62
68
|
|
63
69
|
RSpecTask.new do |t|
|
70
|
+
t.rspec_opts = "--color"
|
64
71
|
end
|
65
72
|
|
66
73
|
RSpecTask.new("spec:rcov") do |t|
|
@@ -80,9 +87,6 @@ begin
|
|
80
87
|
rescue LoadError
|
81
88
|
end
|
82
89
|
|
83
|
-
task "spec:rcov" do
|
84
|
-
rm_f "Manifest.txt"
|
85
|
-
end
|
86
90
|
task :rcov => "spec:rcov"
|
87
91
|
|
88
92
|
task :generate_output do
|
@@ -97,6 +101,7 @@ task :generate_output do
|
|
97
101
|
begin
|
98
102
|
result_proc = proc {|ok,*| puts "Failures above are expected." unless ok }
|
99
103
|
ruby "-Ilib #{opts} -rci/reporter/rake/test_unit_loader acceptance/test_unit_example_test.rb", &result_proc
|
104
|
+
ruby "-Ilib #{opts} -rci/reporter/rake/minitest_loader acceptance/minitest_example_test.rb", &result_proc
|
100
105
|
ruby "-Ilib #{opts} -S #{@spec_bin} --require ci/reporter/rake/rspec_loader --format CI::Reporter::RSpec acceptance/rspec_example_spec.rb", &result_proc
|
101
106
|
ruby "-Ilib #{opts} -rci/reporter/rake/cucumber_loader -S cucumber --format CI::Reporter::Cucumber acceptance/cucumber", &result_proc
|
102
107
|
ensure
|
@@ -108,6 +113,7 @@ task :acceptance => :generate_output
|
|
108
113
|
|
109
114
|
RSpecTask.new(:acceptance_spec) do |t|
|
110
115
|
t.pattern = FileList['acceptance/verification_spec.rb']
|
116
|
+
t.rspec_opts = "--color"
|
111
117
|
end
|
112
118
|
task :acceptance => :acceptance_spec
|
113
119
|
|
data/lib/ci/reporter/core.rb
CHANGED
data/lib/ci/reporter/cucumber.rb
CHANGED
@@ -0,0 +1,220 @@
|
|
1
|
+
# Copyright (c) 2012 Alexander Shcherbinin <alexander.shcherbinin@gmail.com>
|
2
|
+
# See the file LICENSE.txt included with the distribution for
|
3
|
+
# software license details.
|
4
|
+
|
5
|
+
require 'ci/reporter/core'
|
6
|
+
|
7
|
+
require 'minitest/unit'
|
8
|
+
|
9
|
+
module CI
|
10
|
+
module Reporter
|
11
|
+
class Failure
|
12
|
+
def self.new(fault, type = nil, meth = nil)
|
13
|
+
return MiniTestSkipped.new(fault) if type == :skip
|
14
|
+
return MiniTestFailure.new(fault, meth) if type == :failure
|
15
|
+
MiniTestError.new(fault)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class FailureCore
|
20
|
+
def location(e)
|
21
|
+
last_before_assertion = ""
|
22
|
+
e.backtrace.reverse_each do |s|
|
23
|
+
break if s =~ /in .(assert|refute|flunk|pass|fail|raise|must|wont)/
|
24
|
+
last_before_assertion = s
|
25
|
+
end
|
26
|
+
last_before_assertion.sub(/:in .*$/, '')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class MiniTestSkipped < FailureCore
|
31
|
+
def initialize(fault) @fault = fault end
|
32
|
+
def failure?() false end
|
33
|
+
def error?() false end
|
34
|
+
def name() @fault.class.name end
|
35
|
+
def message() @fault.message end
|
36
|
+
def location() super @fault end
|
37
|
+
end
|
38
|
+
|
39
|
+
class MiniTestFailure < FailureCore
|
40
|
+
def initialize(fault, meth) @fault = fault; @meth = meth end
|
41
|
+
def failure?() true end
|
42
|
+
def error?() false end
|
43
|
+
def name() @meth end
|
44
|
+
def message() @fault.message end
|
45
|
+
def location() super @fault end
|
46
|
+
end
|
47
|
+
|
48
|
+
class MiniTestError < FailureCore
|
49
|
+
def initialize(fault) @fault = fault end
|
50
|
+
def failure?() false end
|
51
|
+
def error?() true end
|
52
|
+
def name() @fault.exception.class.name end
|
53
|
+
def message() @fault.exception.message end
|
54
|
+
def location() @fault.exception.backtrace.join("\n") end
|
55
|
+
end
|
56
|
+
|
57
|
+
class Runner < MiniTest::Unit
|
58
|
+
|
59
|
+
@@out = $stdout
|
60
|
+
|
61
|
+
def initialize
|
62
|
+
super
|
63
|
+
@report_manager = ReportManager.new("test")
|
64
|
+
end
|
65
|
+
|
66
|
+
def _run_anything(type)
|
67
|
+
suites = MiniTest::Unit::TestCase.send "#{type}_suites"
|
68
|
+
return if suites.empty?
|
69
|
+
|
70
|
+
started_anything type
|
71
|
+
|
72
|
+
sync = output.respond_to? :"sync=" # stupid emacs
|
73
|
+
old_sync, output.sync = output.sync, true if sync
|
74
|
+
|
75
|
+
_run_suites(suites, type)
|
76
|
+
|
77
|
+
output.sync = old_sync if sync
|
78
|
+
|
79
|
+
finished_anything(type)
|
80
|
+
end
|
81
|
+
|
82
|
+
def _run_suites(suites, type)
|
83
|
+
suites.map { |suite| _run_suite suite, type }
|
84
|
+
end
|
85
|
+
|
86
|
+
def _run_suite(suite, type)
|
87
|
+
start_suite(suite)
|
88
|
+
|
89
|
+
header = "#{type}_suite_header"
|
90
|
+
puts send(header, suite) if respond_to? header
|
91
|
+
|
92
|
+
filter_suite_methods(suite, type).each do |method|
|
93
|
+
_run_test(suite, method)
|
94
|
+
end
|
95
|
+
|
96
|
+
finish_suite
|
97
|
+
end
|
98
|
+
|
99
|
+
def _run_test(suite, method)
|
100
|
+
start_case(method)
|
101
|
+
|
102
|
+
result = run_test(suite, method)
|
103
|
+
|
104
|
+
@assertion_count += result._assertions
|
105
|
+
@test_count += 1
|
106
|
+
|
107
|
+
finish_case
|
108
|
+
end
|
109
|
+
|
110
|
+
def puke(klass, meth, e)
|
111
|
+
e = case e
|
112
|
+
when MiniTest::Skip then
|
113
|
+
@skips += 1
|
114
|
+
fault(e, :skip)
|
115
|
+
return "S" unless @verbose
|
116
|
+
"Skipped:\n#{meth}(#{klass}) [#{location e}]:\n#{e.message}\n"
|
117
|
+
when MiniTest::Assertion then
|
118
|
+
@failures += 1
|
119
|
+
fault(e, :failure, meth)
|
120
|
+
"Failure:\n#{meth}(#{klass}) [#{location e}]:\n#{e.message}\n"
|
121
|
+
else
|
122
|
+
@errors += 1
|
123
|
+
fault(e, :error)
|
124
|
+
bt = MiniTest::filter_backtrace(e.backtrace).join "\n "
|
125
|
+
"Error:\n#{meth}(#{klass}):\n#{e.class}: #{e.message}\n #{bt}\n"
|
126
|
+
end
|
127
|
+
@report << e
|
128
|
+
e[0, 1]
|
129
|
+
end
|
130
|
+
|
131
|
+
private
|
132
|
+
|
133
|
+
def started_anything(type)
|
134
|
+
@test_count = 0
|
135
|
+
@assertion_count = 0
|
136
|
+
@last_assertion_count = 0
|
137
|
+
@result_assertion_count = 0
|
138
|
+
@start = Time.now
|
139
|
+
|
140
|
+
puts
|
141
|
+
puts "# Running #{type}s:"
|
142
|
+
puts
|
143
|
+
end
|
144
|
+
|
145
|
+
def finished_anything(type)
|
146
|
+
t = Time.now - @start
|
147
|
+
puts
|
148
|
+
puts
|
149
|
+
puts "Finished #{type}s in %.6fs, %.4f tests/s, %.4f assertions/s." %
|
150
|
+
[t, @test_count / t, @assertion_count / t]
|
151
|
+
|
152
|
+
report.each_with_index do |msg, i|
|
153
|
+
puts "\n%3d) %s" % [i + 1, msg]
|
154
|
+
end
|
155
|
+
|
156
|
+
puts
|
157
|
+
|
158
|
+
status
|
159
|
+
end
|
160
|
+
|
161
|
+
def filter_suite_methods(suite, type)
|
162
|
+
filter = options[:filter] || '/./'
|
163
|
+
filter = Regexp.new $1 if filter =~ /\/(.*)\//
|
164
|
+
|
165
|
+
suite.send("#{type}_methods").grep(filter)
|
166
|
+
end
|
167
|
+
|
168
|
+
def run_test(suite, method)
|
169
|
+
inst = suite.new method
|
170
|
+
inst._assertions = 0
|
171
|
+
|
172
|
+
print "#{suite}##{method} = " if @verbose
|
173
|
+
|
174
|
+
@start_time = Time.now
|
175
|
+
result = inst.run self
|
176
|
+
time = Time.now - @start_time
|
177
|
+
|
178
|
+
print "%.2f s = " % time if @verbose
|
179
|
+
print result
|
180
|
+
puts if @verbose
|
181
|
+
|
182
|
+
return inst
|
183
|
+
end
|
184
|
+
|
185
|
+
def start_suite(suite_name)
|
186
|
+
@current_suite = CI::Reporter::TestSuite.new(suite_name)
|
187
|
+
@current_suite.start
|
188
|
+
end
|
189
|
+
|
190
|
+
def finish_suite
|
191
|
+
if @current_suite
|
192
|
+
@current_suite.finish
|
193
|
+
@current_suite.assertions = @assertion_count - @last_assertion_count
|
194
|
+
@last_assertion_count = @assertion_count
|
195
|
+
@report_manager.write_report(@current_suite)
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
def start_case(test_name)
|
200
|
+
tc = CI::Reporter::TestCase.new(test_name)
|
201
|
+
tc.start
|
202
|
+
@current_suite.testcases << tc
|
203
|
+
end
|
204
|
+
|
205
|
+
def finish_case
|
206
|
+
tc = @current_suite.testcases.last
|
207
|
+
tc.finish
|
208
|
+
tc.assertions = @assertion_count - @result_assertion_count
|
209
|
+
@result_assertion_count = @assertion_count
|
210
|
+
end
|
211
|
+
|
212
|
+
def fault(fault, type = nil, meth = nil)
|
213
|
+
tc = @current_suite.testcases.last
|
214
|
+
tc.failures << Failure.new(fault, type, meth)
|
215
|
+
end
|
216
|
+
|
217
|
+
end
|
218
|
+
|
219
|
+
end
|
220
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Copyright (c) 2012 Alexander Shcherbinin <alexander.shcherbinin@gmail.com>
|
2
|
+
# See the file LICENSE.txt included with the distribution for
|
3
|
+
# software license details.
|
4
|
+
|
5
|
+
require File.expand_path('../utils', __FILE__)
|
6
|
+
|
7
|
+
namespace :ci do
|
8
|
+
namespace :setup do
|
9
|
+
task :minitest do
|
10
|
+
rm_rf ENV["CI_REPORTS"] || "test/reports"
|
11
|
+
test_loader = CI::Reporter.maybe_quote_filename "#{File.dirname(__FILE__)}/minitest_loader.rb"
|
12
|
+
ENV["TESTOPTS"] = "#{ENV["TESTOPTS"]} #{test_loader}"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# Copyright (c) 2012 Alexander Shcherbinin <alexander.shcherbinin@gmail.com>
|
2
|
+
# See the file LICENSE.txt included with the distribution for
|
3
|
+
# software license details.
|
4
|
+
|
5
|
+
$: << File.dirname(__FILE__) + "/../../.."
|
6
|
+
require 'ci/reporter/minitest'
|
7
|
+
|
8
|
+
# set defaults
|
9
|
+
MiniTest::Unit.runner = CI::Reporter::Runner.new
|
data/lib/ci/reporter/rspec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2006-
|
1
|
+
# Copyright (c) 2006-2012 Nick Sieger <nicksieger@gmail.com>
|
2
2
|
# See the file LICENSE.txt included with the distribution for
|
3
3
|
# software license details.
|
4
4
|
|
@@ -72,8 +72,10 @@ module CI
|
|
72
72
|
output.push "#{exception.class.name << ":"}" unless exception.class.name =~ /RSpec/
|
73
73
|
output.push @exception.message
|
74
74
|
|
75
|
-
@formatter.format_backtrace(@exception.backtrace, @example).each do |backtrace_info|
|
76
|
-
|
75
|
+
[@formatter.format_backtrace(@exception.backtrace, @example)].flatten.each do |backtrace_info|
|
76
|
+
backtrace_info.lines.each do |line|
|
77
|
+
output.push " #{line}"
|
78
|
+
end
|
77
79
|
end
|
78
80
|
output.join "\n"
|
79
81
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2006-
|
1
|
+
# Copyright (c) 2006-2012 Nick Sieger <nicksieger@gmail.com>
|
2
2
|
# See the file LICENSE.txt included with the distribution for
|
3
3
|
# software license details.
|
4
4
|
|
@@ -140,7 +140,7 @@ module CI
|
|
140
140
|
failures.each do |failure|
|
141
141
|
tag = case failure.class.name
|
142
142
|
when /TestUnitSkipped/ then :skipped
|
143
|
-
when /TestUnitError/ then :error
|
143
|
+
when /TestUnitError/, /MiniTestError/ then :error
|
144
144
|
else :failure end
|
145
145
|
|
146
146
|
builder.tag!(tag, :type => builder.trunc!(failure.name), :message => builder.trunc!(failure.message)) do
|
data/lib/ci/reporter/version.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2006-
|
1
|
+
# Copyright (c) 2006-2012 Nick Sieger <nicksieger@gmail.com>
|
2
2
|
# See the file LICENSE.txt included with the distribution for
|
3
3
|
# software license details.
|
4
4
|
|
@@ -32,7 +32,7 @@ describe "ci_reporter ci:setup:testunit task" do
|
|
32
32
|
@rake["ci:setup:testunit"].invoke
|
33
33
|
ENV["TESTOPTS"].should =~ /test_unit_loader/
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
it "should append to ENV['TESTOPTS'] if it already contains a value" do
|
37
37
|
ENV["TESTOPTS"] = "somevalue".freeze
|
38
38
|
@rake["ci:setup:testunit"].invoke
|
@@ -54,7 +54,7 @@ describe "ci_reporter ci:setup:rspec task" do
|
|
54
54
|
restore_env "CI_REPORTS"
|
55
55
|
Rake.application = nil
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
58
|
it "should set ENV['SPEC_OPTS'] to include rspec formatter args" do
|
59
59
|
@rake["ci:setup:rspec"].invoke
|
60
60
|
ENV["SPEC_OPTS"].should =~ /--require.*rspec_loader.*--format.*CI::Reporter::RSpec/
|
@@ -64,7 +64,12 @@ describe "ci_reporter ci:setup:rspec task" do
|
|
64
64
|
@rake["ci:setup:rspecdoc"].invoke
|
65
65
|
ENV["SPEC_OPTS"].should =~ /--require.*rspec_loader.*--format.*CI::Reporter::RSpecDoc/
|
66
66
|
end
|
67
|
-
|
67
|
+
|
68
|
+
it "should set ENV['SPEC_OPTS'] to include rspec base formatter if task is ci:setup:rspecbase" do
|
69
|
+
@rake["ci:setup:rspecbase"].invoke
|
70
|
+
ENV["SPEC_OPTS"].should =~ /--require.*rspec_loader.*--format.*CI::Reporter::RSpecBase/
|
71
|
+
end
|
72
|
+
|
68
73
|
it "should append to ENV['SPEC_OPTS'] if it already contains a value" do
|
69
74
|
ENV["SPEC_OPTS"] = "somevalue".freeze
|
70
75
|
@rake["ci:setup:rspec"].invoke
|
@@ -86,7 +91,7 @@ describe "ci_reporter ci:setup:cucumber task" do
|
|
86
91
|
restore_env "CI_REPORTS"
|
87
92
|
Rake.application = nil
|
88
93
|
end
|
89
|
-
|
94
|
+
|
90
95
|
it "should set ENV['CUCUMBER_OPTS'] to include cucumber formatter args" do
|
91
96
|
@rake["ci:setup:cucumber"].invoke
|
92
97
|
ENV["CUCUMBER_OPTS"].should =~ /--require.*cucumber_loader.*--format.*CI::Reporter::Cucumber/
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2006-
|
1
|
+
# Copyright (c) 2006-2012 Nick Sieger <nicksieger@gmail.com>
|
2
2
|
# See the file LICENSE.txt included with the distribution for
|
3
3
|
# software license details.
|
4
4
|
|
@@ -47,4 +47,16 @@ describe "The ReportManager" do
|
|
47
47
|
File.exist?(filename).should be_true
|
48
48
|
File.open(filename) {|f| f.read.should == "<xml></xml>"}
|
49
49
|
end
|
50
|
+
|
51
|
+
it "sidesteps existing files by adding an incrementing number" do
|
52
|
+
filename = "#{REPORTS_DIR}/SPEC-colliding-test-suite-name.xml"
|
53
|
+
FileUtils.mkdir_p(File.dirname(filename))
|
54
|
+
FileUtils.touch filename
|
55
|
+
reporter = CI::Reporter::ReportManager.new("spec")
|
56
|
+
suite = mock("test suite")
|
57
|
+
suite.should_receive(:name).and_return("colliding test suite name")
|
58
|
+
suite.should_receive(:to_xml).and_return("<xml></xml>")
|
59
|
+
reporter.write_report(suite)
|
60
|
+
File.exist?(filename.sub('.xml', '.0.xml')).should be_true
|
61
|
+
end
|
50
62
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2006-
|
1
|
+
# Copyright (c) 2006-2012 Nick Sieger <nicksieger@gmail.com>
|
2
2
|
# See the file LICENSE.txt included with the distribution for
|
3
3
|
# software license details.
|
4
4
|
|
@@ -9,6 +9,8 @@ rescue LoadError
|
|
9
9
|
require 'spec'
|
10
10
|
end
|
11
11
|
|
12
|
+
require 'rspec/autorun' if $0 =~ /rcov$/
|
13
|
+
|
12
14
|
unless defined?(CI_REPORTER_LIB)
|
13
15
|
CI_REPORTER_LIB = File.expand_path(File.dirname(__FILE__) + "/../lib")
|
14
16
|
$: << CI_REPORTER_LIB
|
data/stub.rake
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
# Copyright (c) 2006-
|
1
|
+
# Copyright (c) 2006-2012 Nick Sieger <nicksieger@gmail.com>
|
2
2
|
# See the file LICENSE.txt included with the distribution for
|
3
3
|
# software license details.
|
4
4
|
#
|
5
|
-
# Use this stub rakefile as a wrapper around a regular Rakefile. Run in the
|
5
|
+
# Use this stub rakefile as a wrapper around a regular Rakefile. Run in the
|
6
6
|
# same directory as the real Rakefile.
|
7
7
|
#
|
8
8
|
# rake -f /path/to/ci_reporter/lib/ci/reporter/rake/stub.rake ci:setup:rspec default
|
@@ -11,4 +11,5 @@
|
|
11
11
|
load File.dirname(__FILE__) + '/lib/ci/reporter/rake/rspec.rb'
|
12
12
|
load File.dirname(__FILE__) + '/lib/ci/reporter/rake/cucumber.rb'
|
13
13
|
load File.dirname(__FILE__) + '/lib/ci/reporter/rake/test_unit.rb'
|
14
|
+
load File.dirname(__FILE__) + '/lib/ci/reporter/rake/minitest.rb'
|
14
15
|
load 'Rakefile'
|
data/tasks/ci_reporter.rake
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2006-
|
1
|
+
# Copyright (c) 2006-2012 Nick Sieger <nicksieger@gmail.com>
|
2
2
|
# See the file LICENSE.txt included with the distribution for
|
3
3
|
# software license details.
|
4
4
|
|
@@ -10,9 +10,11 @@ end
|
|
10
10
|
require 'ci/reporter/rake/rspec'
|
11
11
|
require 'ci/reporter/rake/cucumber'
|
12
12
|
require 'ci/reporter/rake/test_unit'
|
13
|
+
require 'ci/reporter/rake/minitest'
|
13
14
|
|
14
15
|
namespace :ci do
|
15
16
|
task :setup_rspec => "ci:setup:rspec"
|
16
17
|
task :setup_cucumber => "ci:setup:cucumber"
|
17
18
|
task :setup_testunit => "ci:setup:testunit"
|
19
|
+
task :setup_minitest => "ci:setup:minitest"
|
18
20
|
end
|
metadata
CHANGED
@@ -1,141 +1,144 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ci_reporter
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.7.0
|
4
5
|
prerelease:
|
5
|
-
version: 1.6.9
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
8
|
-
|
7
|
+
authors:
|
8
|
+
- Nick Sieger
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
12
|
+
date: 2012-01-29 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: builder
|
16
|
+
requirement: &70278558357240 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 2.1.2
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70278558357240
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rubyforge
|
27
|
+
requirement: &70278558356440 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.0.4
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70278558356440
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: hoe
|
38
|
+
requirement: &70278558355060 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '2.12'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70278558355060
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rdoc
|
49
|
+
requirement: &70278566753800 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.10'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70278566753800
|
58
|
+
description: CI::Reporter is an add-on to Test::Unit, RSpec and Cucumber that allows
|
59
|
+
you to generate XML reports of your test, spec and/or feature runs. The resulting
|
60
|
+
files can be read by a continuous integration system that understands Ant's JUnit
|
61
|
+
report XML format, thus allowing your CI system to track test/spec successes and
|
62
|
+
failures.
|
60
63
|
email: nick@nicksieger.com
|
61
64
|
executables: []
|
62
|
-
|
63
65
|
extensions: []
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
66
|
+
extra_rdoc_files:
|
67
|
+
- History.txt
|
68
|
+
- LICENSE.txt
|
69
|
+
- Manifest.txt
|
70
|
+
- README.rdoc
|
71
|
+
files:
|
72
|
+
- History.txt
|
73
|
+
- Manifest.txt
|
74
|
+
- README.rdoc
|
75
|
+
- LICENSE.txt
|
76
|
+
- Rakefile
|
77
|
+
- stub.rake
|
78
|
+
- lib/ci/reporter/core.rb
|
79
|
+
- lib/ci/reporter/cucumber.rb
|
80
|
+
- lib/ci/reporter/minitest.rb
|
81
|
+
- lib/ci/reporter/rake/cucumber.rb
|
82
|
+
- lib/ci/reporter/rake/cucumber_loader.rb
|
83
|
+
- lib/ci/reporter/rake/minitest.rb
|
84
|
+
- lib/ci/reporter/rake/minitest_loader.rb
|
85
|
+
- lib/ci/reporter/rake/rspec.rb
|
86
|
+
- lib/ci/reporter/rake/rspec_loader.rb
|
87
|
+
- lib/ci/reporter/rake/test_unit.rb
|
88
|
+
- lib/ci/reporter/rake/test_unit_loader.rb
|
89
|
+
- lib/ci/reporter/rake/utils.rb
|
90
|
+
- lib/ci/reporter/report_manager.rb
|
91
|
+
- lib/ci/reporter/rspec.rb
|
92
|
+
- lib/ci/reporter/test_suite.rb
|
93
|
+
- lib/ci/reporter/test_unit.rb
|
94
|
+
- lib/ci/reporter/version.rb
|
95
|
+
- spec/ci/reporter/cucumber_spec.rb
|
96
|
+
- spec/ci/reporter/output_capture_spec.rb
|
97
|
+
- spec/ci/reporter/rake/rake_tasks_spec.rb
|
98
|
+
- spec/ci/reporter/report_manager_spec.rb
|
99
|
+
- spec/ci/reporter/rspec_spec.rb
|
100
|
+
- spec/ci/reporter/test_suite_spec.rb
|
101
|
+
- spec/ci/reporter/test_unit_spec.rb
|
102
|
+
- spec/spec_helper.rb
|
103
|
+
- tasks/ci_reporter.rake
|
100
104
|
homepage: http://caldersphere.rubyforge.org/ci_reporter
|
101
105
|
licenses: []
|
102
|
-
|
103
106
|
post_install_message:
|
104
|
-
rdoc_options:
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
require_paths:
|
111
|
-
|
112
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
107
|
+
rdoc_options:
|
108
|
+
- --main
|
109
|
+
- README.rdoc
|
110
|
+
- -SHN
|
111
|
+
- -f
|
112
|
+
- darkfish
|
113
|
+
require_paths:
|
114
|
+
- lib
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
113
116
|
none: false
|
114
|
-
requirements:
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
segments:
|
122
|
+
- 0
|
123
|
+
hash: 1021728402705667468
|
124
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
125
|
none: false
|
123
|
-
requirements:
|
124
|
-
|
125
|
-
|
126
|
-
|
126
|
+
requirements:
|
127
|
+
- - ! '>='
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
127
130
|
requirements: []
|
128
|
-
|
129
131
|
rubyforge_project: caldersphere
|
130
|
-
rubygems_version: 1.8.
|
132
|
+
rubygems_version: 1.8.6
|
131
133
|
signing_key:
|
132
134
|
specification_version: 3
|
133
|
-
summary: CI::Reporter allows you to generate reams of XML for use with continuous
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
135
|
+
summary: CI::Reporter allows you to generate reams of XML for use with continuous
|
136
|
+
integration systems.
|
137
|
+
test_files:
|
138
|
+
- spec/ci/reporter/cucumber_spec.rb
|
139
|
+
- spec/ci/reporter/output_capture_spec.rb
|
140
|
+
- spec/ci/reporter/rake/rake_tasks_spec.rb
|
141
|
+
- spec/ci/reporter/report_manager_spec.rb
|
142
|
+
- spec/ci/reporter/rspec_spec.rb
|
143
|
+
- spec/ci/reporter/test_suite_spec.rb
|
144
|
+
- spec/ci/reporter/test_unit_spec.rb
|