right_develop 3.0.0 → 3.0.1
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 +4 -4
- data/.swn +0 -0
- data/.swo +0 -0
- data/VERSION +1 -1
- data/lib/right_develop/ci/formatters/rspec_v1.rb +99 -0
- data/lib/right_develop/ci/formatters/rspec_v2.rb +69 -0
- data/lib/right_develop/ci/formatters/rspec_v3.rb +100 -0
- data/lib/right_develop/ci/java_cucumber_formatter.rb +32 -22
- data/lib/right_develop/ci/java_spec_formatter.rb +20 -165
- data/lib/right_develop/ci/rake_task.rb +33 -12
- data/lib/right_develop/ci.rb +1 -1
- data/right_develop.gemspec +11 -6
- metadata +10 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e01b5ce2d7618e152c66735ac44b22fb6e013a66
|
4
|
+
data.tar.gz: 00b2dd83ca8f49e8255ac6b75c665e0588f489a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d835370c83b2c7983dfe9f6dee7ec9751d6b48b3b4ed5ddfa0cac03b8628a87d8915344916478168e1597f6030423a5dd488b40779f91d90def304feadc5a43
|
7
|
+
data.tar.gz: e99561821db8ee543dd3367138ccd30f8e93184437a64cce120a4dbfd815d276b143e70a8f34cf51f30659d2b3f093b4a1a123ee8158600b33d8aa3a941a70d3
|
data/.swn
ADDED
Binary file
|
data/.swo
ADDED
Binary file
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.0.
|
1
|
+
3.0.1
|
@@ -0,0 +1,99 @@
|
|
1
|
+
module RightDevelop::CI::Formatters
|
2
|
+
# JUnit XML output formatter for RSpec 1.x
|
3
|
+
class RSpecV1 < Spec::Runner::Formatter::BaseTextFormatter
|
4
|
+
def initialize(*args)
|
5
|
+
super(*args)
|
6
|
+
@current_example_group = nil
|
7
|
+
@test_times = {}
|
8
|
+
@test_groups = {}
|
9
|
+
@test_results = {}
|
10
|
+
@test_failures = {}
|
11
|
+
end
|
12
|
+
|
13
|
+
def example_group_started(example)
|
14
|
+
@current_example_group = example
|
15
|
+
end
|
16
|
+
|
17
|
+
def example_started(example)
|
18
|
+
@test_groups[example] ||= @current_example_group
|
19
|
+
@example_started_at = Time.now
|
20
|
+
end
|
21
|
+
|
22
|
+
def example_passed(example)
|
23
|
+
@test_groups[example] ||= @current_example_group
|
24
|
+
@test_times[example] = Time.now - @example_started_at
|
25
|
+
@test_results[example] = 'passed'
|
26
|
+
end
|
27
|
+
|
28
|
+
def example_failed(example, counter, failure)
|
29
|
+
@test_groups[example] ||= @current_example_group
|
30
|
+
@test_times[example] = Time.now - @example_started_at
|
31
|
+
@test_results[example] = 'failed'
|
32
|
+
@test_failures[example] = failure
|
33
|
+
end
|
34
|
+
|
35
|
+
def example_pending(example, message, deprecated_pending_location=nil)
|
36
|
+
@test_groups[example] ||= @current_example_group
|
37
|
+
@test_times[example] = Time.now - @example_started_at
|
38
|
+
@test_results[example] = 'pending'
|
39
|
+
end
|
40
|
+
|
41
|
+
def dump_summary(duration, example_count, failure_count, pending_count)
|
42
|
+
builder = Builder::XmlMarkup.new :indent => 2
|
43
|
+
builder.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
|
44
|
+
builder.testsuite :errors => 0, :failures => failure_count, :skipped => pending_count, :tests => example_count, :time => duration, :timestamp => Time.now.iso8601 do
|
45
|
+
builder.properties
|
46
|
+
@test_results.each_pair do |test, result|
|
47
|
+
classname = purify(classname_for(test))
|
48
|
+
full_description = purify(test.description)
|
49
|
+
|
50
|
+
# The full description always begins with the classname, but this is useless info when
|
51
|
+
# generating the XML report.
|
52
|
+
if full_description.start_with?(classname)
|
53
|
+
full_description = full_description[classname.length..-1].strip
|
54
|
+
end
|
55
|
+
|
56
|
+
builder.testcase(:classname => classname.to_sym, :name => full_description, :time => @test_times[test]) do
|
57
|
+
case result
|
58
|
+
when "failed"
|
59
|
+
builder.failure :message => "failed #{full_description}", :type => "failed" do
|
60
|
+
builder.cdata! purify(failure_details_for(test))
|
61
|
+
end
|
62
|
+
when "pending" then
|
63
|
+
builder.skipped
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
output.puts builder.target!
|
69
|
+
end
|
70
|
+
|
71
|
+
def dump_failure(counter, failure)
|
72
|
+
# no-op; our summary contains everything
|
73
|
+
end
|
74
|
+
|
75
|
+
def dump_pending()
|
76
|
+
# no-op; our summary contains everything
|
77
|
+
end
|
78
|
+
|
79
|
+
private
|
80
|
+
|
81
|
+
def failure_details_for(example)
|
82
|
+
exception = @test_failures[example].exception
|
83
|
+
exception.nil? ? "" : "#{exception.message}\n#{format_backtrace(exception.backtrace)}"
|
84
|
+
end
|
85
|
+
|
86
|
+
def classname_for(example)
|
87
|
+
# Take our best guess, by looking at the description of the example group
|
88
|
+
# and assuming the first word is a class name
|
89
|
+
group = @test_groups[example]
|
90
|
+
klass = group.description.split(/\s+/).first
|
91
|
+
klass = RightDevelop::CI::Util.pseudo_java_class_name(klass)
|
92
|
+
"rspec.#{klass}"
|
93
|
+
end
|
94
|
+
|
95
|
+
def purify(untrusted)
|
96
|
+
RightDevelop::CI::Util.purify(untrusted)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module RightDevelop::CI::Formatters
|
2
|
+
# JUnit XML output formatter for RSpec 2.x
|
3
|
+
class RSpecV2 < RSpec::Core::Formatters::BaseFormatter
|
4
|
+
def initialize(*args)
|
5
|
+
super(*args)
|
6
|
+
@test_results = []
|
7
|
+
end
|
8
|
+
|
9
|
+
def example_passed(example)
|
10
|
+
@test_results << example
|
11
|
+
end
|
12
|
+
|
13
|
+
def example_failed(example)
|
14
|
+
@test_results << example
|
15
|
+
end
|
16
|
+
|
17
|
+
def example_pending(example)
|
18
|
+
@test_results << example
|
19
|
+
end
|
20
|
+
|
21
|
+
def dump_summary(duration, example_count, failure_count, pending_count)
|
22
|
+
builder = Builder::XmlMarkup.new :indent => 2
|
23
|
+
builder.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
|
24
|
+
builder.testsuite :errors => 0, :failures => failure_count, :skipped => pending_count, :tests => example_count, :time => duration, :timestamp => Time.now.iso8601 do
|
25
|
+
builder.properties
|
26
|
+
@test_results.each do |test|
|
27
|
+
classname = purify(classname_for(test))
|
28
|
+
full_description = purify(test.full_description)
|
29
|
+
time = test.metadata[:execution_result][:run_time]
|
30
|
+
|
31
|
+
# The full description always begins with the classname, but this is useless info when
|
32
|
+
# generating the XML report.
|
33
|
+
if full_description.start_with?(classname)
|
34
|
+
full_description = full_description[classname.length..-1].strip
|
35
|
+
end
|
36
|
+
|
37
|
+
builder.testcase(:classname => classname.to_sym, :name => full_description, :time => time) do
|
38
|
+
case test.metadata[:execution_result][:status]
|
39
|
+
when "failed"
|
40
|
+
builder.failure :message => "failed #{full_description}", :type => "failed" do
|
41
|
+
builder.cdata! purify(failure_details_for(test))
|
42
|
+
end
|
43
|
+
when "pending" then
|
44
|
+
builder.skipped
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
output.puts builder.target!
|
50
|
+
end
|
51
|
+
|
52
|
+
protected
|
53
|
+
|
54
|
+
def failure_details_for(example)
|
55
|
+
exception = example.exception
|
56
|
+
exception.nil? ? "" : "#{exception.message}\n#{format_backtrace(exception.backtrace, example).join("\n")}"
|
57
|
+
end
|
58
|
+
|
59
|
+
def classname_for(example)
|
60
|
+
klass = example.example_group.top_level_description || example.example_group.described_class
|
61
|
+
klass = RightDevelop::CI::Util.pseudo_java_class_name(klass.to_s)
|
62
|
+
"rspec.#{klass}"
|
63
|
+
end
|
64
|
+
|
65
|
+
def purify(untrusted)
|
66
|
+
RightDevelop::CI::Util.purify(untrusted)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
module RightDevelop::CI::Formatters
|
2
|
+
# JUnit XML output formatter for RSpec 3.x
|
3
|
+
class RSpecV3 < RSpec::Core::Formatters::BaseFormatter
|
4
|
+
RSpec::Core::Formatters.register self,
|
5
|
+
:start, :example_group_started, :start_dump,
|
6
|
+
:example_started, :example_passed, :example_failed,
|
7
|
+
:example_pending, :dump_summary
|
8
|
+
|
9
|
+
def initialize(output)
|
10
|
+
super(output)
|
11
|
+
@failed_examples = []
|
12
|
+
@example_group_number = 0
|
13
|
+
@example_number = 0
|
14
|
+
|
15
|
+
@test_results = []
|
16
|
+
end
|
17
|
+
|
18
|
+
def start(notification)
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
def example_group_started(notification)
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
def start_dump(notification)
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
def example_started(notification)
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
def example_passed(passed)
|
35
|
+
@test_results << passed
|
36
|
+
end
|
37
|
+
|
38
|
+
def example_failed(failure)
|
39
|
+
@test_results << failure
|
40
|
+
end
|
41
|
+
|
42
|
+
def example_pending(pending)
|
43
|
+
@test_results << pending
|
44
|
+
end
|
45
|
+
|
46
|
+
def dump_summary(summary)
|
47
|
+
builder = Builder::XmlMarkup.new :indent => 2
|
48
|
+
builder.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
|
49
|
+
builder.testsuite :errors => 0,
|
50
|
+
:failures => summary.failure_count,
|
51
|
+
:skipped => summary.pending_count,
|
52
|
+
:tests => summary.example_count,
|
53
|
+
:time => summary.duration,
|
54
|
+
:timestamp => Time.now.iso8601 do
|
55
|
+
builder.properties
|
56
|
+
@test_results.each do |test|
|
57
|
+
classname = purify(classname_for(test.example))
|
58
|
+
full_description = purify(test.example.full_description)
|
59
|
+
time = test.example.metadata[:execution_result][:run_time]
|
60
|
+
|
61
|
+
# The full description always begins with the classname, but this is useless info when
|
62
|
+
# generating the XML report.
|
63
|
+
if full_description.start_with?(classname)
|
64
|
+
full_description = full_description[classname.length..-1].strip
|
65
|
+
end
|
66
|
+
|
67
|
+
builder.testcase(:classname => classname.to_sym, :name => full_description, :time => time) do
|
68
|
+
case test.example.metadata[:execution_result][:status]
|
69
|
+
when "failed"
|
70
|
+
builder.failure :message => "failed #{full_description}", :type => "failed" do
|
71
|
+
builder.cdata! purify(failure_details_for(test))
|
72
|
+
end
|
73
|
+
when "pending" then
|
74
|
+
builder.skipped
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
output.puts builder.target!
|
81
|
+
end
|
82
|
+
|
83
|
+
protected
|
84
|
+
|
85
|
+
def failure_details_for(failure)
|
86
|
+
exception = failure.example.exception
|
87
|
+
exception.nil? ? "" : "#{exception.message}\n#{failure.formatted_backtrace.join("\n")}"
|
88
|
+
end
|
89
|
+
|
90
|
+
def classname_for(example)
|
91
|
+
klass = example.example_group.top_level_description || example.example_group.described_class
|
92
|
+
klass = RightDevelop::CI::Util.pseudo_java_class_name(klass.to_s)
|
93
|
+
"rspec.#{klass}"
|
94
|
+
end
|
95
|
+
|
96
|
+
def purify(untrusted)
|
97
|
+
RightDevelop::CI::Util.purify(untrusted)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -26,35 +26,45 @@
|
|
26
26
|
# Cucumber sometimes avoids loading us; not sure why!
|
27
27
|
require 'right_develop'
|
28
28
|
|
29
|
-
|
30
|
-
|
29
|
+
|
30
|
+
['cucumber', 'cucumber/formatter/junit'].each do |f|
|
31
|
+
begin
|
32
|
+
require f
|
33
|
+
rescue LoadError
|
34
|
+
# no-op, we will raise later
|
35
|
+
end
|
36
|
+
end
|
31
37
|
|
32
38
|
module RightDevelop::CI
|
33
|
-
|
34
|
-
|
39
|
+
if defined?(Cucumber)
|
40
|
+
class JavaCucumberFormatter < Cucumber::Formatter::Junit
|
41
|
+
private
|
35
42
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
+
def build_testcase(duration, status, exception = nil, suffix = "")
|
44
|
+
@time += duration
|
45
|
+
# Use "cucumber" as a pseudo-package, and the feature name as a pseudo-class
|
46
|
+
classname = "cucumber.#{RightDevelop::CI::Util.pseudo_java_class_name(@feature_name)}"
|
47
|
+
name = "#{@scenario}#{suffix}"
|
48
|
+
pending = [:pending, :undefined].include?(status)
|
49
|
+
passed = (status == :passed || (pending && !@options[:strict]))
|
43
50
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
51
|
+
@builder.testcase(:classname => classname.to_sym, :name => name, :time => "%.6f" % duration) do
|
52
|
+
unless passed
|
53
|
+
@builder.failure(:message => "#{status.to_s} #{name}", :type => status.to_s) do
|
54
|
+
@builder.cdata! @output
|
55
|
+
@builder.cdata!(format_exception(exception)) if exception
|
56
|
+
end
|
57
|
+
@failures += 1
|
58
|
+
end
|
59
|
+
if passed and (status == :skipped || pending)
|
60
|
+
@builder.skipped
|
61
|
+
@skipped += 1
|
49
62
|
end
|
50
|
-
@failures += 1
|
51
|
-
end
|
52
|
-
if passed and (status == :skipped || pending)
|
53
|
-
@builder.skipped
|
54
|
-
@skipped += 1
|
55
63
|
end
|
64
|
+
@tests += 1
|
56
65
|
end
|
57
|
-
@tests += 1
|
58
66
|
end
|
67
|
+
else
|
68
|
+
JavaCucumberFormatter = Object
|
59
69
|
end
|
60
70
|
end
|
@@ -34,171 +34,26 @@ require 'builder'
|
|
34
34
|
end
|
35
35
|
|
36
36
|
module RightDevelop::CI
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
def example_pending(example)
|
54
|
-
@test_results << example
|
55
|
-
end
|
56
|
-
|
57
|
-
def failure_details_for(example)
|
58
|
-
exception = example.exception
|
59
|
-
exception.nil? ? "" : "#{exception.message}\n#{format_backtrace(exception.backtrace, example).join("\n")}"
|
60
|
-
end
|
61
|
-
|
62
|
-
def classname_for(example)
|
63
|
-
klass = example.example_group.top_level_description || example.example_group.described_class
|
64
|
-
klass = RightDevelop::CI::Util.pseudo_java_class_name(klass.to_s)
|
65
|
-
"rspec.#{klass}"
|
66
|
-
end
|
67
|
-
|
68
|
-
def dump_summary(duration, example_count, failure_count, pending_count)
|
69
|
-
builder = Builder::XmlMarkup.new :indent => 2
|
70
|
-
builder.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
|
71
|
-
builder.testsuite :errors => 0, :failures => failure_count, :skipped => pending_count, :tests => example_count, :time => duration, :timestamp => Time.now.iso8601 do
|
72
|
-
builder.properties
|
73
|
-
@test_results.each do |test|
|
74
|
-
classname = purify(classname_for(test))
|
75
|
-
full_description = purify(test.full_description)
|
76
|
-
time = test.metadata[:execution_result][:run_time]
|
77
|
-
|
78
|
-
# The full description always begins with the classname, but this is useless info when
|
79
|
-
# generating the XML report.
|
80
|
-
if full_description.start_with?(classname)
|
81
|
-
full_description = full_description[classname.length..-1].strip
|
82
|
-
end
|
83
|
-
|
84
|
-
builder.testcase(:classname => classname.to_sym, :name => full_description, :time => time) do
|
85
|
-
case test.metadata[:execution_result][:status]
|
86
|
-
when "failed"
|
87
|
-
builder.failure :message => "failed #{full_description}", :type => "failed" do
|
88
|
-
builder.cdata! purify(failure_details_for(test))
|
89
|
-
end
|
90
|
-
when "pending" then
|
91
|
-
builder.skipped
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
output.puts builder.target!
|
97
|
-
end
|
98
|
-
|
99
|
-
def purify(untrusted)
|
100
|
-
RightDevelop::CI::Util.purify(untrusted)
|
101
|
-
end
|
102
|
-
end
|
103
|
-
elsif defined?(::Spec::Runner)
|
104
|
-
# RSpec 1.x
|
105
|
-
class JavaSpecFormatter < Spec::Runner::Formatter::BaseTextFormatter
|
106
|
-
def initialize(*args)
|
107
|
-
super(*args)
|
108
|
-
@current_example_group = nil
|
109
|
-
@test_times = {}
|
110
|
-
@test_groups = {}
|
111
|
-
@test_results = {}
|
112
|
-
@test_failures = {}
|
113
|
-
end
|
114
|
-
|
115
|
-
def example_group_started(example)
|
116
|
-
@current_example_group = example
|
117
|
-
end
|
118
|
-
|
119
|
-
def example_started(example)
|
120
|
-
@test_groups[example] ||= @current_example_group
|
121
|
-
@example_started_at = Time.now
|
122
|
-
end
|
123
|
-
|
124
|
-
def example_passed(example)
|
125
|
-
@test_groups[example] ||= @current_example_group
|
126
|
-
@test_times[example] = Time.now - @example_started_at
|
127
|
-
@test_results[example] = 'passed'
|
128
|
-
end
|
129
|
-
|
130
|
-
def example_failed(example, counter, failure)
|
131
|
-
@test_groups[example] ||= @current_example_group
|
132
|
-
@test_times[example] = Time.now - @example_started_at
|
133
|
-
@test_results[example] = 'failed'
|
134
|
-
@test_failures[example] = failure
|
135
|
-
end
|
136
|
-
|
137
|
-
def example_pending(example, message, deprecated_pending_location=nil)
|
138
|
-
@test_groups[example] ||= @current_example_group
|
139
|
-
@test_times[example] = Time.now - @example_started_at
|
140
|
-
@test_results[example] = 'pending'
|
141
|
-
end
|
142
|
-
|
143
|
-
def dump_summary(duration, example_count, failure_count, pending_count)
|
144
|
-
builder = Builder::XmlMarkup.new :indent => 2
|
145
|
-
builder.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
|
146
|
-
builder.testsuite :errors => 0, :failures => failure_count, :skipped => pending_count, :tests => example_count, :time => duration, :timestamp => Time.now.iso8601 do
|
147
|
-
builder.properties
|
148
|
-
@test_results.each_pair do |test, result|
|
149
|
-
classname = purify(classname_for(test))
|
150
|
-
full_description = purify(test.description)
|
151
|
-
|
152
|
-
# The full description always begins with the classname, but this is useless info when
|
153
|
-
# generating the XML report.
|
154
|
-
if full_description.start_with?(classname)
|
155
|
-
full_description = full_description[classname.length..-1].strip
|
156
|
-
end
|
157
|
-
|
158
|
-
builder.testcase(:classname => classname.to_sym, :name => full_description, :time => @test_times[test]) do
|
159
|
-
case result
|
160
|
-
when "failed"
|
161
|
-
builder.failure :message => "failed #{full_description}", :type => "failed" do
|
162
|
-
builder.cdata! purify(failure_details_for(test))
|
163
|
-
end
|
164
|
-
when "pending" then
|
165
|
-
builder.skipped
|
166
|
-
end
|
167
|
-
end
|
168
|
-
end
|
169
|
-
end
|
170
|
-
output.puts builder.target!
|
171
|
-
end
|
172
|
-
|
173
|
-
def dump_failure(counter, failure)
|
174
|
-
# no-op; our summary contains everything
|
175
|
-
end
|
176
|
-
|
177
|
-
def dump_pending()
|
178
|
-
# no-op; our summary contains everything
|
179
|
-
end
|
180
|
-
|
181
|
-
private
|
182
|
-
|
183
|
-
def failure_details_for(example)
|
184
|
-
exception = @test_failures[example].exception
|
185
|
-
exception.nil? ? "" : "#{exception.message}\n#{format_backtrace(exception.backtrace)}"
|
186
|
-
end
|
187
|
-
|
188
|
-
def classname_for(example)
|
189
|
-
# Take our best guess, by looking at the description of the example group
|
190
|
-
# and assuming the first word is a class name
|
191
|
-
group = @test_groups[example]
|
192
|
-
klass = group.description.split(/\s+/).first
|
193
|
-
klass = RightDevelop::CI::Util.pseudo_java_class_name(klass)
|
194
|
-
"rspec.#{klass}"
|
195
|
-
end
|
196
|
-
|
197
|
-
def purify(untrusted)
|
198
|
-
RightDevelop::CI::Util.purify(untrusted)
|
199
|
-
end
|
200
|
-
end
|
37
|
+
spec = Gem.loaded_specs['rspec']
|
38
|
+
ver = spec && spec.version.to_s
|
39
|
+
|
40
|
+
case ver
|
41
|
+
when /^3/
|
42
|
+
require 'right_develop/ci/formatters/rspec_v3'
|
43
|
+
RSpecFormatter = RightDevelop::CI::Formatters::RSpecV3
|
44
|
+
when /^2/
|
45
|
+
require 'right_develop/ci/formatters/rspec_v2'
|
46
|
+
RSpecFormatter = RightDevelop::CI::Formatters::RSpecV2
|
47
|
+
when /^1/
|
48
|
+
require 'right_develop/ci/formatters/rspec_v1'
|
49
|
+
RSpecFormatter = RightDevelop::CI::Formatters::RSpecV1
|
50
|
+
when nil
|
51
|
+
RSpecFormatter = Object
|
201
52
|
else
|
202
|
-
raise LoadError,
|
53
|
+
raise LoadError,
|
54
|
+
"Cannot define RightDevelop::CI::RSpecFormatter: unsupported RSpec version #{ver}"
|
203
55
|
end
|
56
|
+
|
57
|
+
# @deprecated do not refer to this class name; use RSpecFormater instead
|
58
|
+
JavaSpecFormatter = RSpecFormatter
|
204
59
|
end
|
@@ -37,8 +37,13 @@ require 'right_develop/ci'
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
-
|
41
|
-
|
40
|
+
['cucumber', 'cucumber/rake/task'].each do |f|
|
41
|
+
begin
|
42
|
+
require f
|
43
|
+
rescue LoadError
|
44
|
+
# no-op, we will raise later
|
45
|
+
end
|
46
|
+
end
|
42
47
|
|
43
48
|
module RightDevelop::CI
|
44
49
|
# A Rake task definition that creates a CI namespace with appropriate
|
@@ -122,9 +127,13 @@ module RightDevelop::CI
|
|
122
127
|
FileUtils.mkdir_p(File.join(@output_path, 'cucumber'))
|
123
128
|
end
|
124
129
|
|
125
|
-
|
130
|
+
spec = Gem.loaded_specs['rspec']
|
131
|
+
ver = spec && spec.version.to_s
|
132
|
+
|
133
|
+
case ver
|
134
|
+
when /^[23]/
|
126
135
|
default_opts = ['-r', 'right_develop/ci',
|
127
|
-
'-f',
|
136
|
+
'-f', 'RightDevelop::CI::RSpecFormatter',
|
128
137
|
'-o', File.join(@output_path, 'rspec', @rspec_output)]
|
129
138
|
|
130
139
|
# RSpec 2
|
@@ -135,9 +144,9 @@ module RightDevelop::CI
|
|
135
144
|
t.pattern = self.rspec_pattern
|
136
145
|
end
|
137
146
|
end
|
138
|
-
|
147
|
+
when /^1/
|
139
148
|
default_opts = ['-r', 'right_develop/ci',
|
140
|
-
'-f',
|
149
|
+
'-f', 'RightDevelop::CI::RSpecFormatter' + ":" + File.join(@output_path, 'rspec', @rspec_output)]
|
141
150
|
|
142
151
|
# RSpec 1
|
143
152
|
Spec::Rake::SpecTask.new(@rspec_name => :prep) do |t|
|
@@ -147,16 +156,28 @@ module RightDevelop::CI
|
|
147
156
|
t.spec_files = FileList[self.rspec_pattern]
|
148
157
|
end
|
149
158
|
end
|
159
|
+
when nil
|
160
|
+
warn "Cannot define right_develop ci:spec task: RSpec gem is unavailable"
|
150
161
|
else
|
151
|
-
raise LoadError, "Cannot define
|
162
|
+
raise LoadError, "Cannot define RightDevelop ci:spec task: unsupported RSpec version #{ver}"
|
152
163
|
end
|
153
164
|
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
165
|
+
spec = Gem.loaded_specs['cucumber']
|
166
|
+
ver = spec && spec.version.to_s
|
167
|
+
|
168
|
+
case ver
|
169
|
+
when /^1/
|
170
|
+
Cucumber::Rake::Task.new(@cucumber_name, @cucumber_desc) do |t|
|
171
|
+
t.cucumber_opts = ['--no-color',
|
172
|
+
'--format', JavaCucumberFormatter.name,
|
173
|
+
'--out', File.join(@output_path, 'cucumber')]
|
174
|
+
end
|
175
|
+
task :cucumber => [:prep]
|
176
|
+
when nil
|
177
|
+
warn "Cannot define right_develop ci:cucumber task: Cucumber gem is unavailable"
|
178
|
+
else
|
179
|
+
raise LoadError, "Cannot define RightDevelop ci:cucumber task: unsupported Cucumber version #{ver}"
|
158
180
|
end
|
159
|
-
task :cucumber => [:prep]
|
160
181
|
end
|
161
182
|
end
|
162
183
|
end
|
data/lib/right_develop/ci.rb
CHANGED
@@ -31,7 +31,7 @@ module RightDevelop
|
|
31
31
|
|
32
32
|
# Cucumber does not support a -r hook, but it does let you specify class names. Autoload
|
33
33
|
# to the rescue!
|
34
|
-
autoload :
|
34
|
+
autoload :JavaCucumberFormatter, 'right_develop/ci/java_cucumber_formatter'
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
data/right_develop.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: right_develop 3.0.
|
5
|
+
# stub: right_develop 3.0.1 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "right_develop"
|
9
|
-
s.version = "3.0.
|
9
|
+
s.version = "3.0.1"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
@@ -20,6 +20,8 @@ Gem::Specification.new do |s|
|
|
20
20
|
"README.rdoc"
|
21
21
|
]
|
22
22
|
s.files = [
|
23
|
+
".swn",
|
24
|
+
".swo",
|
23
25
|
"CHANGELOG.rdoc",
|
24
26
|
"LICENSE",
|
25
27
|
"README.rdoc",
|
@@ -28,6 +30,9 @@ Gem::Specification.new do |s|
|
|
28
30
|
"bin/right_develop",
|
29
31
|
"lib/right_develop.rb",
|
30
32
|
"lib/right_develop/ci.rb",
|
33
|
+
"lib/right_develop/ci/formatters/rspec_v1.rb",
|
34
|
+
"lib/right_develop/ci/formatters/rspec_v2.rb",
|
35
|
+
"lib/right_develop/ci/formatters/rspec_v3.rb",
|
31
36
|
"lib/right_develop/ci/java_cucumber_formatter.rb",
|
32
37
|
"lib/right_develop/ci/java_spec_formatter.rb",
|
33
38
|
"lib/right_develop/ci/rake_task.rb",
|
@@ -75,7 +80,7 @@ Gem::Specification.new do |s|
|
|
75
80
|
]
|
76
81
|
s.homepage = "https://github.com/rightscale/right_develop"
|
77
82
|
s.licenses = ["MIT"]
|
78
|
-
s.rubygems_version = "2.2.
|
83
|
+
s.rubygems_version = "2.2.0"
|
79
84
|
s.summary = "Reusable dev & test code."
|
80
85
|
|
81
86
|
if s.respond_to? :specification_version then
|
@@ -83,7 +88,7 @@ Gem::Specification.new do |s|
|
|
83
88
|
|
84
89
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
85
90
|
s.add_runtime_dependency(%q<right_support>, [">= 2.8.10"])
|
86
|
-
s.add_runtime_dependency(%q<
|
91
|
+
s.add_runtime_dependency(%q<builder>, ["~> 3.0"])
|
87
92
|
s.add_runtime_dependency(%q<trollop>, ["< 3.0", ">= 1.0"])
|
88
93
|
s.add_runtime_dependency(%q<right_git>, [">= 1.0"])
|
89
94
|
s.add_runtime_dependency(%q<right_aws>, [">= 2.1.0"])
|
@@ -97,7 +102,7 @@ Gem::Specification.new do |s|
|
|
97
102
|
s.add_development_dependency(%q<pry-byebug>, [">= 0"])
|
98
103
|
else
|
99
104
|
s.add_dependency(%q<right_support>, [">= 2.8.10"])
|
100
|
-
s.add_dependency(%q<
|
105
|
+
s.add_dependency(%q<builder>, ["~> 3.0"])
|
101
106
|
s.add_dependency(%q<trollop>, ["< 3.0", ">= 1.0"])
|
102
107
|
s.add_dependency(%q<right_git>, [">= 1.0"])
|
103
108
|
s.add_dependency(%q<right_aws>, [">= 2.1.0"])
|
@@ -112,7 +117,7 @@ Gem::Specification.new do |s|
|
|
112
117
|
end
|
113
118
|
else
|
114
119
|
s.add_dependency(%q<right_support>, [">= 2.8.10"])
|
115
|
-
s.add_dependency(%q<
|
120
|
+
s.add_dependency(%q<builder>, ["~> 3.0"])
|
116
121
|
s.add_dependency(%q<trollop>, ["< 3.0", ">= 1.0"])
|
117
122
|
s.add_dependency(%q<right_git>, [">= 1.0"])
|
118
123
|
s.add_dependency(%q<right_aws>, [">= 2.1.0"])
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: right_develop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Spataro
|
@@ -25,25 +25,19 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 2.8.10
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: builder
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "<"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 1.3.3
|
34
31
|
- - "~>"
|
35
32
|
- !ruby/object:Gem::Version
|
36
|
-
version: '
|
33
|
+
version: '3.0'
|
37
34
|
type: :runtime
|
38
35
|
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
41
|
-
- - "<"
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 1.3.3
|
44
38
|
- - "~>"
|
45
39
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
40
|
+
version: '3.0'
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
42
|
name: trollop
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -213,6 +207,8 @@ extra_rdoc_files:
|
|
213
207
|
- LICENSE
|
214
208
|
- README.rdoc
|
215
209
|
files:
|
210
|
+
- ".swn"
|
211
|
+
- ".swo"
|
216
212
|
- CHANGELOG.rdoc
|
217
213
|
- LICENSE
|
218
214
|
- README.rdoc
|
@@ -221,6 +217,9 @@ files:
|
|
221
217
|
- bin/right_develop
|
222
218
|
- lib/right_develop.rb
|
223
219
|
- lib/right_develop/ci.rb
|
220
|
+
- lib/right_develop/ci/formatters/rspec_v1.rb
|
221
|
+
- lib/right_develop/ci/formatters/rspec_v2.rb
|
222
|
+
- lib/right_develop/ci/formatters/rspec_v3.rb
|
224
223
|
- lib/right_develop/ci/java_cucumber_formatter.rb
|
225
224
|
- lib/right_develop/ci/java_spec_formatter.rb
|
226
225
|
- lib/right_develop/ci/rake_task.rb
|
@@ -285,7 +284,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
285
284
|
version: '0'
|
286
285
|
requirements: []
|
287
286
|
rubyforge_project:
|
288
|
-
rubygems_version: 2.2.
|
287
|
+
rubygems_version: 2.2.0
|
289
288
|
signing_key:
|
290
289
|
specification_version: 4
|
291
290
|
summary: Reusable dev & test code.
|