changelog shortlog tags changeset manifest revisions annotate raw

vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb

changeset 15: 64acf98d15f4
author: moriq@moriq.com
date: Mon Mar 10 10:12:58 2008 +0900 (16 years ago)
permissions: -rw-r--r--
description: add plugins rspec
1require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2require 'spec/runner/formatter/progress_bar_formatter'
3
4module 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|
31Finished in 3 seconds
32
332 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:
76EOE
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:
83EOE
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
127end