Upgraded Rails and RSpec
[monkeycharger.git] / vendor / plugins / rspec / rspec / spec / spec / runner / formatter / progress_bar_formatter_spec.rb
blob2802bc5ae87913366c107c7930cf099520e680ed
1 require File.dirname(__FILE__) + '/../../../spec_helper.rb'
3 module Spec
4   module Runner
5     module Formatter
6       describe ProgressBarFormatter do
7         before(:each) do
8           @io = StringIO.new
9           @options = mock('options')
10           @options.stub!(:dry_run).and_return(false)
11           @options.stub!(:colour).and_return(false)
12           @formatter = ProgressBarFormatter.new(@options, @io)
13         end
15         it "should produce line break on start dump" do
16           @formatter.start_dump
17           @io.string.should eql("\n")
18         end
20         it "should produce standard summary without pending when pending has a 0 count" do
21           @formatter.dump_summary(3, 2, 1, 0)
22           @io.string.should eql("\nFinished in 3 seconds\n\n2 examples, 1 failure\n")
23         end
24         
25         it "should produce standard summary" do
26           @formatter.example_pending("behaviour", "example", "message")  
27           @io.rewind
28           @formatter.dump_summary(3, 2, 1, 1)
29           @io.string.should eql(%Q|
30 Finished in 3 seconds
32 2 examples, 1 failure, 1 pending
34         end
36         it "should push green dot for passing spec" do
37           @io.should_receive(:tty?).and_return(true)
38           @options.should_receive(:colour).and_return(true)
39           @formatter.example_passed("spec")
40           @io.string.should == "\e[32m.\e[0m"
41         end
43         it "should push red F for failure spec" do
44           @io.should_receive(:tty?).and_return(true)
45           @options.should_receive(:colour).and_return(true)
46           @formatter.example_failed("spec", 98, Reporter::Failure.new("c s", Spec::Expectations::ExpectationNotMetError.new))
47           @io.string.should eql("\e[31mF\e[0m")
48         end
50         it "should push magenta F for error spec" do
51           @io.should_receive(:tty?).and_return(true)
52           @options.should_receive(:colour).and_return(true)
53           @formatter.example_failed("spec", 98, Reporter::Failure.new("c s", RuntimeError.new))
54           @io.string.should eql("\e[35mF\e[0m")
55         end
57         it "should push blue F for fixed pending spec" do
58           @io.should_receive(:tty?).and_return(true)
59           @options.should_receive(:colour).and_return(true)
60           @formatter.example_failed("spec", 98, Reporter::Failure.new("c s", Spec::Example::PendingExampleFixedError.new))
61           @io.string.should eql("\e[34mF\e[0m")
62         end
64         it "should push nothing on start" do
65           @formatter.start(4)
66           @io.string.should eql("")
67         end
69         it "should ensure two ':' in the first backtrace" do
70           backtrace = ["/tmp/x.rb:1", "/tmp/x.rb:2", "/tmp/x.rb:3"]
71           @formatter.format_backtrace(backtrace).should eql(<<-EOE.rstrip)
72 /tmp/x.rb:1:
73 /tmp/x.rb:2:
74 /tmp/x.rb:3:
75 EOE
77           backtrace = ["/tmp/x.rb:1: message", "/tmp/x.rb:2", "/tmp/x.rb:3"]
78           @formatter.format_backtrace(backtrace).should eql(<<-EOE.rstrip)
79 /tmp/x.rb:1: message
80 /tmp/x.rb:2:
81 /tmp/x.rb:3:
82 EOE
83         end
84         
85         it "should dump pending" do
86           @formatter.example_pending("behaviour", "example", "message")
87           @formatter.dump_pending
88           @io.string.should =~ /Pending\:\nbehaviour example \(message\)\n/
89         end
90       end
91       
92       describe "ProgressBarFormatter outputting to custom out" do
93         before(:each) do
94           @out = mock("out")
95           @options = mock('options')
96           @out.stub!(:puts)
97           @formatter = ProgressBarFormatter.new(@options, @out)
98           @formatter.class.send :public, :output_to_tty?
99         end
101         after(:each) do
102           @formatter.class.send :protected, :output_to_tty?
103         end
105         it "should not throw NoMethodError on output_to_tty?" do
106           @out.should_receive(:tty?).and_raise(NoMethodError)
107           @formatter.output_to_tty?.should be_false
108         end
109       end
110     end
111   end