rspec 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. data/CHANGES +17 -0
  2. data/Rakefile +7 -4
  3. data/failing_examples/README.txt +7 -0
  4. data/failing_examples/diffing_spec.rb +36 -0
  5. data/failing_examples/failing_autogenerated_docstrings_example.rb +19 -0
  6. data/failing_examples/failure_in_setup.rb +10 -0
  7. data/failing_examples/failure_in_teardown.rb +10 -0
  8. data/failing_examples/mocking_example.rb +40 -0
  9. data/failing_examples/mocking_with_flexmock.rb +26 -0
  10. data/failing_examples/mocking_with_mocha.rb +25 -0
  11. data/failing_examples/mocking_with_rr.rb +27 -0
  12. data/failing_examples/partial_mock_example.rb +20 -0
  13. data/failing_examples/predicate_example.rb +29 -0
  14. data/failing_examples/raising_example.rb +47 -0
  15. data/failing_examples/spec_helper.rb +3 -0
  16. data/failing_examples/syntax_error_example.rb +7 -0
  17. data/failing_examples/team_spec.rb +44 -0
  18. data/failing_examples/timeout_behaviour.rb +7 -0
  19. data/lib/autotest/rspec.rb +21 -35
  20. data/lib/spec.rb +0 -7
  21. data/lib/spec/example/example_group_methods.rb +10 -4
  22. data/lib/spec/example/example_methods.rb +4 -0
  23. data/lib/spec/interop/test.rb +3 -1
  24. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +1 -0
  25. data/lib/spec/matchers/raise_error.rb +19 -15
  26. data/lib/spec/runner.rb +14 -0
  27. data/lib/spec/runner/formatter/story/html_formatter.rb +3 -0
  28. data/lib/spec/runner/formatter/story/plain_text_formatter.rb +4 -1
  29. data/lib/spec/runner/option_parser.rb +5 -33
  30. data/lib/spec/runner/options.rb +51 -18
  31. data/lib/spec/runner/spec_parser.rb +49 -31
  32. data/lib/spec/story/runner.rb +0 -2
  33. data/lib/spec/story/step.rb +8 -6
  34. data/lib/spec/story/world.rb +1 -0
  35. data/lib/spec/version.rb +22 -22
  36. data/pre_commit/lib/pre_commit.rb +4 -0
  37. data/pre_commit/lib/pre_commit/core.rb +50 -0
  38. data/pre_commit/lib/pre_commit/pre_commit.rb +54 -0
  39. data/pre_commit/lib/pre_commit/rspec.rb +111 -0
  40. data/pre_commit/lib/pre_commit/rspec_on_rails.rb +313 -0
  41. data/pre_commit/spec/pre_commit/pre_commit_spec.rb +15 -0
  42. data/pre_commit/spec/pre_commit/rspec_on_rails_spec.rb +36 -0
  43. data/pre_commit/spec/spec_helper.rb +3 -0
  44. data/pre_commit/spec/spec_suite.rb +11 -0
  45. data/rake_tasks/examples.rake +7 -0
  46. data/rake_tasks/examples_with_rcov.rake +9 -0
  47. data/rake_tasks/failing_examples_with_html.rake +9 -0
  48. data/rake_tasks/verify_rcov.rake +7 -0
  49. data/spec/README.jruby +15 -0
  50. data/spec/autotest/rspec_spec.rb +11 -80
  51. data/spec/autotest_helper.rb +2 -1
  52. data/spec/autotest_matchers.rb +47 -0
  53. data/spec/rspec_suite.rb +1 -1
  54. data/spec/spec.opts +6 -0
  55. data/spec/spec/example/example_group_methods_spec.rb +11 -2
  56. data/spec/spec/example/example_methods_spec.rb +69 -56
  57. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  58. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  59. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  60. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  61. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  62. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  63. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  64. data/spec/spec/interop/test/unit/spec_spec.rb +45 -0
  65. data/spec/spec/interop/test/unit/testcase_spec.rb +39 -4
  66. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +1 -1
  67. data/spec/spec/matchers/raise_error_spec.rb +7 -1
  68. data/spec/spec/mocks/bug_report_10263.rb +1 -1
  69. data/spec/spec/runner/command_line_spec.rb +3 -2
  70. data/spec/spec/runner/empty_file.txt +0 -0
  71. data/spec/spec/runner/examples.txt +2 -0
  72. data/spec/spec/runner/failed.txt +3 -0
  73. data/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
  74. data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +387 -0
  75. data/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
  76. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +381 -0
  77. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +365 -0
  78. data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +54 -54
  79. data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +365 -0
  80. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +365 -0
  81. data/spec/spec/runner/option_parser_spec.rb +50 -49
  82. data/spec/spec/runner/options_spec.rb +72 -2
  83. data/spec/spec/runner/resources/a_bar.rb +0 -0
  84. data/spec/spec/runner/resources/a_foo.rb +0 -0
  85. data/spec/spec/runner/resources/a_spec.rb +1 -0
  86. data/spec/spec/runner/spec.opts +2 -0
  87. data/spec/spec/runner/spec_parser/spec_parser_fixture.rb +70 -0
  88. data/spec/spec/runner/spec_parser_spec.rb +31 -76
  89. data/spec/spec/runner/spec_spaced.opts +2 -0
  90. data/spec/spec/spec_classes.rb +4 -0
  91. data/spec/spec/story/step_spec.rb +22 -0
  92. data/spec/spec/story/world_spec.rb +7 -0
  93. data/stories/interop/test_case_with_should_methods +1 -1
  94. metadata +85 -5
  95. data/spec/spec/interop/test/unit/testcase_spec_with_test_unit.rb +0 -20
  96. data/spec/spec/interop/test/unit/testsuite_adapter_spec_with_test_unit.rb +0 -34
