rspec 1.1.2 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>