ci_reporter 1.0 → 1.1

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ == 1.1
2
+
3
+ - Add +assertions+ attribute to the +testsuite+ element that will contain per-suite assertion counts when used with Test::Unit. Not useful with applications that read Ant/JUnit XML, but custom applications may wish to access it.
4
+
1
5
  == 1.0
2
6
 
3
7
  Initial Release.
data/README.txt CHANGED
@@ -33,9 +33,11 @@ CI::Reporter works best with projects that use a +Rakefile+ along with the stand
33
33
 
34
34
  rake ci:setup:testunit test
35
35
 
36
+ Report files are written, by default, to the <code>test/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.
37
+
36
38
  == Advanced Usage
37
39
 
38
- If for some reason you can't use the above technique to inject CI::Reporter, you'll have to do one of these:
40
+ 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:
39
41
 
40
42
  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.
41
43
  2. If you're using +RSpec+, you'll need to pass the following arguments to the +spec+ command:
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ require 'hoe'
4
4
  MANIFEST = FileList["History.txt", "Manifest.txt", "README.txt", "Rakefile",
5
5
  "lib/**/*.rb", "spec/**/*.rb", "tasks/**/*.rake"]
6
6
 
7
- Hoe.new("ci_reporter", "1.0") do |p|
7
+ Hoe.new("ci_reporter", "1.1") do |p|
8
8
  p.rubyforge_name = "caldersphere"
9
9
  p.url = "http://caldersphere.rubyforge.org/ci_reporter"
10
10
  p.author = "Nick Sieger"
@@ -1,7 +1,7 @@
1
1
  module CI
2
2
  module Reporter
3
3
  # Basic structure representing the running of a test suite. Used to time tests and store results.
4
- class TestSuite < Struct.new(:name, :tests, :time, :failures, :errors)
4
+ class TestSuite < Struct.new(:name, :tests, :time, :failures, :errors, :assertions)
5
5
  attr_accessor :testcases
6
6
  def initialize(name)
7
7
  super
@@ -53,7 +53,7 @@ module CI
53
53
  end
54
54
  builder.instruct!
55
55
  attrs = {}
56
- each_pair {|k,v| attrs[k] = builder.trunc!(v.to_s) }
56
+ each_pair {|k,v| attrs[k] = builder.trunc!(v.to_s) unless v.nil? || v.to_s.empty? }
57
57
  builder.testsuite(attrs) do
58
58
  @testcases.each do |tc|
59
59
  tc.to_xml(builder)
@@ -49,6 +49,8 @@ module CI
49
49
  end
50
50
 
51
51
  def started(result)
52
+ @suite_result = result
53
+ @last_assertion_count = 0
52
54
  @current_suite = nil
53
55
  @unknown_count = 0
54
56
  end
@@ -93,6 +95,8 @@ module CI
93
95
  def finish_suite
94
96
  if @current_suite
95
97
  @current_suite.finish
98
+ @current_suite.assertions = @suite_result.assertion_count - @last_assertion_count
99
+ @last_assertion_count = @suite_result.assertion_count
96
100
  @report_manager.write_report(@current_suite)
97
101
  end
98
102
  end
@@ -45,6 +45,7 @@ end
45
45
  context "TestSuite xml" do
46
46
  setup do
47
47
  @suite = CI::Reporter::TestSuite.new("example suite")
48
+ @suite.assertions = 11
48
49
  begin
49
50
  raise StandardError, "an exception occurred"
50
51
  rescue => e
@@ -77,11 +78,13 @@ context "TestSuite xml" do
77
78
 
78
79
  xml = @suite.to_xml
79
80
  doc = REXML::Document.new(xml)
80
- testsuite = doc.root.elements.to_a('/testsuite')
81
+ testsuite = doc.root.elements.to_a("/testsuite")
81
82
  testsuite.length.should == 1
82
83
  testsuite = testsuite.first
84
+ testsuite.attributes["name"].should == "example suite"
85
+ testsuite.attributes["assertions"].should == "11"
83
86
 
84
- testcases = testsuite.elements.to_a('testcase')
87
+ testcases = testsuite.elements.to_a("testcase")
85
88
  testcases.length.should == 3
86
89
  end
87
90
 
@@ -4,13 +4,15 @@ context "The TestUnit reporter" do
4
4
  setup do
5
5
  @report_mgr = mock("report manager")
6
6
  @testunit = CI::Reporter::TestUnit.new(nil, @report_mgr)
7
+ @result = mock("result")
8
+ @result.stub!(:assertion_count).and_return(7)
7
9
  end
8
10
 
9
11
  specify "should build suites based on adjacent tests with the same class name" do
10
12
  @suite = nil
11
13
  @report_mgr.should_receive(:write_report).once.and_return {|suite| @suite = suite }
12
14
 
13
- @testunit.started(mock("result"))
15
+ @testunit.started(@result)
14
16
  @testunit.test_started("test_one(TestCaseClass)")
15
17
  @testunit.test_finished("test_one(TestCaseClass)")
16
18
  @testunit.test_started("test_two(TestCaseClass)")
@@ -31,7 +33,7 @@ context "The TestUnit reporter" do
31
33
  @suites = []
32
34
  @report_mgr.should_receive(:write_report).twice.and_return {|suite| @suites << suite }
33
35
 
34
- @testunit.started(mock("result"))
36
+ @testunit.started(@result)
35
37
  @testunit.test_started("test_one(TestCaseClass)")
36
38
  @testunit.test_finished("test_one(TestCaseClass)")
37
39
  @testunit.test_started("test_two(AnotherTestCaseClass)")
@@ -46,6 +48,18 @@ context "The TestUnit reporter" do
46
48
  @suites.last.testcases.first.name.should == "test_two"
47
49
  end
48
50
 
51
+ specify "should record assertion counts during test run" do
52
+ @suite = nil
53
+ @report_mgr.should_receive(:write_report).and_return {|suite| @suite = suite }
54
+
55
+ @testunit.started(@result)
56
+ @testunit.test_started("test_one(TestCaseClass)")
57
+ @testunit.test_finished("test_one(TestCaseClass)")
58
+ @testunit.finished(10)
59
+
60
+ @suite.assertions.should == 7
61
+ end
62
+
49
63
  specify "should add failures to testcases when encountering a fault" do
50
64
  begin
51
65
  raise StandardError, "error"
@@ -56,7 +70,7 @@ context "The TestUnit reporter" do
56
70
  @suite = nil
57
71
  @report_mgr.should_receive(:write_report).once.and_return {|suite| @suite = suite }
58
72
 
59
- @testunit.started(mock("result"))
73
+ @testunit.started(@result)
60
74
  @testunit.test_started("test_one(TestCaseClass)")
61
75
  @testunit.test_finished("test_one(TestCaseClass)")
62
76
  @testunit.test_started("test_two(TestCaseClass)")
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.0
2
+ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: ci_reporter
5
5
  version: !ruby/object:Gem::Version
6
- version: "1.0"
7
- date: 2007-02-14 00:00:00 -06:00
6
+ version: "1.1"
7
+ date: 2007-03-15 00:00:00 -05:00
8
8
  summary: CI::Reporter allows you to generate reams of XML for use with continuous integration systems.
9
9
  require_paths:
10
10
  - lib