1 require File.dirname(__FILE__) + '/../../../spec_helper.rb'
6 describe ProgressBarFormatter do
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)
15 it "should produce line break on start dump" do
17 @io.string.should eql("\n")
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")
25 it "should produce standard summary" do
26 @formatter.example_pending("behaviour", "example", "message")
28 @formatter.dump_summary(3, 2, 1, 1)
29 @io.string.should eql(%Q|
32 2 examples, 1 failure, 1 pending
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"
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")
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")
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")
64 it "should push nothing on start" do
66 @io.string.should eql("")
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)
77 backtrace = ["/tmp/x.rb:1: message", "/tmp/x.rb:2", "/tmp/x.rb:3"]
78 @formatter.format_backtrace(backtrace).should eql(<<-EOE.rstrip)
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/
92 describe "ProgressBarFormatter outputting to custom out" do
95 @options = mock('options')
97 @formatter = ProgressBarFormatter.new(@options, @out)
98 @formatter.class.send :public, :output_to_tty?
102 @formatter.class.send :protected, :output_to_tty?
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