ci_reporter 1.9.3 → 2.0.0.alpha1
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/.gitignore +22 -0
- data/.travis.yml +2 -6
- data/Gemfile +0 -9
- data/History.txt +0 -4
- data/LICENSE.txt +23 -21
- data/README.md +90 -0
- data/Rakefile +5 -99
- data/ci_reporter.gemspec +23 -52
- data/gemfiles/.gitignore +1 -0
- data/lib/ci/reporter/core.rb +0 -4
- data/lib/ci/reporter/internal.rb +31 -0
- data/lib/ci/reporter/rake/utils.rb +0 -4
- data/lib/ci/reporter/report_manager.rb +7 -11
- data/lib/ci/reporter/test_suite.rb +1 -9
- data/lib/ci/reporter/version.rb +1 -7
- data/spec/ci/reporter/output_capture_spec.rb +3 -7
- data/spec/ci/reporter/report_manager_spec.rb +6 -10
- data/spec/ci/reporter/test_suite_spec.rb +0 -4
- data/spec/spec_helper.rb +0 -7
- metadata +29 -138
- data/.gemtest +0 -0
- data/.hoerc +0 -2
- data/.travis.before_install.sh +0 -13
- data/Manifest.txt +0 -50
- data/README.rdoc +0 -111
- data/acceptance/cucumber/cucumber_example.feature +0 -19
- data/acceptance/cucumber/step_definitions/development_steps.rb +0 -40
- data/acceptance/minitest_example_test.rb +0 -17
- data/acceptance/rspec_example_spec.rb +0 -24
- data/acceptance/spinach/features/spinach_example.feature +0 -24
- data/acceptance/spinach/features/steps/example_spinach_feature.rb +0 -34
- data/acceptance/test_unit_example_test.rb +0 -23
- data/acceptance/verification_spec.rb +0 -185
- data/lib/ci/reporter/cucumber.rb +0 -127
- data/lib/ci/reporter/minitest.rb +0 -226
- data/lib/ci/reporter/rake/cucumber.rb +0 -17
- data/lib/ci/reporter/rake/cucumber_loader.rb +0 -6
- data/lib/ci/reporter/rake/minitest.rb +0 -15
- data/lib/ci/reporter/rake/minitest_loader.rb +0 -9
- data/lib/ci/reporter/rake/rspec.rb +0 -31
- data/lib/ci/reporter/rake/rspec_loader.rb +0 -6
- data/lib/ci/reporter/rake/spinach.rb +0 -19
- data/lib/ci/reporter/rake/spinach_loader.rb +0 -5
- data/lib/ci/reporter/rake/test_unit.rb +0 -15
- data/lib/ci/reporter/rake/test_unit_loader.rb +0 -38
- data/lib/ci/reporter/rspec.rb +0 -220
- data/lib/ci/reporter/spinach.rb +0 -80
- data/lib/ci/reporter/test_unit.rb +0 -163
- data/spec/ci/reporter/cucumber_spec.rb +0 -230
- data/spec/ci/reporter/rake/rake_tasks_spec.rb +0 -110
- data/spec/ci/reporter/rspec_spec.rb +0 -156
- data/spec/ci/reporter/test_unit_spec.rb +0 -152
- data/stub.rake +0 -16
- data/tasks/ci_reporter.rake +0 -20
data/.gemtest
DELETED
File without changes
|
data/.hoerc
DELETED
data/.travis.before_install.sh
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
|
3
|
-
set -x
|
4
|
-
|
5
|
-
# Link to pre-built racc for JRuby
|
6
|
-
[ "$TRAVIS_RUBY_VERSION" != "jruby" ] && exit 0
|
7
|
-
rvm 1.9.3 do gem install racc
|
8
|
-
GEMDIR=$(rvm 1.9.3 do gem env gemdir)
|
9
|
-
JRUBY_GEMDIR=$(rvm jruby do gem env gemdir)
|
10
|
-
|
11
|
-
rm -f $JRUBY_GEMDIR/{gems,specifications}/racc*
|
12
|
-
ln -s $GEMDIR/gems/racc-* $JRUBY_GEMDIR/gems/
|
13
|
-
ln -s $GEMDIR/specifications/racc-* $JRUBY_GEMDIR/specifications/
|
data/Manifest.txt
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
.gemtest
|
2
|
-
.hoerc
|
3
|
-
.rspec
|
4
|
-
.travis.before_install.sh
|
5
|
-
.travis.yml
|
6
|
-
Gemfile
|
7
|
-
History.txt
|
8
|
-
LICENSE.txt
|
9
|
-
Manifest.txt
|
10
|
-
README.rdoc
|
11
|
-
Rakefile
|
12
|
-
acceptance/cucumber/cucumber_example.feature
|
13
|
-
acceptance/cucumber/step_definitions/development_steps.rb
|
14
|
-
acceptance/minitest_example_test.rb
|
15
|
-
acceptance/rspec_example_spec.rb
|
16
|
-
acceptance/spinach/features/spinach_example.feature
|
17
|
-
acceptance/spinach/features/steps/example_spinach_feature.rb
|
18
|
-
acceptance/test_unit_example_test.rb
|
19
|
-
acceptance/verification_spec.rb
|
20
|
-
ci_reporter.gemspec
|
21
|
-
lib/ci/reporter/core.rb
|
22
|
-
lib/ci/reporter/cucumber.rb
|
23
|
-
lib/ci/reporter/minitest.rb
|
24
|
-
lib/ci/reporter/rake/cucumber.rb
|
25
|
-
lib/ci/reporter/rake/cucumber_loader.rb
|
26
|
-
lib/ci/reporter/rake/minitest.rb
|
27
|
-
lib/ci/reporter/rake/minitest_loader.rb
|
28
|
-
lib/ci/reporter/rake/rspec.rb
|
29
|
-
lib/ci/reporter/rake/rspec_loader.rb
|
30
|
-
lib/ci/reporter/rake/spinach.rb
|
31
|
-
lib/ci/reporter/rake/spinach_loader.rb
|
32
|
-
lib/ci/reporter/rake/test_unit.rb
|
33
|
-
lib/ci/reporter/rake/test_unit_loader.rb
|
34
|
-
lib/ci/reporter/rake/utils.rb
|
35
|
-
lib/ci/reporter/report_manager.rb
|
36
|
-
lib/ci/reporter/rspec.rb
|
37
|
-
lib/ci/reporter/spinach.rb
|
38
|
-
lib/ci/reporter/test_suite.rb
|
39
|
-
lib/ci/reporter/test_unit.rb
|
40
|
-
lib/ci/reporter/version.rb
|
41
|
-
spec/ci/reporter/cucumber_spec.rb
|
42
|
-
spec/ci/reporter/output_capture_spec.rb
|
43
|
-
spec/ci/reporter/rake/rake_tasks_spec.rb
|
44
|
-
spec/ci/reporter/report_manager_spec.rb
|
45
|
-
spec/ci/reporter/rspec_spec.rb
|
46
|
-
spec/ci/reporter/test_suite_spec.rb
|
47
|
-
spec/ci/reporter/test_unit_spec.rb
|
48
|
-
spec/spec_helper.rb
|
49
|
-
stub.rake
|
50
|
-
tasks/ci_reporter.rake
|
data/README.rdoc
DELETED
@@ -1,111 +0,0 @@
|
|
1
|
-
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.
|
2
|
-
|
3
|
-
== Installation
|
4
|
-
|
5
|
-
CI::Reporter is available as a gem. To install the gem, use the usual gem command:
|
6
|
-
|
7
|
-
gem install ci_reporter
|
8
|
-
|
9
|
-
== Usage
|
10
|
-
|
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 skip to next section.
|
12
|
-
|
13
|
-
1. To use CI::Reporter, simply add one of the following lines to your Rakefile:
|
14
|
-
|
15
|
-
require 'ci/reporter/rake/rspec' # use this if you're using RSpec
|
16
|
-
require 'ci/reporter/rake/cucumber' # use this if you're using Cucumber
|
17
|
-
require 'ci/reporter/rake/spinach' # use this if you're using Spinach
|
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 Ruby 1.9 or minitest
|
20
|
-
|
21
|
-
Note: If you use both cucumber and spinach, you are likely to see strange errors, due to
|
22
|
-
`gherkin` and `gherkin-ruby` both being loaded. So, you should choose only one of
|
23
|
-
cucumber and spinach.
|
24
|
-
|
25
|
-
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:
|
26
|
-
|
27
|
-
rake ci:setup:testunit test
|
28
|
-
rake ci:setup:minitest test
|
29
|
-
rake ci:setup:rspec spec
|
30
|
-
rake ci:setup:cucumber features
|
31
|
-
rake ci:setup:spinach features
|
32
|
-
|
33
|
-
=== Rails
|
34
|
-
|
35
|
-
If you use rails-rspec gem all you need to do is to create new rake task lib/tasks/ci_reporter.rake:
|
36
|
-
|
37
|
-
if ENV['GENERATE_REPORTS'] == 'true'
|
38
|
-
require 'ci/reporter/rake/rspec'
|
39
|
-
task :spec => 'ci:setup:rspec'
|
40
|
-
end
|
41
|
-
|
42
|
-
And then you can either inject this variable in your CI or simply call rspec passing this as one of the parameters:
|
43
|
-
|
44
|
-
rspec ... GENERATE_REPORTS=true
|
45
|
-
|
46
|
-
=== RSpec Formatters
|
47
|
-
|
48
|
-
CI::Reporter has seperate Rake tasks for each builtin RSpec formatter. Depending upon which formatter you would like, call the following corresponding task.
|
49
|
-
|
50
|
-
Progress (default) :: ci:setup:rspec
|
51
|
-
Base :: ci:setup:rspecbase
|
52
|
-
Documentation :: ci:setup:rspecdoc
|
53
|
-
|
54
|
-
|
55
|
-
== Jenkins setup
|
56
|
-
|
57
|
-
1. Tick the box labelled "Publish JUnit test result report" in the job configuration
|
58
|
-
|
59
|
-
2. Enter "test/reports/*.xml,spec/reports/*.xml" in the "Test report XMLs" field (adjust this to suit which tests you are running)
|
60
|
-
|
61
|
-
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.
|
62
|
-
|
63
|
-
|
64
|
-
== Advanced Usage
|
65
|
-
|
66
|
-
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:
|
67
|
-
|
68
|
-
rake -f GEM_PATH/stub.rake ci:setup:testunit test
|
69
|
-
rake -f GEM_PATH/stub.rake ci:setup:minitest test
|
70
|
-
rake -f GEM_PATH/stub.rake ci:setup:rspec spec
|
71
|
-
rake -f GEM_PATH/stub.rake ci:setup:cucumber features
|
72
|
-
rake -f GEM_PATH/stub.rake ci:setup:spinach features
|
73
|
-
|
74
|
-
If for some reason you can't use the above technique to inject CI::Reporter (e.g., you're not using Rake), you'll have to do one of these:
|
75
|
-
|
76
|
-
1. If you're using <code>Test::Unit</code>, ensure the <code>ci/reporter/rake/test_unit_loader.rb</code> file is loaded or required at some point before the tests are run.
|
77
|
-
|
78
|
-
2. If you're using +RSpec+, you'll need to pass the following arguments to the +spec+ command:
|
79
|
-
|
80
|
-
--require GEM_PATH/lib/ci/reporter/rake/rspec_loader
|
81
|
-
--format CI::Reporter::RSpec
|
82
|
-
|
83
|
-
3. If you're using Cucumber, you'll need to cheat slightly so that Cucumber's step definition autoloading will still work. Instead of calling the +cucumber+ script directly, run:
|
84
|
-
|
85
|
-
ruby -r GEM_PATH/lib/ci/reporter/rake/cucumber_loader -S cucumber --format CI::Reporter::Cucumber
|
86
|
-
|
87
|
-
4. If you're using Spinach, you'll want to do this:
|
88
|
-
|
89
|
-
ruby -r GEM_PATH/lib/ci/reporter/rake/spinach_loader -S spinach
|
90
|
-
|
91
|
-
There's a bit of a chicken and egg problem because rubygems needs to be loaded before you can require any CI::Reporter files. If you cringe hard-coding a full path to a specific version of the gem, you can also copy the +cucumber_loader+ file into your project and require it directly -- the contents are version-agnostic and are not likely to change in future releases.
|
92
|
-
|
93
|
-
== Environment Variables
|
94
|
-
|
95
|
-
* +CI_REPORTS+: if set, points to a directory where report files will be written.
|
96
|
-
* +CI_CAPTURE+: if set to value "off", stdout/stderr capture will be disabled.
|
97
|
-
|
98
|
-
== Travis Build Status {<img src="https://secure.travis-ci.org/nicksieger/ci_reporter.png"/>}[http://travis-ci.org/#!/nicksieger/ci_reporter]
|
99
|
-
|
100
|
-
== Source
|
101
|
-
|
102
|
-
You can get the CI::Reporter source using Git, in any of the following ways:
|
103
|
-
|
104
|
-
git clone git://git.caldersphere.net/ci_reporter.git
|
105
|
-
git clone git://github.com/nicksieger/ci_reporter.git
|
106
|
-
|
107
|
-
You can also download a tarball of the latest CI::Reporter source at http://github.com/nicksieger/ci_reporter/.
|
108
|
-
|
109
|
-
== License
|
110
|
-
|
111
|
-
This software is released under an MIT license. For details, see the LICENSE.txt file included with the distribution. The software is copyright (c) 2006-2010 Nick Sieger <nicksieger@gmail.com>.
|
@@ -1,19 +0,0 @@
|
|
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
|
@@ -1,40 +0,0 @@
|
|
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
|
@@ -1,17 +0,0 @@
|
|
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
|
@@ -1,24 +0,0 @@
|
|
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
|
@@ -1,24 +0,0 @@
|
|
1
|
-
Feature: Example Spinach 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
|
20
|
-
|
21
|
-
Scenario: Missing steps
|
22
|
-
Given that I am a lazy hacker
|
23
|
-
And I don't implement steps before I commit
|
24
|
-
Then I should be fired
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'rspec'
|
2
|
-
|
3
|
-
class Spinach::Features::ExampleSpinachFeature < Spinach::FeatureSteps
|
4
|
-
include RSpec::Matchers
|
5
|
-
|
6
|
-
step 'that I am a conscientious developer' do
|
7
|
-
end
|
8
|
-
|
9
|
-
step 'I write cucumber features' do
|
10
|
-
end
|
11
|
-
|
12
|
-
step 'I should see a green bar' do
|
13
|
-
end
|
14
|
-
|
15
|
-
step 'that I am a lazy hacker' do
|
16
|
-
end
|
17
|
-
|
18
|
-
step 'I don\'t bother writing cucumber features' do
|
19
|
-
false.should be_true
|
20
|
-
end
|
21
|
-
|
22
|
-
step 'I should be fired' do
|
23
|
-
end
|
24
|
-
|
25
|
-
step 'that I can\'t code for peanuts' do
|
26
|
-
end
|
27
|
-
|
28
|
-
step 'I write step definitions that throw exceptions' do
|
29
|
-
raise RuntimeError, "User error!"
|
30
|
-
end
|
31
|
-
|
32
|
-
step 'I shouldn\'t be allowed out in public' do
|
33
|
-
end
|
34
|
-
end
|
@@ -1,23 +0,0 @@
|
|
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
|
@@ -1,185 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# Copyright (c) 2006-2013 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 one XML file" do
|
113
|
-
File.exist?(File.join(REPORTS_DIR, 'FEATURES-Example-Cucumber-feature.xml')).should == true
|
114
|
-
|
115
|
-
Dir["#{REPORTS_DIR}/FEATURES-*Cucumber*.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-Cucumber-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
|
145
|
-
|
146
|
-
describe "Spinach acceptance" do
|
147
|
-
it "should generate one XML file" do
|
148
|
-
File.exist?(File.join(REPORTS_DIR, 'FEATURES-Example-Spinach-feature.xml')).should == true
|
149
|
-
|
150
|
-
Dir["#{REPORTS_DIR}/FEATURES-*Spinach*.xml"].length.should == 1
|
151
|
-
end
|
152
|
-
|
153
|
-
context "SPINACH report file" do
|
154
|
-
before :each do
|
155
|
-
@doc = File.open(File.join(REPORTS_DIR, 'FEATURES-Example-Spinach-feature.xml')) do |f|
|
156
|
-
REXML::Document.new(f)
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
it "should have three tests and two failures" do
|
161
|
-
@doc.root.attributes["errors"].should == "2"
|
162
|
-
@doc.root.attributes["failures"].should == "1"
|
163
|
-
@doc.root.attributes["tests"].should == "4"
|
164
|
-
@doc.root.elements.to_a("/testsuite/testcase").size.should == 4
|
165
|
-
end
|
166
|
-
|
167
|
-
it "should have one failure for the lazy hacker" do
|
168
|
-
failures = @doc.root.elements.to_a("/testsuite/testcase[@name='Lazy hacker']/failure")
|
169
|
-
failures.size.should == 1
|
170
|
-
failures.first.attributes["type"].should =~ /ExpectationNotMetError/
|
171
|
-
end
|
172
|
-
|
173
|
-
it "should have one failure for missing steps" do
|
174
|
-
failures = @doc.root.elements.to_a("/testsuite/testcase[@name='Missing steps']/failure")
|
175
|
-
failures.size.should == 1
|
176
|
-
failures.first.attributes["type"].should =~ /StepNotDefinedException/
|
177
|
-
end
|
178
|
-
|
179
|
-
it "should have one failure for the bad coder" do
|
180
|
-
failures = @doc.root.elements.to_a("/testsuite/testcase[@name='Bad coder']/failure")
|
181
|
-
failures.size.should == 1
|
182
|
-
failures.first.attributes["type"].should == "RuntimeError"
|
183
|
-
end
|
184
|
-
end
|
185
|
-
end
|