@@ -0,0 +1,10 @@
1
+ rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
2
+ $:.unshift rspec_lib unless $:.include?(rspec_lib)
3
+ require 'test/unit'
4
+ require 'spec'
5
+
6
+ describe "example group with failures" do
7
+ it "should fail" do
8
+ false.should be_true
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
2
+ $:.unshift rspec_lib unless $:.include?(rspec_lib)
3
+ require 'test/unit'
4
+ require 'spec'
5
+
6
+ describe "example group with passing examples" do
7
+ it "should pass" do
8
+ true.should be_true
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
2
+ $:.unshift rspec_lib unless $:.include?(rspec_lib)
3
+ require 'test/unit'
4
+ require 'spec'
5
+
6
+ describe "example group with errors" do
7
+ it "should raise errors" do
8
+ raise "error raised in example group with errors"
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
2
+ $:.unshift rspec_lib unless $:.include?(rspec_lib)
3
+ require 'test/unit'
4
+ require 'spec'
5
+
6
+ class TestCaseThatFails < Test::Unit::TestCase
7
+ def test_that_fails
8
+ false.should be_true
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
2
+ $:.unshift rspec_lib unless $:.include?(rspec_lib)
3
+ require 'test/unit'
4
+ require 'spec'
5
+
6
+ class TestCaseThatPasses < Test::Unit::TestCase
7
+ def test_that_passes
8
+ true.should be_true
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
2
+ $:.unshift rspec_lib unless $:.include?(rspec_lib)
3
+ require 'test/unit'
4
+ require 'spec'
5
+
6
+ class TestCaseWithErrors < Test::Unit::TestCase
7
+ def test_with_error
8
+ raise "error raised in TestCaseWithErrors"
9
+ end
10
+ end
@@ -0,0 +1,38 @@
1
+ rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
2
+ $:.unshift rspec_lib unless $:.include?(rspec_lib)
3
+ require "test/unit"
4
+ require "spec"
5
+
6
+ module Test
7
+ module Unit
8
+ describe TestSuiteAdapter do
9
+ def create_adapter(group)
10
+ TestSuiteAdapter.new(group)
11
+ end
12
+
13
+ describe "#size" do
14
+ it "should return the number of examples in the example group" do
15
+ group = Class.new(Spec::ExampleGroup) do
16
+ describe("some examples")
17
+ it("bar") {}
18
+ it("baz") {}
19
+ end
20
+ adapter = create_adapter(group)
21
+ adapter.size.should == 2
22
+ end
23
+ end
24
+
25
+ describe "#delete" do
26
+ it "should do nothing" do
27
+ group = Class.new(Spec::ExampleGroup) do
28
+ describe("Some Examples")
29
+ it("does something") {}
30
+ end
31
+ adapter = create_adapter(group)
32
+ adapter.delete(adapter.examples.first)
33
+ adapter.should be_empty
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,45 @@
1
+ require File.dirname(__FILE__) + '/test_unit_spec_helper'
2
+
3
+ describe "ExampleGroup with test/unit/interop" do
4
+ include TestUnitSpecHelper
5
+
6
+ before(:each) do
7
+ @dir = File.dirname(__FILE__) + "/resources"
8
+ end
9
+
10
+ describe "with passing examples" do
11
+ it "should output 0 failures" do
12
+ output = ruby("#{@dir}/spec_that_passes.rb")
13
+ output.should include("1 example, 0 failures")
14
+ end
15
+
16
+ it "should return an exit code of 0" do
17
+ ruby("#{@dir}/spec_that_passes.rb")
18
+ $?.should == 0
19
+ end
20
+ end
21
+
22
+ describe "with failing examples" do
23
+ it "should output 1 failure" do
24
+ output = ruby("#{@dir}/spec_that_fails.rb")
25
+ output.should include("1 example, 1 failure")
26
+ end
27
+
28
+ it "should return an exit code of 256" do
29
+ ruby("#{@dir}/spec_that_fails.rb")
30
+ $?.should == 256
31
+ end
32
+ end
33
+
34
+ describe "with example that raises an error" do
35
+ it "should output 1 failure" do
36
+ output = ruby("#{@dir}/spec_with_errors.rb")
37
+ output.should include("1 example, 1 failure")
38
+ end
39
+
40
+ it "should return an exit code of 256" do
41
+ ruby("#{@dir}/spec_with_errors.rb")
42
+ $?.should == 256
43
+ end
44
+ end
45
+ end
@@ -2,9 +2,44 @@ require File.dirname(__FILE__) + '/test_unit_spec_helper'
2
2
 
