ci_reporter 1.7.0 → 1.7.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.
File without changes
@@ -0,0 +1,8 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ - jruby-18mode # JRuby in 1.8 mode
5
+ - jruby-19mode # JRuby in 1.9 mode
6
+ branches:
7
+ only:
8
+ - master
data/Gemfile ADDED
@@ -0,0 +1,20 @@
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
+
7
+ source :rubygems
8
+
9
+ gem 'builder'
10
+ group :development do
11
+ gem 'hoe'
12
+ gem 'rubyforge'
13
+ gem 'cucumber'
14
+ gem 'rspec', '> 2.0.0'
15
+ gem 'test-unit', '> 2.0.0'
16
+ gem 'minitest'
17
+ gem 'rcov', :platform => :ruby_18
18
+ gem 'rdoc'
19
+ gem 'jruby-openssl', :platform => :jruby
20
+ end
@@ -0,0 +1,55 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ bouncy-castle-java (1.5.0146.1)
5
+ builder (3.0.0)
6
+ cucumber (0.10.2)
7
+ builder (>= 2.1.2)
8
+ diff-lcs (>= 1.1.2)
9
+ gherkin (>= 2.3.5)
10
+ json (>= 1.4.6)
11
+ term-ansicolor (>= 1.0.5)
12
+ diff-lcs (1.1.3)
13
+ gherkin (2.3.5)
14
+ json (>= 1.4.6)
15
+ gherkin (2.3.5-java)
16
+ json (>= 1.4.6)
17
+ hoe (2.12.4)
18
+ rake (~> 0.8)
19
+ jruby-openssl (0.7.4)
20
+ bouncy-castle-java
21
+ json (1.6.3)
22
+ json (1.6.3-java)
23
+ json_pure (1.6.1)
24
+ minitest (2.2.2)
25
+ rake (0.9.2.2)
26
+ rcov (1.0.0)
27
+ rdoc (3.9.2)
28
+ rspec (2.8.0)
29
+ rspec-core (~> 2.8.0)
30
+ rspec-expectations (~> 2.8.0)
31
+ rspec-mocks (~> 2.8.0)
32
+ rspec-core (2.8.0)
33
+ rspec-expectations (2.8.0)
34
+ diff-lcs (~> 1.1.2)
35
+ rspec-mocks (2.8.0)
36
+ rubyforge (2.0.4)
37
+ json_pure (>= 1.1.7)
38
+ term-ansicolor (1.0.5)
39
+ test-unit (2.3.0)
40
+
41
+ PLATFORMS
42
+ java
43
+ ruby
44
+
45
+ DEPENDENCIES
46
+ builder
47
+ cucumber
48
+ hoe
49
+ jruby-openssl
50
+ minitest
51
+ rcov
52
+ rdoc
53
+ rspec (> 2.0.0)
54
+ rubyforge
55
+ test-unit (> 2.0.0)
@@ -1,3 +1,16 @@
1
+ == 1.7.1 (08/16/12)
2
+
3
+ - #58: Use const_defined? for checking a constant is defined (Kouhei Sutou)
4
+ - #70: Initialize delegate IO for non-tee methods
5
+ - #55: Accommodate 1.8.7 which requires std streams to be subclasses of IO
6
+ - #52: Mark skipped tests as skipped instead of failure
7
+ - #51: Allow for constants to include "Omission" or :Omission (1.8 vs. 1.9).
8
+
9
+ == 1.7.0 (01/28/11)
10
+
11
+ - #39, #49: Minitest support (thanks Alexander Shcherbinin)!
12
+ - #14, #44: fix remaining 1.9 issues
13
+
1
14
  == 1.6.9 (12/14/11)
2
15
 
3
16
  - #49: fix nil to_xs with CI_CAPTURE=off (thanks Sean Walbran)
@@ -1,8 +1,18 @@
1
+ .travis.yml
2
+ Gemfile
3
+ Gemfile.lock
1
4
  History.txt
2
5
  LICENSE.txt
3
6
  Manifest.txt
4
7
  README.rdoc
5
8
  Rakefile
