ci_reporter_cucumber 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e93cb95d49957071f7d5ea80422c2d7ce69af3fd
4
+ data.tar.gz: 92c854967c6358888c65c84b2314da3d0fb0bb8c
5
+ SHA512:
6
+ metadata.gz: 3eb5f4f053066b8badb22b9a36fa912c553309ccb77c3f8e3af6df07658d25b1e9505a482f12531c2ddb32280247dcb4bc3f2708af16b7c8b716afbece8798a9
7
+ data.tar.gz: 5f285aed76ea481f074167a65bf2267807ef1653b608edf6d2617470414070553a6ed93bff818322ad21a5ec62d1ac34d74301ac94a6c4e438f65ed0ff09905c
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.bundle
19
+ *.so
20
+ *.o
21
+ *.a
22
+ mkmf.log
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ rvm:
2
+ - 1.9.3
3
+ - 2.0
4
+ - 2.1
5
+ - jruby
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ci_reporter_cucumber.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,23 @@
1
+ Copyright (c) 2006-2014 Nick Sieger <nicksieger@gmail.com>
2
+ Copyright (c) 2014 The CI Reporter authors
3
+
4
+ MIT License
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining
7
+ a copy of this software and associated documentation files (the
8
+ "Software"), to deal in the Software without restriction, including
9
+ without limitation the rights to use, copy, modify, merge, publish,
10
+ distribute, sublicense, and/or sell copies of the Software, and to
11
+ permit persons to whom the Software is furnished to do so, subject to
12
+ the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be
15
+ included in all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,61 @@
1
+ # CI::Reporter::Cucumber
2
+
3
+ Connects [Cucumber][cuke] to [CI::Reporter][ci], and then to your CI
4
+ system.
5
+
6
+ [cuke]: http://cukes.info/
7
+ [ci]: https://github.com/ci-reporter/ci_reporter
8
+
9
+ ## Supported versions
10
+
11
+ The latest release of Cucumber 1.3 is supported.
12
+
13
+ ## Installation
14
+
15
+ Add this line to your application's Gemfile:
16
+
17
+ ```ruby
18
+ gem 'ci_reporter_cucumber'
19
+ ```
20
+
21
+ And then install it:
22
+
23
+ ```
24
+ $ bundle
25
+ ```
26
+
27
+ ## Usage
28
+
29
+ Require the reporter in your Rakefile, and ensure that
30
+ `ci:setup:cucumber` is a dependency of your RSpec task:
31
+
32
+ ```ruby
33
+ require 'ci/reporter/rake/cucumber'
34
+
35
+ # ...
36
+ # Rake code that creates a task called `:cucumber`
37
+ # ...
38
+
39
+ task :cucumber => 'ci:setup:cucumber'
40
+ ```
41
+
42
+ ### Advanced usage
43
+
44
+ Refer to the shared [documentation][ci] for details on setting up
45
+ CI::Reporter.
46
+
47
+ ### Spinach
48
+
49
+ If you use both Cucumber and Spinach, you are likely to see strange
50
+ errors due to `gherkin` and `gherkin-ruby` both being loaded. Choose
51
+ only one of these frameworks.
52
+
53
+ ## Contributing
54
+
55
+ 1. Fork it ( https://github.com/ci-reporter/ci_reporter_cucumber/fork )
56
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
57
+ 3. Add a failing test.
58
+ 4. Commit your changes (`git commit -am 'Add some feature'`)
59
+ 5. Ensure tests pass.
60
+ 6. Push to the branch (`git push origin my-new-feature`)
61
+ 7. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,32 @@
1
+ require "bundler/gem_tasks"
2
+ require 'ci/reporter/internal'
3
+ include CI::Reporter::Internal
4
+
5
+ namespace :generate do
6
+ task :clean do
7
+ rm_rf "acceptance/reports"
8
+ end
9
+
10
+ task :cucumber do
11
+ cucumber = "#{Gem.loaded_specs['cucumber'].gem_dir}/bin/cucumber"
12
+ run_ruby_acceptance "-rci/reporter/rake/cucumber_loader -S #{cucumber} --format CI::Reporter::Cucumber acceptance/cucumber"
13
+ end
14
+
15
+ task :all => [:clean, :cucumber]
16
+ end
17
+
18
+ task :acceptance => "generate:all"
19
+
20
+ require 'rspec/core/rake_task'
21
+ RSpec::Core::RakeTask.new(:acceptance_spec) do |t|
22
+ t.pattern = FileList['acceptance/verification_spec.rb']
23
+ t.rspec_opts = "--color"
24
+ end
25
+ task :acceptance => :acceptance_spec
26
+
27
+ RSpec::Core::RakeTask.new(:unit_spec) do |t|
28
+ t.pattern = FileList['spec']
29
+ t.rspec_opts = "--color"
30
+ end
31
+
32
+ task :default => [:unit_spec, :acceptance]
@@ -0,0 +1 @@
1
+ reports/
@@ -0,0 +1,19 @@
1
+ Feature: Example Cucumber feature
2
+ As a conscientious developer who writes features
3
+ I want to be able to see my features passing on the CI Server
4
+ So that I can bask in the glow of a green bar
5
+
6
+ Scenario: Conscientious developer
7
+ Given that I am a conscientious developer
8
+ And I write cucumber features
9
+ Then I should see a green bar
10
+
11
+ Scenario: Lazy hacker
12
+ Given that I am a lazy hacker
13
+ And I don't bother writing cucumber features
14
+ Then I should be fired
15
+
16
+ Scenario: Bad coder
17
+ Given that I can't code for peanuts
18
+ And I write step definitions that throw exceptions
19
+ Then I shouldn't be allowed out in public
@@ -0,0 +1,34 @@
1
+ begin
2
+ require 'rspec/expectations'
3
+ rescue LoadError
4
+ require 'spec/expectations'
5
+ end
6
+
7
+ Given /^that I am a conscientious developer$/ do
8
+ end
9
+
10
+ Given /^I write cucumber features$/ do
11
+ end
12
+
13
+ Then /^I should see a green bar$/ do
14
+ end
15
+
16
+ Given /^that I am a lazy hacker$/ do
17
+ end
18
+
19
+ Given /^I don't bother writing cucumber features$/ do
20
+ false.should be true
21
+ end
22
+
23
+ Then /^I should be fired$/ do
24
+ end
25
+
26
+ Given /^that I can't code for peanuts$/ do
27
+ end
28
+
29
+ Given /^I write step definitions that throw exceptions$/ do
30
+ raise RuntimeError, "User error!"
31
+ end
32
+
33
+ Then /^I shouldn't be allowed out in public$/ do
34
+ end
@@ -0,0 +1,38 @@
1
+ require 'rexml/document'
2
+
3
+ REPORTS_DIR = File.dirname(__FILE__) + '/reports'
4
+
5
+ describe "Cucumber acceptance" do
6
+ it "should generate one XML file" do
7
+ File.exist?(File.join(REPORTS_DIR, 'FEATURES-Example-Cucumber-feature.xml')).should == true
8
+
9
+ Dir["#{REPORTS_DIR}/FEATURES-*Cucumber*.xml"].length.should == 1
10
+ end
11
+
12
+ context "FEATURES report file" do
13
+ before :each do
14
+ @doc = File.open(File.join(REPORTS_DIR, 'FEATURES-Example-Cucumber-feature.xml')) do |f|
15
+ REXML::Document.new(f)
16
+ end
17
+ end
18
+
19
+ it "should have three tests and two failures" do
20
+ @doc.root.attributes["errors"].should == "0"
21
+ @doc.root.attributes["failures"].should == "2"
22
+ @doc.root.attributes["tests"].should == "3"
23
+ @doc.root.elements.to_a("/testsuite/testcase").size.should == 3
24
+ end
25
+
26
+ it "should have one failure for the lazy hacker" do
27
+ failures = @doc.root.elements.to_a("/testsuite/testcase[@name='Lazy hacker']/failure")
28
+ failures.size.should == 1
29
+ failures.first.attributes["type"].should =~ /ExpectationNotMetError/
30
+ end
31
+
32
+ it "should have one failure for the bad coder" do
33
+ failures = @doc.root.elements.to_a("/testsuite/testcase[@name='Bad coder']/failure")
34
+ failures.size.should == 1
35
+ failures.first.attributes["type"].should == "RuntimeError"
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ci/reporter/cucumber/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "ci_reporter_cucumber"
8
+ spec.version = CI::Reporter::Cucumber::VERSION
9
+ spec.authors = ["Nick Sieger", "Jake Goulding"]
10
+ spec.email = ["nick@nicksieger.com", "jake.goulding@gmail.com"]
11
+ spec.summary = %q{Connects CI::Reporter to Cucumber}
12
+ spec.homepage = "https://github.com/ci-reporter/ci_reporter_cucumber"
13
+ spec.license = "MIT"
14
+
15
+ spec.files = `git ls-files -z`.split("\x0")
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features|acceptance)/})
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_dependency "cucumber", "~> 1.3.3"
21
+ spec.add_dependency "ci_reporter", "2.0.0.alpha1"
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.6"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "rspec", "~> 2.0"
26
+ end
@@ -0,0 +1,7 @@
1
+ module CI
2
+ module Reporter
3
+ class Cucumber
4
+ VERSION = "0.0.1"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,123 @@
1
+ require 'ci/reporter/core'
2
+ require 'cucumber'
3
+ begin
4
+ require 'cucumber/ast/visitor'
5
+ rescue LoadError
6
+ end
7
+
8
+ module CI
9
+ module Reporter
10
+ class CucumberFailure
11
+ attr_reader :step
12
+
13
+ def initialize(step)
14
+ @step = step
15
+ end
16
+
17
+ def failure?
18
+ true
19
+ end
20
+
21
+ def error?
22
+ !failure?
23
+ end
24
+
25
+ def name
26
+ step.exception.class.name
27
+ end
28
+
29
+ def message
30
+ step.exception.message
31
+ end
32
+
33
+ def location
34
+ step.exception.backtrace.join("\n")
35
+ end
36
+ end
37
+
38
+ class Cucumber
39
+ attr_accessor :report_manager, :test_suite, :name
40
+
41
+ def initialize(step_mother, io, options)
42
+ @report_manager = ReportManager.new("features")
43
+ end
44
+
45
+ def before_feature(feature)
46
+ self.test_suite = TestSuite.new(@name)
47
+ test_suite.start
48
+ end
49
+
50
+ def after_feature(feature)
51
+ test_suite.name = @name
52
+ test_suite.finish
53
+ report_manager.write_report(@test_suite)
54
+ @test_suite = nil
55
+ end
56
+
57
+ def before_background(*args)
58
+ end
59
+
60
+ def after_background(*args)
61
+ end
62
+
63
+ def feature_name(keyword, name)
64
+ @name = (name || "Unnamed feature").split("\n").first
65
+ end
66
+
67
+ def scenario_name(keyword, name, *args)
68
+ @scenario = (name || "Unnamed scenario").split("\n").first
69
+ end
70
+
71
+ def before_steps(steps)
72
+ @test_case = TestCase.new(@scenario)
73
+ @test_case.start
74
+ end
75
+
76
+ def after_steps(steps)
77
+ @test_case.finish
78
+
79
+ case steps.status
80
+ when :pending, :undefined
81
+ @test_case.name = "#{@test_case.name} (PENDING)"
82
+ when :skipped
83
+ @test_case.name = "#{@test_case.name} (SKIPPED)"
84
+ when :failed
85
+ @test_case.failures << CucumberFailure.new(steps)
86
+ end
87
+
88
+ test_suite.testcases << @test_case
89
+ @test_case = nil
90
+ end
91
+
92
+ def before_examples(*args)
93
+ @header_row = true
94
+ end
95
+
96
+ def after_examples(*args)
97
+ end
98
+
99
+ def before_table_row(table_row)
100
+ row = table_row # shorthand for table_row
101
+ # check multiple versions of the row and try to find the best fit
102
+ outline = (row.respond_to? :name) ? row.name :
103
+ (row.respond_to? :scenario_outline) ? row.scenario_outline :
104
+ row.to_s
105
+ @test_case = TestCase.new("#@scenario (outline: #{outline})")
106
+ @test_case.start
107
+ end
108
+
109
+ def after_table_row(table_row)
110
+ if @header_row
111
+ @header_row = false
112
+ return
113
+ end
114
+ @test_case.finish
115
+ if table_row.respond_to? :failed?
116
+ @test_case.failures << CucumberFailure.new(table_row) if table_row.failed?
117
+ test_suite.testcases << @test_case
118
+ @test_case = nil
119
+ end
120
+ end
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,13 @@
1
+ require 'ci/reporter/rake/utils'
2
+
3
+ namespace :ci do
4
+ namespace :setup do
5
+ task :cucumber_report_cleanup do
6
+ rm_rf ENV["CI_REPORTS"] || "features/reports"
7
+ end
8
+
9
+ task :cucumber => :cucumber_report_cleanup do
10
+ ENV["CUCUMBER_OPTS"] = "#{ENV['CUCUMBER_OPTS']} --format CI::Reporter::Cucumber"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,2 @@
1
+ $: << File.dirname(__FILE__) + "/../../.."
2
+ require 'ci/reporter/cucumber'
@@ -0,0 +1,226 @@
1
+ require File.dirname(__FILE__) + "/../../spec_helper.rb"
2
+ require 'ci/reporter/cucumber'
3
+
4
+ describe "The Cucumber reporter" do
5
+ describe CI::Reporter::CucumberFailure do
6
+ before(:each) do
7
+ @klass = double("class")
8
+ @klass.stub(:name).and_return("Exception name")
9
+
10
+ @exception = double("exception")
11
+ @exception.stub(:class).and_return(@klass)
12
+ @exception.stub(:message).and_return("Exception message")
13
+ @exception.stub(:backtrace).and_return(["First line", "Second line"])
14
+
15
+ @step = double("step")
16
+ @step.stub(:exception).and_return(@exception)
17
+
18
+ @cucumber_failure = CI::Reporter::CucumberFailure.new(@step)
19
+ end
20
+
21
+ it "should always return true for failure?" do
22
+ @cucumber_failure.should be_failure
23
+ end
24
+
25
+ it "should always return false for error?" do
26
+ @cucumber_failure.should_not be_error
27
+ end
28
+
29
+ it "should propagate the name as the underlying exception's class name" do
30
+ @step.should_receive(:exception)
31
+ @exception.should_receive(:class)
32
+ @klass.should_receive(:name)
33
+
34
+ @cucumber_failure.name.should == "Exception name"
35
+ end
36
+
37
+ it "should propagate the message as the underlying exception's message" do
38
+ @step.should_receive(:exception)
39
+ @exception.should_receive(:message)
40
+
41
+ @cucumber_failure.message.should == "Exception message"
42
+ end
43
+
44
+ it "should propagate and format the exception's backtrace" do
45
+ @step.should_receive(:exception)
46
+ @exception.should_receive(:backtrace)
47
+
48
+ @cucumber_failure.location.should == "First line\nSecond line"
49
+ end
50
+ end
51
+
52
+ describe CI::Reporter::Cucumber do
53
+ before(:each) do
54
+ @step_mother = double("step_mother")
55
+ @io = double("io")
56
+
57
+ @report_manager = double("report_manager")
58
+ CI::Reporter::ReportManager.stub(:new).and_return(@report_manager)
59
+ end
60
+
61
+ def new_instance
62
+ CI::Reporter::Cucumber.new(@step_mother, @io, {})
63
+ end
64
+
65
+ it "should create a new report manager to report on test success/failure" do
66
+ CI::Reporter::ReportManager.should_receive(:new)
67
+ new_instance
68
+ end
69
+
70
+ it "should record the feature name when a new feature is visited" do
71
+ cucumber = new_instance
72
+ cucumber.feature_name(nil, "Some feature name")
73
+ cucumber.name.should == "Some feature name"
74
+ end
75
+
76
+ it "should record only the first line of a feature name" do
77
+ cucumber = new_instance
78
+ cucumber.feature_name(nil, "Some feature name\nLonger description")
79
+ cucumber.name.should == "Some feature name"
80
+ end
81
+
82
+ context "applied to a feature" do
83
+ before(:each) do
84
+ @cucumber = new_instance
85
+ @cucumber.feature_name(nil, "Demo feature")
86
+
87
+ @test_suite = double("test_suite", :start => nil, :finish => nil, :name= => nil)
88
+ CI::Reporter::TestSuite.stub(:new).and_return(@test_suite)
89
+
90
+ @feature = double("feature")
91
+
92
+ @report_manager.stub(:write_report)
93
+ end
94
+
95
+ context "before" do
96
+ it "should create a new test suite" do
97
+ CI::Reporter::TestSuite.should_receive(:new).with(/Demo feature/)
98
+ @cucumber.before_feature(@feature)
99
+ end
100
+
101
+ it "should indicate that the test suite has started" do
102
+ @test_suite.should_receive(:start)
103
+ @cucumber.before_feature(@feature)
104
+ end
105
+ end
106
+
107
+ context "after" do
108
+ before :each do
109
+ @cucumber = new_instance
110
+ @cucumber.feature_name(nil, "Demo feature")
111
+
112
+ @test_suite = double("test_suite", :start => nil, :finish => nil, :name= => nil)
113
+ CI::Reporter::TestSuite.stub(:new).and_return(@test_suite)
114
+
115
+ @feature = double("feature")
116
+
117
+ @report_manager.stub(:write_report)
118
+
119
+ @cucumber.before_feature(@feature)
120
+ end
121
+
122
+ it "should indicate that the test suite has finished" do
123
+ @test_suite.should_receive(:finish)
124
+ @cucumber.after_feature(@feature)
125
+ end
126
+
127
+ it "should ask the report manager to write a report" do
128
+ @report_manager.should_receive(:write_report).with(@test_suite)
129
+ @cucumber.after_feature(@feature)
130
+ end
131
+ end
132
+ end
133
+
134
+ context "inside a scenario" do
135
+ before(:each) do
136
+ @testcases = []
137
+
138
+ @test_suite = double("test_suite", :testcases => @testcases)
139
+
140
+ @cucumber = new_instance
141
+ @cucumber.stub(:test_suite).and_return(@test_suite)
142
+
143
+ @test_case = double("test_case", :start => nil, :finish => nil, :name => "Step Name")
144
+ CI::Reporter::TestCase.stub(:new).and_return(@test_case)
145
+
146
+ @step = double("step", :status => :passed)
147
+ @step.stub(:name).and_return("Step Name")
148
+ end
149
+
150
+ context "before steps" do
151
+ it "should create a new test case" do
152
+ CI::Reporter::TestCase.should_receive(:new).with("Step Name")
153
+ @cucumber.scenario_name(nil, "Step Name")
154
+ @cucumber.before_steps(@step)
155
+ end
156
+
157
+ it "should indicate that the test case has started" do
158
+ @test_case.should_receive(:start)
159
+ @cucumber.before_steps(@step)
160
+ end
161
+ end
162
+
163
+ context "after steps" do
164
+ before :each do
165
+ @cucumber.before_steps(@step)
166
+ end
167
+
168
+ it "should indicate that the test case has finished" do
169
+ @test_case.should_receive(:finish)
170
+ @cucumber.after_steps(@step)
171
+ end
172
+
173
+ it "should add the test case to the suite's list of cases" do
174
+ @testcases.should be_empty
175
+ @cucumber.after_steps(@step)
176
+ @testcases.should_not be_empty
177
+ @testcases.first.should == @test_case
178
+ end
179
+
180
+ it "should alter the name of a test case that is pending to include '(PENDING)'" do
181
+ @step.stub(:status).and_return(:pending)
182
+ @test_case.should_receive(:name=).with("Step Name (PENDING)")
183
+ @cucumber.after_steps(@step)
184
+ end
185
+
186
+ it "should alter the name of a test case that is undefined to include '(PENDING)'" do
187
+ @step.stub(:status).and_return(:undefined)
188
+ @test_case.should_receive(:name=).with("Step Name (PENDING)")
189
+ @cucumber.after_steps(@step)
190
+ end
191
+
192
+ it "should alter the name of a test case that was skipped to include '(SKIPPED)'" do
193
+ @step.stub(:status).and_return(:skipped)
194
+ @test_case.should_receive(:name=).with("Step Name (SKIPPED)")
195
+ @cucumber.after_steps(@step)
196
+ end
197
+ end
198
+
199
+ describe "that fails" do
200
+ before(:each) do
201
+ @step.stub(:status).and_return(:failed)
202
+
203
+ @failures = []
204
+ @test_case.stub(:failures).and_return(@failures)
205
+
206
+ @cucumber.before_steps(@step)
207
+
208
+ @cucumber_failure = double("cucumber_failure")
209
+ CI::Reporter::CucumberFailure.stub(:new).and_return(@cucumber_failure)
210
+ end
211
+
212
+ it "should create a new cucumber failure with that step" do
213
+ CI::Reporter::CucumberFailure.should_receive(:new).with(@step)
214
+ @cucumber.after_steps(@step)
215
+ end
216
+
217
+ it "should add the failure to the suite's list of failures" do
218
+ @failures.should be_empty
219
+ @cucumber.after_steps(@step)
220
+ @failures.should_not be_empty
221
+ @failures.first.should == @cucumber_failure
222
+ end
223
+ end
224
+ end
225
+ end
226
+ end
@@ -0,0 +1,37 @@
1
+ require File.dirname(__FILE__) + "/../../../spec_helper.rb"
2
+ require 'rake'
3
+
4
+ require 'ci/reporter/internal'
5
+ include CI::Reporter::Internal
6
+
7
+ describe "ci_reporter ci:setup:cucumber task" do
8
+ before(:each) do
9
+ @rake = Rake::Application.new
10
+ Rake.application = @rake
11
+ load CI_REPORTER_LIB + '/ci/reporter/rake/cucumber.rb'
12
+ save_env "CI_REPORTS"
13
+ save_env "CUCUMBER_OPTS"
14
+ ENV["CI_REPORTS"] = "some-bogus-nonexistent-directory-that-wont-fail-rm_rf"
15
+ end
16
+ after(:each) do
17
+ restore_env "CUCUMBER_OPTS"
18
+ restore_env "CI_REPORTS"
19
+ Rake.application = nil
20
+ end
21
+
22
+ it "should set ENV['CUCUMBER_OPTS'] to include cucumber formatter args" do
23
+ @rake["ci:setup:cucumber"].invoke
24
+ ENV["CUCUMBER_OPTS"].should =~ /--format\s+CI::Reporter::Cucumber/
25
+ end
26
+
27
+ it "should not set ENV['CUCUMBER_OPTS'] to require cucumber_loader" do
28
+ @rake["ci:setup:cucumber"].invoke
29
+ ENV["CUCUMBER_OPTS"].should_not =~ /.*--require\s+\S*cucumber_loader.*/
30
+ end
31
+
32
+ it "should append to ENV['CUCUMBER_OPTS'] if it already contains a value" do
33
+ ENV["CUCUMBER_OPTS"] = "somevalue".freeze
34
+ @rake["ci:setup:cucumber"].invoke
35
+ ENV["CUCUMBER_OPTS"].should =~ /somevalue.*\s--format\s+CI::Reporter::Cucumber/
36
+ end
37
+ end
@@ -0,0 +1,17 @@
1
+ require 'rubygems'
2
+ begin
3
+ require 'rspec'
4
+ rescue LoadError
5
+ require 'spec'
6
+ end
7
+
8
+ require 'rspec/autorun' if $0 =~ /rcov$/
9
+
10
+ unless defined?(CI_REPORTER_LIB)
11
+ CI_REPORTER_LIB = File.expand_path(File.dirname(__FILE__) + "/../lib")
12
+ $: << CI_REPORTER_LIB
13
+ end
14
+
15
+ require 'ci/reporter/core'
16
+
17
+ REPORTS_DIR = File.dirname(__FILE__) + "/reports" unless defined?(REPORTS_DIR)
metadata ADDED
@@ -0,0 +1,141 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ci_reporter_cucumber
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Nick Sieger
8
+ - Jake Goulding
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-06-13 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: cucumber
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 1.3.3
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 1.3.3
28
+ - !ruby/object:Gem::Dependency
29
+ name: ci_reporter
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '='
33
+ - !ruby/object:Gem::Version
34
+ version: 2.0.0.alpha1
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '='
40
+ - !ruby/object:Gem::Version
41
+ version: 2.0.0.alpha1
42
+ - !ruby/object:Gem::Dependency
43
+ name: bundler
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.6'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.6'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '2.0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '2.0'
84
+ description:
85
+ email:
86
+ - nick@nicksieger.com
87
+ - jake.goulding@gmail.com
88
+ executables: []
89
+ extensions: []
90
+ extra_rdoc_files: []
91
+ files:
92
+ - ".gitignore"
93
+ - ".travis.yml"
94
+ - Gemfile
95
+ - LICENSE.txt
96
+ - README.md
97
+ - Rakefile
98
+ - acceptance/.gitignore
99
+ - acceptance/cucumber/cucumber_example.feature
100
+ - acceptance/cucumber/step_definitions/development_steps.rb
101
+ - acceptance/verification_spec.rb
102
+ - ci_reporter_cucumber.gemspec
103
+ - lib/ci/reporter/cucumber.rb
104
+ - lib/ci/reporter/cucumber/version.rb
105
+ - lib/ci/reporter/rake/cucumber.rb
106
+ - lib/ci/reporter/rake/cucumber_loader.rb
107
+ - spec/ci/reporter/cucumber_spec.rb
108
+ - spec/ci/reporter/rake/rake_tasks_spec.rb
109
+ - spec/spec_helper.rb
110
+ homepage: https://github.com/ci-reporter/ci_reporter_cucumber
111
+ licenses:
112
+ - MIT
113
+ metadata: {}
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ requirements: []
129
+ rubyforge_project:
130
+ rubygems_version: 2.2.2
131
+ signing_key:
132
+ specification_version: 4
133
+ summary: Connects CI::Reporter to Cucumber
134
+ test_files:
135
+ - acceptance/.gitignore
136
+ - acceptance/cucumber/cucumber_example.feature
137
+ - acceptance/cucumber/step_definitions/development_steps.rb
138
+ - acceptance/verification_spec.rb
139
+ - spec/ci/reporter/cucumber_spec.rb
140
+ - spec/ci/reporter/rake/rake_tasks_spec.rb
141
+ - spec/spec_helper.rb