3
3
  describe "Test::Unit::TestCase" do
4
4
  include TestUnitSpecHelper
5
- it "should pass" do
6
- dir = File.dirname(__FILE__)
7
- output = run_script("#{dir}/testcase_spec_with_test_unit.rb")
8
- output.should include("3 examples, 0 failures")
5
+
6
+ before(:each) do
7
+ @dir = File.dirname(__FILE__) + "/resources"
8
+ end
9
+
10
+ describe "with passing test case" do
11
+ it "should output 0 failures" do
12
+ output = ruby("#{@dir}/test_case_that_passes.rb")
13
+ output.should include("1 example, 0 failures")
14
+ end
15
+
16
+ it "should return an exit code of 0" do
17
+ ruby("#{@dir}/test_case_that_passes.rb")
18
+ $?.should == 0
19
+ end
20
+ end
21
+
22
+ describe "with failing test case" do
23
+ it "should output 1 failure" do
24
+ output = ruby("#{@dir}/test_case_that_fails.rb")
25
+ output.should include("1 example, 1 failure")
26
+ end
27
+
28
+ it "should return an exit code of 256" do
29
+ ruby("#{@dir}/test_case_that_fails.rb")
30
+ $?.should == 256
31
+ end
32
+ end
33
+
34
+ describe "with test case that raises an error" do
35
+ it "should output 1 failure" do
36
+ output = ruby("#{@dir}/test_case_with_errors.rb")
37
+ output.should include("1 example, 1 failure")
38
+ end
39
+
40
+ it "should return an exit code of 256" do
41
+ ruby("#{@dir}/test_case_with_errors.rb")
42
+ $?.should == 256
43
+ end
9
44
  end
10
45
  end
@@ -4,6 +4,6 @@ describe "TestSuiteAdapter" do
4
4
  include TestUnitSpecHelper
5
5
  it "should pass" do
6
6
  dir = File.dirname(__FILE__)
7
- run_script "#{dir}/testsuite_adapter_spec_with_test_unit.rb"
7
+ run_script "#{dir}/resources/testsuite_adapter_spec_with_test_unit.rb"
8
8
  end