9
+ acceptance/cucumber/cucumber_example.feature
10
+ acceptance/cucumber/step_definitions/development_steps.rb
11
+ acceptance/minitest_example_test.rb
12
+ acceptance/rspec_example_spec.rb
13
+ acceptance/test_unit_example_test.rb
14
+ acceptance/verification_spec.rb
15
+ ci_reporter.gemspec
6
16
  lib/ci/reporter/core.rb
7
17
  lib/ci/reporter/cucumber.rb
8
18
  lib/ci/reporter/minitest.rb
@@ -10,20 +10,29 @@ CI::Reporter is available as a gem. To install the gem, use the usual gem comman
10
10
 
11
11
  CI::Reporter works best with projects that use a +Rakefile+ along with the standard <code>Rake::TestTask</code> or <code>Spec::Rake::SpecTask/RSpec::Core::RakeTask</code> tasks for running tests or examples, respectively. In this fashion, it hooks into <code>Test::Unit</code> or +RSpec+ using environment variables recognized by these custom tasks to inject the CI::Reporter code into the test or spec runs. If you're using the Rails plugin, step 1 is unnecessary; skip to step 2.
12
12
 
13
- 1. To use CI::Reporter, simply add the following lines to your Rakefile:
13
+ 1. To use CI::Reporter, simply add one of the following lines to your Rakefile:
14
14
 
15
- require 'rubygems'
16
15
  require 'ci/reporter/rake/rspec' # use this if you're using RSpec
17
16
  require 'ci/reporter/rake/cucumber' # use this if you're using Cucumber
18
17
  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
18
+ require 'ci/reporter/rake/minitest' # use this if you're using Ruby 1.9 or minitest
20
19
 
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.
20
+ 2. Next, either modify your Rakefile to make the <code>ci:setup:rspec</code>, <code>ci:setup:cucumber</code>, <code>ci:setup:testunit</code> or <code>ci:setup:minitest</code> task a dependency of your test tasks, or run one of these rake tasks:
22
21
 
23
22
  rake ci:setup:testunit test
23
+ rake ci:setup:minitest test
24
+ rake ci:setup:rspec spec
25
+ rake ci:setup:cucumber features
26
+
27
+ == Jenkins setup
28
+
29
+ 1. Tick the box labelled "Publish JUnit test result report" in the job configuration
30
+
31
+ 2. Enter "test/reports/*.xml,spec/reports/*.xml" in the "Test report XMLs" field (adjust this to suit which tests you are running)
24
32
 
25
33
  Report files are written, by default, to the <code>test/reports</code>, <code>features/reports</code> or <code>spec/reports</code> subdirectory of your project. If you wish to customize the location, simply set the environment variable CI_REPORTS (either in the environment, on the Rake command line, or in your Rakefile) to the location where they should go.
26
34
 
35
+
27
36
  == Advanced Usage
28
37
 
29
38
  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:
data/Rakefile CHANGED
@@ -6,11 +6,7 @@
6
6
 
7
7
  require 'bundler/setup'
8
8
 
9
- MANIFEST = FileList["History.txt", "Manifest.txt", "README.rdoc", "LICENSE.txt", "Rakefile",
10
- "*.rake", "lib/**/*.rb", "spec/**/*.rb", "tasks/**/*.rake"]
11
-
12
9
  begin
13
- File.open("Manifest.txt", "w") {|f| MANIFEST.sort.each {|n| f << "#{n}\n"} }
14
10
  require 'hoe'
15
11
  Hoe.plugin :rubyforge
16
12
  require File.dirname(__FILE__) + '/lib/ci/reporter/version'
@@ -28,8 +24,8 @@ begin
28
24
  p.extra_rdoc_files += ["README.rdoc"]
29
25
  p.test_globs = ["spec/**/*_spec.rb"]
30
26
  p.extra_deps << ['builder', ">= 2.1.2"]
27
+ p.clean_globs += ["spec/reports", "acceptance/reports"]
31
28
  end
32
- hoe.spec.files = MANIFEST
33
29
  hoe.spec.rdoc_options += ["-SHN", "-f", "darkfish"]
34
30
 
35
31
  task :gemspec do
