blob: 66e7d70e928e2cf1a1a472eb5cbca6ad0c2c76e1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
# -*- coding: utf-8 -*-
require File.dirname(__FILE__) + '/../../spec_helper'
require 'mspec/runner/formatters/junit'
require 'mspec/runner/example'
describe JUnitFormatter, "#initialize" do
it "permits zero arguments" do
lambda { JUnitFormatter.new }.should_not raise_error
end
it "accepts one argument" do
lambda { JUnitFormatter.new nil }.should_not raise_error
end
end
describe JUnitFormatter, "#print" do
before :each do
$stdout = IOStub.new
@out = IOStub.new
File.stub(:open).and_return(@out)
@formatter = JUnitFormatter.new "some/file"
end
after :each do
$stdout = STDOUT
end
it "writes to $stdout if #switch has not been called" do
@formatter.print "begonias"
$stdout.should == "begonias"
@out.should == ""
end
it "writes to the file passed to #initialize once #switch has been called" do
@formatter.switch
@formatter.print "begonias"
$stdout.should == ""
@out.should == "begonias"
end
it "writes to $stdout once #switch is called if no file was passed to #initialize" do
formatter = JUnitFormatter.new
formatter.switch
formatter.print "begonias"
$stdout.should == "begonias"
@out.should == ""
end
end
describe JUnitFormatter, "#finish" do
before :each do
@tally = double("tally").as_null_object
@counter = double("counter").as_null_object
@tally.stub(:counter).and_return(@counter)
TallyAction.stub(:new).and_return(@tally)
@timer = double("timer").as_null_object
TimerAction.stub(:new).and_return(@timer)
$stdout = IOStub.new
context = ContextState.new "describe"
@state = ExampleState.new(context, "it")
@formatter = JUnitFormatter.new
@formatter.stub(:backtrace).and_return("")
MSpec.stub(:register)
@formatter.register
exc = ExceptionState.new @state, nil, MSpecExampleError.new("broken")
exc.stub(:backtrace).and_return("path/to/some/file.rb:35:in method")
@formatter.exception exc
@formatter.after @state
end
after :each do
$stdout = STDOUT
end
it "calls #switch" do
@formatter.should_receive(:switch)
@formatter.finish
end
it "outputs a failure message and backtrace" do
@formatter.finish
$stdout.should include 'message="error in describe it" type="error"'
$stdout.should include "MSpecExampleError: broken\n"
$stdout.should include "path/to/some/file.rb:35:in method"
end
it "encodes message and backtrace in latin1 for jenkins" do
exc = ExceptionState.new @state, nil, MSpecExampleError.new("broken…")
exc.stub(:backtrace).and_return("path/to/some/file.rb:35:in methød")
@formatter.exception exc
@formatter.finish
$stdout.should =~ /MSpecExampleError: broken((\.\.\.)|\?)\n/
$stdout.should =~ /path\/to\/some\/file\.rb:35:in meth(\?|o)d/
end
it "outputs an elapsed time" do
@timer.should_receive(:elapsed).and_return(4.2)
@formatter.finish
$stdout.should include 'time="4.2"'
end
it "outputs overall elapsed time" do
@timer.should_receive(:elapsed).and_return(4.2)
@formatter.finish
$stdout.should include 'timeCount="4.2"'
end
it "outputs the number of examples as test count" do
@counter.should_receive(:examples).and_return(9)
@formatter.finish
$stdout.should include 'tests="9"'
end
it "outputs overall number of examples as test count" do
@counter.should_receive(:examples).and_return(9)
@formatter.finish
$stdout.should include 'testCount="9"'
end
it "outputs a failure count" do
@counter.should_receive(:failures).and_return(2)
@formatter.finish
$stdout.should include 'failureCount="2"'
end
it "outputs overall failure count" do
@counter.should_receive(:failures).and_return(2)
@formatter.finish
$stdout.should include 'failures="2"'
end
it "outputs an error count" do
@counter.should_receive(:errors).and_return(1)
@formatter.finish
$stdout.should include 'errors="1"'
end
it "outputs overall error count" do
@counter.should_receive(:errors).and_return(1)
@formatter.finish
$stdout.should include 'errorCount="1"'
end
end
|