9
9
  end
@@ -73,11 +73,17 @@ describe "should raise_error(NamedError)" do
73
73
  }.should fail_with("expected NameError but nothing was raised")
74
74
  end
75
75
 
76
- it "should fail if another error is raised" do
76
+ it "should fail if another error is raised (NameError)" do
77
77
  lambda {
78
78
  lambda { raise }.should raise_error(NameError)
79
79
  }.should fail_with("expected NameError, got RuntimeError")
80
80
  end
81
+
82
+ it "should fail if another error is raised (NameError)" do
83
+ lambda {
84
+ lambda { load "non/existent/file" }.should raise_error(NameError)
85
+ }.should fail_with(/expected NameError, got #<LoadError/)
86
+ end
81
87
  end
82
88
 
83
89
  describe "should_not raise_error(NamedError)" do
@@ -16,7 +16,7 @@ describe "Mock" do
16
16
  @mock.rspec_verify
17
17
  begin
18
18
  @mock.foobar
19
- rescue => e
19
+ rescue Exception => e
20
20
  e.message.should == "Mock 'test mock' received unexpected message :foobar with (no args)"
21
21
  end
22
22
  end
@@ -12,7 +12,7 @@ module Spec
12
12
 
13
13
  it "should run directory" do
14
14
  file = File.dirname(__FILE__) + '/../../../examples/pure'
15
- Spec::Runner::CommandLine.run(OptionParser.parse([file], @err, @out))
15
+ Spec::Runner::CommandLine.run(OptionParser.parse([file,"-p","**/*.rb"], @err, @out))
16
16
 
17
17
  @out.rewind
18
18
  @out.read.should =~ /\d+ examples, 0 failures, 3 pending/n
@@ -35,8 +35,9 @@ module Spec
35
35
  end
36
36
 
37
37
  it "should return true when in --generate-options mode" do
38
+ # NOTE - this used to say /dev/null but jruby hangs on that for some reason
38
39
  Spec::Runner::CommandLine.run(
39
- OptionParser.parse(['--generate-options', '/dev/null'], @err, @out)
40
+ OptionParser.parse(['--generate-options', '/tmp/foo'], @err, @out)
40
41
  ).should be_true
41
42
  end
42
43
 
File without changes
@@ -0,0 +1,2 @@
1
+ Sir, if you were my husband, I would poison your drink.
2
+ Madam, if you were my wife, I would drink it.
@@ -0,0 +1,3 @@
1
+ heckler_spec.rb
2
+ command_line_spec.rb
3
+ reporter_spec.rb
@@ -0,0 +1,365 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+ <head>
7
+ <title>RSpec results</title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9
+ <meta http-equiv="Expires" content="-1" />
10
+ <meta http-equiv="Pragma" content="no-cache" />
11
+ <style type="text/css">
12
+ body {
13
+ margin: 0;
14
+ padding: 0;
15
+ background: #fff;
16
+ font-size: 80%;
17
+ }
18
+ </style>
19
+ </head>
20
+ <body>
21
+ <div class="rspec-report">
22
+ <script type="text/javascript">
23
+ // <![CDATA[
24
+ function moveProgressBar(percentDone) {
25
+ document.getElementById("rspec-header").style.width = percentDone +"%";
26
+ }
27
+ function makeRed(element_id) {
28
+ document.getElementById(element_id).style.background = '#C40D0D';
29
+ document.getElementById(element_id).style.color = '#FFFFFF';
30
+ }
31
+
32
+ function makeYellow(element_id) {
33
+ if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
34
+ {
35
+ document.getElementById(element_id).style.background = '#FAF834';
36
+ document.getElementById(element_id).style.color = '#000000';
37
+ }
38
+ else
39
+ {
40
+ document.getElementById(element_id).style.background = '#FAF834';
41
+ document.getElementById(element_id).style.color = '#000000';
42
+ }
43
+ }
44
+
45
+ // ]]>
46
+ </script>
47
+ <style type="text/css">
48
+ #rspec-header {
49
+ background: #65C400; color: #fff;
50
+ }
51
+
52
+ .rspec-report h1 {
53
+ margin: 0px 10px 0px 10px;
54
+ padding: 10px;
55
+ font-family: "Lucida Grande", Helvetica, sans-serif;
56
+ font-size: 1.8em;
57
+ }
58
+
59
+ #summary {
60
+ margin: 0; padding: 5px 10px;
61
+ font-family: "Lucida Grande", Helvetica, sans-serif;
62
+ text-align: right;
63
+ position: absolute;
64
+ top: 0px;
65
+ right: 0px;
66
+ }
67
+
68
+ #summary p {
69
+ margin: 0 0 0 2px;
70
+ }
71
+
72
+ #summary #totals {
73
+ font-size: 1.2em;
74
+ }
75
+
76
+ .example_group {
77
+ margin: 0 10px 5px;
78
+ background: #fff;
79
+ }
80
+
81
+ dl {
82
+ margin: 0; padding: 0 0 5px;
83
+ font: normal 11px "Lucida Grande", Helvetica, sans-serif;
84
+ }
85
+
86
+ dt {
87
+ padding: 3px;
88
+ background: #65C400;
89
+ color: #fff;
90
+ font-weight: bold;
91
+ }
92
+
93
+ dd {
94
+ margin: 5px 0 5px 5px;
95
+ padding: 3px 3px 3px 18px;
96
+ }
97
+
98
+ dd.spec.passed {
99
+ border-left: 5px solid #65C400;
100
+ border-bottom: 1px solid #65C400;
101
+ background: #DBFFB4; color: #3D7700;
102
+ }
103
+
104
+ dd.spec.failed {
105
+ border-left: 5px solid #C20000;
106
+ border-bottom: 1px solid #C20000;
107
+ color: #C20000; background: #FFFBD3;
108
+ }
109
+
110
+ dd.spec.not_implemented {
111
+ border-left: 5px solid #FAF834;
112
+ border-bottom: 1px solid #FAF834;
113
+ background: #FCFB98; color: #131313;
114
+ }
115
+
116
+ dd.spec.pending_fixed {
117
+ border-left: 5px solid #0000C2;
118
+ border-bottom: 1px solid #0000C2;
119
+ color: #0000C2; background: #D3FBFF;
120
+ }
121
+
122
+ .backtrace {
123
+ color: #000;
124
+ font-size: 12px;
125
+ }
126
+
127
+ a {
128
+ color: #BE5C00;
129
+ }
130
+
131
+ /* Ruby code, style similar to vibrant ink */
132
+ .ruby {
133
+ font-size: 12px;
134
+ font-family: monospace;
135
+ color: white;
136
+ background-color: black;
137
+ padding: 0.1em 0 0.2em 0;
138
+ }
139
+
140
+ .ruby .keyword { color: #FF6600; }
141
+ .ruby .constant { color: #339999; }
142
+ .ruby .attribute { color: white; }
143
+ .ruby .global { color: white; }
144
+ .ruby .module { color: white; }
145
+ .ruby .class { color: white; }
146
+ .ruby .string { color: #66FF00; }
147
+ .ruby .ident { color: white; }
148
+ .ruby .method { color: #FFCC00; }
149
+ .ruby .number { color: white; }
150
+ .ruby .char { color: white; }
151
+ .ruby .comment { color: #9933CC; }
152
+ .ruby .symbol { color: white; }
153
+ .ruby .regex { color: #44B4CC; }
154
+ .ruby .punct { color: white; }
155
+ .ruby .escape { color: white; }
156
+ .ruby .interp { color: white; }
157
+ .ruby .expr { color: white; }
158
+
159
+ .ruby .offending { background-color: gray; }
160
+ .ruby .linenum {
161
+ width: 75px;
162
+ padding: 0.1em 1em 0.2em 0;
163
+ color: #000000;
164
+ background-color: #FFFBD3;
165
+ }
166
+
167
+ </style>
168
+
169
+ <div id="rspec-header">
170
+ <h1>RSpec Results</h1>
171
+
172
+ <div id="summary">
173
+ <p id="totals">&nbsp;</p>
174
+ <p id="duration">&nbsp;</p>
175
+ </div>
176
+ </div>
177
+
178
+ <div class="results">
179
+ <div class="example_group">
180
+ <dl>
181
+ <dt id="example_group_1">Mocker</dt>
182
+ <script type="text/javascript">moveProgressBar('5.8');</script>
183
+ <dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
184
+ <script type="text/javascript">makeRed('rspec-header');</script>
185
+ <script type="text/javascript">makeRed('example_group_1');</script>
186
+ <script type="text/javascript">moveProgressBar('11.7');</script>
187
+ <dd class="spec failed">
188
+ <span class="failed_spec_name">should fail when expected message not received</span>
189
+ <div class="failure" id="failure_1">
190
+ <div class="message"><pre>Mock 'poke me' expected :poke with (any args) once, but received it 0 times</pre></div>
191
+ <div class="backtrace"><pre>./failing_examples/mocking_example.rb:13:
192
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:24:
193
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
194
+ <pre class="ruby"><code><span class="linenum">11</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</span> <span class="keyword">do</span>
195
+ <span class="linenum">12</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</span>
196
+ <span class="offending"><span class="linenum">13</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span>
197
+ <span class="linenum">14</span> <span class="keyword">end</span>
198
+ <span class="linenum">15</span> </code></pre>
199
+ </div>
200
+ </dd>
201
+ <script type="text/javascript">moveProgressBar('17.6');</script>
202
+ <dd class="spec failed">
203
+ <span class="failed_spec_name">should fail when messages are received out of order</span>
204
+ <div class="failure" id="failure_2">
205
+ <div class="message"><pre>Mock 'one two three' received :three out of order</pre></div>
206
+ <div class="backtrace"><pre>./failing_examples/mocking_example.rb:22:
207
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:24:
208
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
209
+ <pre class="ruby"><code><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span>
210
+ <span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span>
211
+ <span class="offending"><span class="linenum">22</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span>
212
+ <span class="linenum">23</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
213
+ <span class="linenum">24</span> <span class="keyword">end</span></code></pre>
214
+ </div>
215
+ </dd>
216
+ <script type="text/javascript">moveProgressBar('23.5');</script>
217
+ <dd class="spec failed">
218
+ <span class="failed_spec_name">should get yelled at when sending unexpected messages</span>
219
+ <div class="failure" id="failure_3">
220
+ <div class="message"><pre>Mock 'don't talk to me' expected :any_message_at_all with (any args) 0 times, but received it once</pre></div>
221
+ <div class="backtrace"><pre>./failing_examples/mocking_example.rb:28:
222
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:24:
223
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
224
+ <pre class="ruby"><code><span class="linenum">26</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should get yelled at when sending unexpected messages</span><span class="punct">&quot;</span> <span class="keyword">do</span>
225
+ <span class="linenum">27</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</span>
226
+ <span class="offending"><span class="linenum">28</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span></span>
227
+ <span class="linenum">29</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span>
228
+ <span class="linenum">30</span> <span class="keyword">end</span></code></pre>
229
+ </div>
230
+ </dd>
231
+ <script type="text/javascript">moveProgressBar('29.4');</script>
232
+ <dd class="spec pending_fixed">
233
+ <span class="failed_spec_name">has a bug we need to fix</span>
234
+ <div class="failure" id="failure_4">
235
+ <div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
236
+ <div class="backtrace"><pre>./failing_examples/mocking_example.rb:33:
237
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:24:
238
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
239
+ <pre class="ruby"><code><span class="linenum">31</span>
240
+ <span class="linenum">32</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
241
+ <span class="offending"><span class="linenum">33</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</span> <span class="keyword">do</span></span>
242
+ <span class="linenum">34</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
243
+ <span class="linenum">35</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
244
+ </div>
245
+ </dd>
246
+ </dl>
247
+ </div>
248
+ <div class="example_group">
249
+ <dl>
250
+ <dt id="example_group_2">Running specs with --diff</dt>
251
+ <script type="text/javascript">makeRed('example_group_2');</script>
252
+ <script type="text/javascript">moveProgressBar('35.2');</script>
253
+ <dd class="spec failed">
254
+ <span class="failed_spec_name">should print diff of different strings</span>
255
+ <div class="failure" id="failure_5">
256
+ <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
257
+ got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
258
+ Diff:
259
+ @@ -1,4 +1,4 @@
260
+ RSpec is a
261
+ -behavior driven development
262
+ +behaviour driven development
263
+ framework for Ruby
264
+ </pre></div>
265
+ <div class="backtrace"><pre>./failing_examples/diffing_spec.rb:13:
266
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:24:
267
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
268
+ <pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span>
269
+ <span class="linenum">12</span><span class="constant">EOF</span>
270
+ <span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span>
271
+ <span class="linenum">14</span> <span class="keyword">end</span></code></pre>
272
+ </div>
273
+ </dd>
274
+ <script type="text/javascript">moveProgressBar('41.1');</script>
275
+ <dd class="spec failed">
276
+ <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
277
+ <div class="failure" id="failure_6">
278
+ <div class="message"><pre>expected &lt;Animal
279
+ name=bob,
280
+ species=tortoise
281
+ &gt;
282
+ , got &lt;Animal
283
+ name=bob,
284
+ species=giraffe
285
+ &gt;
286
+ (using .eql?)
287
+ Diff:
288
+ @@ -1,5 +1,5 @@
289
+ &lt;Animal
290
+ name=bob,
291
+ -species=giraffe
292
+ +species=tortoise
293
+ &gt;
294
+ </pre></div>
295
+ <div class="backtrace"><pre>./failing_examples/diffing_spec.rb:34:
296
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:24:
297
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
298
+ <pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</span>
299
+ <span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</span>
300
+ <span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span>
301
+ <span class="linenum">35</span> <span class="keyword">end</span>
302
+ <span class="linenum">36</span><span class="keyword">end</span></code></pre>
303
+ </div>
304
+ </dd>
305
+ </dl>
306
+ </div>
307
+ <div class="example_group">
308
+ <dl>
309
+ <dt id="example_group_3">A consumer of a stub</dt>
310
+ <script type="text/javascript">moveProgressBar('47.0');</script>
311
+ <dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
312
+ </dl>
313
+ </div>
314
+ <div class="example_group">
315
+ <dl>
316
+ <dt id="example_group_4">A stubbed method on a class</dt>
317
+ <script type="text/javascript">moveProgressBar('52.9');</script>
318
+ <dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
319
+ <script type="text/javascript">moveProgressBar('58.8');</script>
320
+ <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
321
+ <script type="text/javascript">moveProgressBar('64.7');</script>
322
+ <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
323
+ </dl>
324
+ </div>
325
+ <div class="example_group">
326
+ <dl>
327
+ <dt id="example_group_5">A mock</dt>
328
+ <script type="text/javascript">moveProgressBar('70.5');</script>
329
+ <dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
330
+ <script type="text/javascript">moveProgressBar('76.4');</script>
331
+ <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
332
+ <script type="text/javascript">moveProgressBar('82.3');</script>
333
+ <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
334
+ </dl>
335
+ </div>
336
+ <div class="example_group">
337
+ <dl>
338
+ <dt id="example_group_6">pending example (using pending method)</dt>
339
+ <script type="text/javascript">makeYellow('example_group_6');</script>
340
+ <script type="text/javascript">moveProgressBar('88.2');</script>
341
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
342
+ </dl>
343
+ </div>
344
+ <div class="example_group">
345
+ <dl>
346
+ <dt id="example_group_7">pending example (with no block)</dt>
347
+ <script type="text/javascript">makeYellow('example_group_7');</script>
348
+ <script type="text/javascript">moveProgressBar('94.1');</script>
349
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot; (PENDING: Not Yet Implemented)</span></dd>
350
+ </dl>
351
+ </div>
352
+ <div class="example_group">
353
+ <dl>
354
+ <dt id="example_group_8">pending example (with block for pending)</dt>
355
+ <script type="text/javascript">makeYellow('example_group_8');</script>
356
+ <script type="text/javascript">moveProgressBar('100.0');</script>
357
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
358
+ </dl>
359
+ </div>
360
+ <script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
361
+ <script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
362
+ </div>
363
+ </div>
364
+ </body>
365
+ </html>