@@ -0,0 +1,19 @@
1
+ Feature: Example 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,40 @@
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
+
7
+ begin
8
+ require 'rspec/expectations'
9
+ rescue LoadError
10
+ require 'spec/expectations'
11
+ end
12
+
13
+ Given /^that I am a conscientious developer$/ do
14
+ end
15
+
16
+ Given /^I write cucumber features$/ do
17
+ end
18
+
19
+ Then /^I should see a green bar$/ do
20
+ end
21
+
22
+ Given /^that I am a lazy hacker$/ do
23
+ end
24
+
25
+ Given /^I don't bother writing cucumber features$/ do
26
+ false.should be_true
27
+ end
28
+
29
+ Then /^I should be fired$/ do
30
+ end
31
+
32
+ Given /^that I can't code for peanuts$/ do
33
+ end
34
+
35
+ Given /^I write step definitions that throw exceptions$/ do
36
+ raise RuntimeError, "User error!"
37
+ end
38
+
39
+ Then /^I shouldn't be allowed out in public$/ do
40
+ end
@@ -0,0 +1,17 @@
1
+ require 'minitest/autorun'
2
+
3
+ class MiniTestExampleTestOne < MiniTest::Unit::TestCase
4
+ def test_one
5
+ puts "Some <![CDATA[on stdout]]>"
6
+ assert false
7
+ end
8
+ def teardown
9
+ raise "second failure"
10
+ end
11
+ end
12
+
13
+ class MiniTestExampleTestTwo < MiniTest::Unit::TestCase
14
+ def test_two
15
+ assert true
16
+ end
17
+ end
@@ -0,0 +1,24 @@
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
+
7
+ describe "RSpec example" do
8
+ it "should succeed" do
9
+ true.should be_true
10
+ nil.should be_nil
11
+ end
12
+
13
+ it "should fail" do
14
+ true.should be_false
15
+ end
16
+
17
+ it "should be pending"
18
+
19
+ describe "nested" do
20
+ it "should succeed" do
21
+ true.should be_true
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,23 @@
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
+
7
+ require 'test/unit'
8
+
9
+ class TestUnitExampleTestOne < Test::Unit::TestCase
10
+ def test_one
11
+ puts "Some <![CDATA[on stdout]]>"
12
+ assert(false, "First failure")
13
+ end
14
+ def teardown
15
+ raise "second failure"
16
+ end
17
+ end
18
+
19
+ class TestUnitExampleTestTwo < Test::Unit::TestCase
20
+ def test_two
21
+ assert true
22
+ end
23
+ end
@@ -0,0 +1,144 @@
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
+
7
+ require 'rexml/document'
8
+
9
+ REPORTS_DIR = File.dirname(__FILE__) + '/reports'
10
+
11
+ describe "Test::Unit acceptance" do
12
+ it "should generate two XML files" do
13
+ File.exist?(File.join(REPORTS_DIR, 'TEST-TestUnitExampleTestOne.xml')).should == true
14
+ File.exist?(File.join(REPORTS_DIR, 'TEST-TestUnitExampleTestTwo.xml')).should == true
15
+ end
16
+
17
+ it "should have one error and one failure for TestUnitExampleTestOne" do
18
+ doc = File.open(File.join(REPORTS_DIR, 'TEST-TestUnitExampleTestOne.xml')) do |f|
19
+ REXML::Document.new(f)
20
+ end
21
+ doc.root.attributes["errors"].should == "1"
22
+ doc.root.attributes["failures"].should == "1"
23
+ doc.root.attributes["assertions"].should == "1"
24
+ doc.root.attributes["tests"].should == "1"
25
+ doc.root.elements.to_a("/testsuite/testcase").size.should == 1
26
+ doc.root.elements.to_a("/testsuite/testcase/error").size.should == 1
27
+ doc.root.elements.to_a("/testsuite/testcase/failure").size.should == 1
28
+ doc.root.elements.to_a("/testsuite/system-out").first.texts.inject("") do |c,e|
29
+ c << e.value; c
30
+ end.strip.should == "Some <![CDATA[on stdout]]>"
31
+ end
32
+
33
+ it "should have no errors or failures for TestUnitExampleTestTwo" do
34
+ doc = File.open(File.join(REPORTS_DIR, 'TEST-TestUnitExampleTestTwo.xml')) do |f|
35
+ REXML::Document.new(f)
36
+ end
37
+ doc.root.attributes["errors"].should == "0"
38
+ doc.root.attributes["failures"].should == "0"
39
+ doc.root.attributes["assertions"].should == "1"
40
+ doc.root.attributes["tests"].should == "1"
41
+ doc.root.elements.to_a("/testsuite/testcase").size.should == 1
42
+ doc.root.elements.to_a("/testsuite/testcase/failure").size.should == 0
43
+ end
44
+ end
45
+
46
+ describe "MiniTest::Unit acceptance" do
47
+ it "should generate two XML files" do
48
+ File.exist?(File.join(REPORTS_DIR, 'TEST-MiniTestExampleTestOne.xml')).should == true
49
+ File.exist?(File.join(REPORTS_DIR, 'TEST-MiniTestExampleTestTwo.xml')).should == true
50
+ end
51
+
52
+ it "should have one error and one failure for MiniTestExampleTestOne" do
53
+ doc = File.open(File.join(REPORTS_DIR, 'TEST-MiniTestExampleTestOne.xml')) do |f|
54
+ REXML::Document.new(f)
55
+ end
56
+ doc.root.attributes["errors"].should == "1"
57
+ doc.root.attributes["failures"].should == "1"
58
+ doc.root.attributes["assertions"].should == "1"
59
+ doc.root.attributes["tests"].should == "1"
60
+ doc.root.elements.to_a("/testsuite/testcase").size.should == 1
61
+ doc.root.elements.to_a("/testsuite/testcase/error").size.should == 1
62
+ doc.root.elements.to_a("/testsuite/testcase/failure").size.should == 1
63
+ doc.root.elements.to_a("/testsuite/system-out").first.texts.inject("") do |c,e|
64
+ c << e.value; c
65
+ end.strip.should == "Some <![CDATA[on stdout]]>"
66
+ end
67
+
68
+ it "should have no errors or failures for MiniTestExampleTestTwo" do
69
+ doc = File.open(File.join(REPORTS_DIR, 'TEST-MiniTestExampleTestTwo.xml')) do |f|
70
+ REXML::Document.new(f)
71
+ end
72
+ doc.root.attributes["errors"].should == "0"
73
+ doc.root.attributes["failures"].should == "0"
74
+ doc.root.attributes["assertions"].should == "1"
75
+ doc.root.attributes["tests"].should == "1"
76
+ doc.root.elements.to_a("/testsuite/testcase").size.should == 1
77
+ doc.root.elements.to_a("/testsuite/testcase/failure").size.should == 0
78
+ end
79
+ end
80
+
81
+ describe "RSpec acceptance" do
82
+ it "should generate two XML files" do
83
+ File.exist?(File.join(REPORTS_DIR, 'SPEC-RSpec-example.xml')).should == true
84
+ File.exist?(File.join(REPORTS_DIR, 'SPEC-RSpec-example-nested.xml')).should == true
85
+ end
86
+
87
+ it "should have two tests and one failure" do
88
+ doc = File.open(File.join(REPORTS_DIR, 'SPEC-RSpec-example.xml')) do |f|
89
+ REXML::Document.new(f)
90
+ end
91
+ doc.root.attributes["errors"].should == "0"
92
+ doc.root.attributes["failures"].should == "1"
93
+ doc.root.attributes["tests"].should == "3"
94
+ doc.root.elements.to_a("/testsuite/testcase").size.should == 3
95
+ failures = doc.root.elements.to_a("/testsuite/testcase/failure")
96
+ failures.size.should == 1
97
+ failures.first.attributes["type"].should =~ /ExpectationNotMetError/
98
+ end
99
+
100
+ it "should have one test in the nested example report" do
101
+ doc = File.open(File.join(REPORTS_DIR, 'SPEC-RSpec-example-nested.xml')) do |f|
102
+ REXML::Document.new(f)
103
+ end
104
+ doc.root.attributes["errors"].should == "0"
105
+ doc.root.attributes["failures"].should == "0"
106
+ doc.root.attributes["tests"].should == "1"
107
+ doc.root.elements.to_a("/testsuite/testcase").size.should == 1
108
+ end
109
+ end
110
+
111
+ describe "Cucumber acceptance" do
112
+ it "should generate three XML files" do
113
+ File.exist?(File.join(REPORTS_DIR, 'FEATURES-Example-feature.xml')).should == true
114
+
115
+ Dir["#{REPORTS_DIR}/FEATURES-*.xml"].length.should == 1
116
+ end
117
+
118
+ context "FEATURES report file" do
119
+ before :each do
120
+ @doc = File.open(File.join(REPORTS_DIR, 'FEATURES-Example-feature.xml')) do |f|
121
+ REXML::Document.new(f)
122
+ end
123
+ end
124
+
125
+ it "should have three tests and two failures" do
126
+ @doc.root.attributes["errors"].should == "0"
127
+ @doc.root.attributes["failures"].should == "2"
128
+ @doc.root.attributes["tests"].should == "3"
129
+ @doc.root.elements.to_a("/testsuite/testcase").size.should == 3
130
+ end
131
+
132
+ it "should have one failure for the lazy hacker" do
133
+ failures = @doc.root.elements.to_a("/testsuite/testcase[@name='Lazy hacker']/failure")
134
+ failures.size.should == 1
135
+ failures.first.attributes["type"].should =~ /ExpectationNotMetError/
136
+ end
137
+
138
+ it "should have one failure for the bad coder" do
139
+ failures = @doc.root.elements.to_a("/testsuite/testcase[@name='Bad coder']/failure")
140
+ failures.size.should == 1
141
+ failures.first.attributes["type"].should == "RuntimeError"
142
+ end
143
+ end
144
+ end
@@ -0,0 +1,42 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "ci_reporter"
5
+ s.version = "1.7.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Nick Sieger"]
9
+ s.date = "2012-08-16"
10
+ s.description = "CI::Reporter is an add-on to Test::Unit, RSpec and Cucumber that allows you to generate XML reports of your test, spec and/or feature runs. The resulting files can be read by a continuous integration system that understands Ant's JUnit report XML format, thus allowing your CI system to track test/spec successes and failures."
11
+ s.email = "nick@nicksieger.com"
12
+ s.extra_rdoc_files = ["History.txt", "LICENSE.txt", "Manifest.txt", "README.rdoc"]
13
+ s.files = [".travis.yml", "Gemfile", "Gemfile.lock", "History.txt", "LICENSE.txt", "Manifest.txt", "README.rdoc", "Rakefile", "acceptance/cucumber/cucumber_example.feature", "acceptance/cucumber/step_definitions/development_steps.rb", "acceptance/minitest_example_test.rb", "acceptance/rspec_example_spec.rb", "acceptance/test_unit_example_test.rb", "acceptance/verification_spec.rb", "ci_reporter.gemspec", "lib/ci/reporter/core.rb", "lib/ci/reporter/cucumber.rb", "lib/ci/reporter/minitest.rb", "lib/ci/reporter/rake/cucumber.rb", "lib/ci/reporter/rake/cucumber_loader.rb", "lib/ci/reporter/rake/minitest.rb", "lib/ci/reporter/rake/minitest_loader.rb", "lib/ci/reporter/rake/rspec.rb", "lib/ci/reporter/rake/rspec_loader.rb", "lib/ci/reporter/rake/test_unit.rb", "lib/ci/reporter/rake/test_unit_loader.rb", "lib/ci/reporter/rake/utils.rb", "lib/ci/reporter/report_manager.rb", "lib/ci/reporter/rspec.rb", "lib/ci/reporter/test_suite.rb", "lib/ci/reporter/test_unit.rb", "lib/ci/reporter/version.rb", "spec/ci/reporter/cucumber_spec.rb", "spec/ci/reporter/output_capture_spec.rb", "spec/ci/reporter/rake/rake_tasks_spec.rb", "spec/ci/reporter/report_manager_spec.rb", "spec/ci/reporter/rspec_spec.rb", "spec/ci/reporter/test_suite_spec.rb", "spec/ci/reporter/test_unit_spec.rb", "spec/spec_helper.rb", "stub.rake", "tasks/ci_reporter.rake", ".gemtest"]
14
+ s.homepage = "http://caldersphere.rubyforge.org/ci_reporter"
15
+ s.rdoc_options = ["--main", "README.rdoc", "-SHN", "-f", "darkfish"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = "caldersphere"
18
+ s.rubygems_version = "1.8.15"
19
+ s.summary = "CI::Reporter allows you to generate reams of XML for use with continuous integration systems."
20
+ s.test_files = ["spec/ci/reporter/cucumber_spec.rb", "spec/ci/reporter/output_capture_spec.rb", "spec/ci/reporter/report_manager_spec.rb", "spec/ci/reporter/rspec_spec.rb", "spec/ci/reporter/test_suite_spec.rb", "spec/ci/reporter/test_unit_spec.rb", "spec/ci/reporter/rake/rake_tasks_spec.rb"]
21
+
22
+ if s.respond_to? :specification_version then
23
+ s.specification_version = 3
24
+
25
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
+ s.add_runtime_dependency(%q<builder>, [">= 2.1.2"])
27
+ s.add_development_dependency(%q<rubyforge>, [">= 2.0.4"])
28
+ s.add_development_dependency(%q<hoe>, ["~> 2.12"])
29
+ s.add_development_dependency(%q<rdoc>, ["~> 3.10"])
30
+ else
31
+ s.add_dependency(%q<builder>, [">= 2.1.2"])
32
+ s.add_dependency(%q<rubyforge>, [">= 2.0.4"])
33
+ s.add_dependency(%q<hoe>, ["~> 2.12"])
34
+ s.add_dependency(%q<rdoc>, ["~> 3.10"])
35
+ end
36
+ else
37
+ s.add_dependency(%q<builder>, [">= 2.1.2"])
38
+ s.add_dependency(%q<rubyforge>, [">= 2.0.4"])
39
+ s.add_dependency(%q<hoe>, ["~> 2.12"])
40
+ s.add_dependency(%q<rdoc>, ["~> 3.10"])
41
+ end
42
+ end
@@ -211,7 +211,11 @@ module CI
211
211
 
212
212
  def fault(fault, type = nil, meth = nil)
213
213
  tc = @current_suite.testcases.last
214
- tc.failures << Failure.new(fault, type, meth)
214
+ if :skip == type
215
+ tc.skipped = true
216
+ else
217
+ tc.failures << Failure.new(fault, type, meth)
218
+ end
215
219
  end
216
220
 
217
221
  end
@@ -43,16 +43,20 @@ module CI
43
43
  !failure?
44
44
  end
45
45
 
46
- def name() @example.metadata[:execution_result][:exception].class.name end
47
- def message() @example.metadata[:execution_result][:exception].message end
48
- def location() @example.metadata[:execution_result][:exception].backtrace.join("\n") end
46
+ def name() exception.class.name end
47
+ def message() exception.message end
48
+ def location() (exception.backtrace || ["No backtrace available"]).join("\n") end
49
49
  end
50
50
 
51
51
  class RSpec2Failure < RSpecFailure
52
52
  def initialize(example, formatter)
53
53
  @formatter = formatter
54
54
  @example = example
55
- @exception = @example.execution_result[:exception] || @example.execution_result[:exception_encountered]
55
+ if @example.respond_to?(:execution_result)
56
+ @exception = @example.execution_result[:exception] || @example.execution_result[:exception_encountered]
57
+ else
58
+ @exception = @example.metadata[:execution_result][:exception]
59
+ end
56
60
  end
57
61
 
58
62
  def name
@@ -8,10 +8,25 @@ require 'stringio'
8
8
  module CI
9
9
  module Reporter
10
10
  # Emulates/delegates IO to $stdout or $stderr in order to capture output to report in the XML file.
11
- class OutputCapture < DelegateClass(IO)
11
+ module OutputCapture
12
+ class Delegate < DelegateClass(IO)
13
+ include OutputCapture
14
+ def initialize(io, &assign)
15
+ super(io)
16
+ capture(io, &assign)
17
+ end
18
+ end
19
+
20
+ def self.wrap(io, &assign)
21
+ if defined?(RUBY_ENGINE) # JRuby, Ruby 1.9, etc.
22
+ Delegate.new(io, &assign)
23
+ else # Ruby 1.8 requires streams to be subclass of IO
24
+ IO.new(io.fileno, "w").tap {|x| x.extend self; x.capture(io, &assign) }
25
+ end
26
+ end
27
+
12
28
  # Start capturing IO, using the given block to assign self to the proper IO global.
13
- def initialize(io, &assign)
14
- super
29
+ def capture(io, &assign)
15
30
  @delegate_io = io
16
31
  @captured_io = StringIO.new
17
32
  @assign_block = assign
@@ -48,8 +63,8 @@ module CI
48
63
  def start
49
64
  @start = Time.now
50
65
  unless ENV['CI_CAPTURE'] == "off"
51
- @capture_out = OutputCapture.new($stdout) {|io| $stdout = io }
52
- @capture_err = OutputCapture.new($stderr) {|io| $stderr = io }
66
+ @capture_out = OutputCapture.wrap($stdout) {|io| $stdout = io }
67
+ @capture_err = OutputCapture.wrap($stderr) {|io| $stderr = io }
53
68
  end
54
69
  end
55
70
 
@@ -13,8 +13,8 @@ module CI
13
13
  class Failure
14
14
  def self.new(fault)
15
15
  return TestUnitFailure.new(fault) if fault.kind_of?(Test::Unit::Failure)
16
- return TestUnitSkipped.new(fault) if Test::Unit.constants.include?("Omission") && (fault.kind_of?(Test::Unit::Omission) || fault.kind_of?(Test::Unit::Pending))
17
- return TestUnitNotification.new(fault) if Test::Unit.constants.include?("Notification") && fault.kind_of?(Test::Unit::Notification)
16
+ return TestUnitSkipped.new(fault) if Test::Unit.const_defined?(:Omission) && (fault.kind_of?(Test::Unit::Omission) || fault.kind_of?(Test::Unit::Pending))
17
+ return TestUnitNotification.new(fault) if Test::Unit.const_defined?(:Notification) && fault.kind_of?(Test::Unit::Notification)
18
18
  TestUnitError.new(fault)
19
19
  end
20
20
  end
@@ -6,6 +6,6 @@
6
6
 
7
7
  module CI
8
8
  module Reporter
9
- VERSION = "1.7.0"
9
+ VERSION = "1.7.1"
10
10
  end
11
11
  end
metadata CHANGED
@@ -1,144 +1,155 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ci_reporter
3
- version: !ruby/object:Gem::Version
4
- version: 1.7.0
3
+ version: !ruby/object:Gem::Version
5
4
  prerelease:
5
+ version: 1.7.1
6
6
  platform: ruby
7
- authors:
8
- - Nick Sieger
7
+ authors:
8
+ - Nick Sieger
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
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.
12
+
13
+ date: 2012-08-16 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: builder
17
+ version_requirements: &id001 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.1.2
23
+ requirement: *id001
24
+ prerelease: false
25
+ type: :runtime
26
+ - !ruby/object:Gem::Dependency
27
+ name: rubyforge
28
+ version_requirements: &id002 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.0.4
34
+ requirement: *id002
35
+ prerelease: false
36
+ type: :development
37
+ - !ruby/object:Gem::Dependency
38
+ name: hoe
39
+ version_requirements: &id003 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ version: "2.12"
45
+ requirement: *id003
46
+ prerelease: false
47
+ type: :development
48
+ - !ruby/object:Gem::Dependency
49
+ name: rdoc
50
+ version_requirements: &id004 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: "3.10"
56
+ requirement: *id004
57
+ prerelease: false
58
+ type: :development
59
+ description: CI::Reporter is an add-on to Test::Unit, RSpec and Cucumber that allows you to generate XML reports of your test, spec and/or feature runs. The resulting files can be read by a continuous integration system that understands Ant's JUnit report XML format, thus allowing your CI system to track test/spec successes and failures.
63
60
  email: nick@nicksieger.com
64
61
  executables: []
62
+
65
63
  extensions: []
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
64
+
65
+ extra_rdoc_files:
66
+ - History.txt
67
+ - LICENSE.txt
68
+ - Manifest.txt
69
+ - README.rdoc
70
+ files:
71
+ - .travis.yml
72
+ - Gemfile
73
+ - Gemfile.lock
74
+ - History.txt
75
+ - LICENSE.txt
76
+ - Manifest.txt
77
+ - README.rdoc
78
+ - Rakefile
79
+ - acceptance/cucumber/cucumber_example.feature
80
+ - acceptance/cucumber/step_definitions/development_steps.rb
81
+ - acceptance/minitest_example_test.rb
82
+ - acceptance/rspec_example_spec.rb
83
+ - acceptance/test_unit_example_test.rb
84
+ - acceptance/verification_spec.rb
85
+ - ci_reporter.gemspec
86
+ - lib/ci/reporter/core.rb
87
+ - lib/ci/reporter/cucumber.rb
88
+ - lib/ci/reporter/minitest.rb
89
+ - lib/ci/reporter/rake/cucumber.rb
90
+ - lib/ci/reporter/rake/cucumber_loader.rb
91
+ - lib/ci/reporter/rake/minitest.rb
92
+ - lib/ci/reporter/rake/minitest_loader.rb
93
+ - lib/ci/reporter/rake/rspec.rb
94
+ - lib/ci/reporter/rake/rspec_loader.rb
95
+ - lib/ci/reporter/rake/test_unit.rb
96
+ - lib/ci/reporter/rake/test_unit_loader.rb
97
+ - lib/ci/reporter/rake/utils.rb
98
+ - lib/ci/reporter/report_manager.rb
99
+ - lib/ci/reporter/rspec.rb
100
+ - lib/ci/reporter/test_suite.rb
101
+ - lib/ci/reporter/test_unit.rb
102
+ - lib/ci/reporter/version.rb
103
+ - spec/ci/reporter/cucumber_spec.rb
104
+ - spec/ci/reporter/output_capture_spec.rb
105
+ - spec/ci/reporter/rake/rake_tasks_spec.rb
106
+ - spec/ci/reporter/report_manager_spec.rb
107
+ - spec/ci/reporter/rspec_spec.rb
108
+ - spec/ci/reporter/test_suite_spec.rb
109
+ - spec/ci/reporter/test_unit_spec.rb
110
+ - spec/spec_helper.rb
111
+ - stub.rake
112
+ - tasks/ci_reporter.rake
113
+ - .gemtest
104
114
  homepage: http://caldersphere.rubyforge.org/ci_reporter
105
115
  licenses: []
116
+
106
117
  post_install_message:
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
118
+ rdoc_options:
119
+ - --main
120
+ - README.rdoc
121
+ - -SHN
122
+ - -f
123
+ - darkfish
124
+ require_paths:
125
+ - lib
126
+ required_ruby_version: !ruby/object:Gem::Requirement
116
127
  none: false
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
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ hash: 2
132
+ segments:
133
+ - 0
134
+ version: "0"
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
125
136
  none: false
126
- requirements:
127
- - - ! '>='
128
- - !ruby/object:Gem::Version
129
- version: '0'
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: "0"
130
141
  requirements: []
142
+
131
143
  rubyforge_project: caldersphere
132
- rubygems_version: 1.8.6
144
+ rubygems_version: 1.8.15
133
145
  signing_key:
134
146
  specification_version: 3
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
147
+ summary: CI::Reporter allows you to generate reams of XML for use with continuous integration systems.
148
+ test_files:
149
+ - spec/ci/reporter/cucumber_spec.rb
150
+ - spec/ci/reporter/output_capture_spec.rb
151
+ - spec/ci/reporter/report_manager_spec.rb
152
+ - spec/ci/reporter/rspec_spec.rb
153
+ - spec/ci/reporter/test_suite_spec.rb
154
+ - spec/ci/reporter/test_unit_spec.rb
155
+ - spec/ci/reporter/rake/rake_tasks_spec.rb