Updated MSpec source to 1c3ee1c8.
[rbx.git] / mspec / spec / runner / formatters / unit_spec.rb
blob6fa78f44883551153677f4527b35c8661735ebcf
1 require File.dirname(__FILE__) + '/../../spec_helper'
2 require 'mspec/runner/formatters/unit'
3 require 'mspec/runner/example'
5 describe UnitdiffFormatter, "#finish" do
6   before :each do
7     @tally = mock("tally", :null_object => true)
8     TallyAction.stub!(:new).and_return(@tally)
9     @timer = mock("timer", :null_object => true)
10     TimerAction.stub!(:new).and_return(@timer)
12     $stdout = @out = IOStub.new
13     context = ContextState.new "describe"
14     @state = ExampleState.new(context, "it")
15     MSpec.stub!(:register)
16     @formatter = UnitdiffFormatter.new
17     @formatter.register
18   end
20   after :each do
21     $stdout = STDOUT
22   end
24   it "prints a failure message for an exception" do
25     exc = ExceptionState.new @state, nil, MSpecExampleError.new("broken")
26     @formatter.exception exc
27     @formatter.after @state
28     @formatter.finish
29     @out.should =~ /^1\)\ndescribe it ERROR$/
30   end
32   it "prints a backtrace for an exception" do
33     exc = ExceptionState.new @state, nil, Exception.new("broken")
34     exc.stub!(:backtrace).and_return("path/to/some/file.rb:35:in method")
35     @formatter.exception exc
36     @formatter.finish
37     @out.should =~ %r[path/to/some/file.rb:35:in method$]
38   end
40   it "prints a summary of elapsed time" do
41     @timer.should_receive(:format).and_return("Finished in 2.0 seconds")
42     @formatter.finish
43     @out.should =~ /^Finished in 2.0 seconds$/
44   end
46   it "prints a tally of counts" do
47     @tally.should_receive(:format).and_return("1 example, 0 failures")
48     @formatter.finish
49     @out.should =~ /^1 example, 0 failures$/
50   end
52   it "prints errors, backtraces, elapsed time, and tallies" do
53     exc = ExceptionState.new @state, nil, Exception.new("broken")
54     exc.stub!(:backtrace).and_return("path/to/some/file.rb:35:in method")
55     @formatter.exception exc
56     @formatter.after @state
57     @timer.should_receive(:format).and_return("Finished in 2.0 seconds")
58     @tally.should_receive(:format).and_return("1 example, 0 failures")
59     @formatter.finish
60     @out.should ==
61 %[E
63 Finished in 2.0 seconds
66 describe it ERROR
67 Exception: broken: 
68 path/to/some/file.rb:35:in method
70 1 example, 0 failures
72   end
73 end