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