rspec 0.7.5.1 → 0.8.0

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 (194) hide show
  1. data/CHANGES +60 -1
  2. data/EXAMPLES.rd +38 -19
  3. data/MIT-LICENSE +1 -1
  4. data/README +24 -17
  5. data/RELEASE-PLAN +117 -0
  6. data/Rakefile +24 -18
  7. data/TODO.0.8.0 +5 -0
  8. data/examples/auto_spec_name_generation_example.rb +18 -0
  9. data/examples/custom_expectation_matchers.rb +53 -0
  10. data/examples/dynamic_spec.rb +9 -0
  11. data/examples/io_processor_spec.rb +2 -2
  12. data/examples/mocking_example.rb +4 -4
  13. data/examples/partial_mock_example.rb +2 -2
  14. data/examples/predicate_example.rb +2 -2
  15. data/examples/stack_spec.rb +32 -36
  16. data/examples/stubbing_example.rb +19 -19
  17. data/examples/test_case_spec.rb +6 -6
  18. data/lib/spec.rb +3 -0
  19. data/lib/spec/callback.rb +8 -0
  20. data/lib/spec/callback/extensions/object.rb +4 -0
  21. data/lib/spec/deprecated.rb +3 -0
  22. data/lib/spec/expectations.rb +44 -17
  23. data/lib/spec/expectations/extensions.rb +1 -2
  24. data/lib/spec/expectations/extensions/object.rb +78 -130
  25. data/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  26. data/lib/spec/expectations/handler.rb +47 -0
  27. data/lib/spec/expectations/should/base.rb +32 -29
  28. data/lib/spec/expectations/should/change.rb +1 -1
  29. data/lib/spec/expectations/should/have.rb +9 -17
  30. data/lib/spec/expectations/should/not.rb +54 -56
  31. data/lib/spec/expectations/should/should.rb +59 -65
  32. data/lib/spec/expectations/sugar.rb +27 -4
  33. data/lib/spec/matchers.rb +160 -0
  34. data/lib/spec/matchers/be.rb +161 -0
  35. data/lib/spec/matchers/be_close.rb +37 -0
  36. data/lib/spec/matchers/change.rb +120 -0
  37. data/lib/spec/matchers/eql.rb +43 -0
  38. data/lib/spec/matchers/equal.rb +43 -0
  39. data/lib/spec/matchers/has.rb +44 -0
  40. data/lib/spec/matchers/have.rb +140 -0
  41. data/lib/spec/matchers/include.rb +50 -0
  42. data/lib/spec/matchers/match.rb +41 -0
  43. data/lib/spec/matchers/raise_error.rb +100 -0
  44. data/lib/spec/matchers/respond_to.rb +35 -0
  45. data/lib/spec/matchers/satisfy.rb +47 -0
  46. data/lib/spec/matchers/throw_symbol.rb +75 -0
  47. data/lib/spec/mocks.rb +224 -1
  48. data/lib/spec/mocks/argument_expectation.rb +16 -2
  49. data/lib/spec/mocks/error_generator.rb +5 -3
  50. data/lib/spec/mocks/errors.rb +2 -2
  51. data/lib/spec/mocks/extensions/object.rb +1 -1
  52. data/lib/spec/mocks/message_expectation.rb +29 -19
  53. data/lib/spec/mocks/{mock_methods.rb → methods.rb} +5 -5
  54. data/lib/spec/mocks/mock.rb +2 -2
  55. data/lib/spec/mocks/mock_handler.rb +81 -68
  56. data/lib/spec/rake/spectask.rb +7 -12
  57. data/lib/spec/rake/verify_rcov.rb +1 -1
  58. data/lib/spec/runner.rb +117 -0
  59. data/lib/spec/runner/command_line.rb +8 -5
  60. data/lib/spec/runner/context.rb +13 -37
  61. data/lib/spec/runner/context_eval.rb +4 -3
  62. data/lib/spec/runner/context_runner.rb +7 -4
  63. data/lib/spec/runner/drb_command_line.rb +1 -1
  64. data/lib/spec/runner/execution_context.rb +3 -11
  65. data/lib/spec/runner/extensions/kernel.rb +7 -5
  66. data/lib/spec/runner/extensions/object.rb +4 -1
  67. data/lib/spec/runner/formatter/base_text_formatter.rb +11 -3
  68. data/lib/spec/runner/formatter/html_formatter.rb +21 -10
  69. data/lib/spec/runner/heckle_runner.rb +24 -8
  70. data/lib/spec/runner/heckle_runner_win.rb +10 -0
  71. data/lib/spec/runner/option_parser.rb +58 -13
  72. data/lib/spec/runner/spec_matcher.rb +22 -29
  73. data/lib/spec/runner/spec_parser.rb +1 -0
  74. data/lib/spec/runner/specification.rb +36 -22
  75. data/lib/spec/translator.rb +87 -0
  76. data/lib/spec/version.rb +16 -7
  77. data/spec/spec/callback/callback_container_spec.rb +27 -0
  78. data/spec/spec/callback/module_spec.rb +37 -0
  79. data/spec/spec/callback/object_spec.rb +90 -0
  80. data/spec/spec/callback/object_with_class_callback_spec.rb +19 -0
  81. data/spec/spec/expectations/differs/default_spec.rb +107 -0
  82. data/spec/spec/expectations/extensions/object_spec.rb +46 -0
  83. data/spec/spec/expectations/fail_with_spec.rb +71 -0
  84. data/spec/spec/expectations/should/should_==_spec.rb +19 -0
  85. data/spec/spec/expectations/should/should_=~_spec.rb +13 -0
  86. data/spec/spec/expectations/should/should_be_a_kind_of_spec.rb +21 -0
  87. data/spec/spec/expectations/should/should_be_an_instance_of_spec.rb +30 -0
  88. data/spec/spec/expectations/should/should_be_arbitrary_predicate_spec.rb +81 -0
  89. data/spec/spec/expectations/should/should_be_close_spec.rb +18 -0
  90. data/spec/spec/expectations/should/should_be_comparison_operator_spec.rb +44 -0
  91. data/spec/spec/expectations/should/should_be_false_spec.rb +39 -0
  92. data/spec/spec/expectations/should/should_be_spec.rb +11 -0
  93. data/spec/spec/expectations/should/should_be_true_spec.rb +27 -0
  94. data/spec/spec/expectations/should/should_change_spec.rb +184 -0
  95. data/spec/spec/expectations/should/should_eql_spec.rb +11 -0
  96. data/spec/spec/expectations/should/should_equal_spec.rb +11 -0
  97. data/spec/spec/expectations/should/should_have_at_least_spec.rb +53 -0
  98. data/spec/spec/expectations/should/should_have_at_most_spec.rb +45 -0
  99. data/spec/spec/expectations/should/should_have_key_spec.rb +21 -0
  100. data/spec/spec/expectations/should/should_have_spec.rb +64 -0
  101. data/spec/spec/expectations/should/should_include_spec.rb +59 -0
  102. data/spec/spec/expectations/should/should_match_spec.rb +25 -0
  103. data/spec/spec/expectations/should/should_not_==_spec.rb +15 -0
  104. data/spec/spec/expectations/should/should_not_be_a_kind_of_spec.rb +21 -0
  105. data/spec/spec/expectations/should/should_not_be_an_instance_of_spec.rb +11 -0
  106. data/spec/spec/expectations/should/should_not_be_arbitrary_predicate_spec.rb +68 -0
  107. data/spec/spec/expectations/should/should_not_be_spec.rb +11 -0
  108. data/spec/spec/expectations/should/should_not_change_spec.rb +24 -0
  109. data/spec/spec/expectations/should/should_not_eql_spec.rb +11 -0
  110. data/spec/spec/expectations/should/should_not_equal_spec.rb +11 -0
  111. data/spec/spec/expectations/should/should_not_have_key_spec.rb +15 -0
  112. data/spec/spec/expectations/should/should_not_include_spec.rb +58 -0
  113. data/spec/spec/expectations/should/should_not_match_spec.rb +11 -0
  114. data/spec/spec/expectations/should/should_not_raise_spec.rb +75 -0
  115. data/spec/spec/expectations/should/should_not_respond_to_spec.rb +15 -0
  116. data/spec/spec/expectations/should/should_not_throw_spec.rb +35 -0
  117. data/spec/spec/expectations/should/should_raise_spec.rb +66 -0
  118. data/spec/spec/expectations/should/should_respond_to_spec.rb +15 -0
  119. data/spec/spec/expectations/should/should_satisfy_spec.rb +35 -0
  120. data/spec/spec/expectations/should/should_throw_spec.rb +27 -0
  121. data/spec/spec/matchers/be_close_spec.rb +33 -0
  122. data/spec/spec/matchers/be_spec.rb +182 -0
  123. data/spec/spec/matchers/change_spec.rb +232 -0
  124. data/spec/spec/matchers/description_generation_spec.rb +147 -0
  125. data/spec/spec/matchers/eql_spec.rb +41 -0
  126. data/spec/spec/matchers/equal_spec.rb +41 -0
  127. data/spec/spec/matchers/handler_spec.rb +75 -0
  128. data/spec/spec/matchers/has_spec.rb +37 -0
  129. data/spec/spec/matchers/have_spec.rb +259 -0
  130. data/spec/spec/matchers/include_spec.rb +33 -0
  131. data/spec/spec/matchers/match_spec.rb +37 -0
  132. data/spec/spec/matchers/matcher_methods_spec.rb +85 -0
  133. data/spec/spec/matchers/raise_error_spec.rb +147 -0
  134. data/spec/spec/matchers/respond_to_spec.rb +30 -0
  135. data/spec/spec/matchers/satisfy_spec.rb +36 -0
  136. data/spec/spec/matchers/throw_symbol_spec.rb +59 -0
  137. data/spec/spec/mocks/any_number_of_times_spec.rb +34 -0
  138. data/spec/spec/mocks/at_least_spec.rb +97 -0
  139. data/spec/spec/mocks/at_most_spec.rb +97 -0
  140. data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  141. data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  142. data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  143. data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  144. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +74 -0
  145. data/spec/spec/mocks/mock_ordering_spec.rb +80 -0
  146. data/spec/spec/mocks/mock_spec.rb +407 -0
  147. data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  148. data/spec/spec/mocks/null_object_mock_spec.rb +40 -0
  149. data/spec/spec/mocks/once_counts_spec.rb +56 -0
  150. data/spec/spec/mocks/options_hash_spec.rb +31 -0
  151. data/spec/spec/mocks/partial_mock_spec.rb +52 -0
  152. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +64 -0
  153. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +92 -0
  154. data/spec/spec/mocks/precise_counts_spec.rb +56 -0
  155. data/spec/spec/mocks/record_messages_spec.rb +26 -0
  156. data/spec/spec/mocks/stub_spec.rb +159 -0
  157. data/spec/spec/mocks/twice_counts_spec.rb +67 -0
  158. data/spec/spec/runner/command_line_spec.rb +32 -0
  159. data/spec/spec/runner/context_matching_spec.rb +28 -0
  160. data/spec/spec/runner/context_runner_spec.rb +100 -0
  161. data/spec/spec/runner/context_spec.rb +405 -0
  162. data/spec/spec/runner/drb_command_line_spec.rb +74 -0
  163. data/spec/spec/runner/execution_context_spec.rb +52 -0
  164. data/spec/spec/runner/formatter/html_formatter_spec.rb +40 -0
  165. data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +21 -0
  166. data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +36 -0
  167. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +78 -0
  168. data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +18 -0
  169. data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +41 -0
  170. data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +21 -0
  171. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +46 -0
  172. data/spec/spec/runner/heckle_runner_spec.rb +63 -0
  173. data/spec/spec/runner/heckler_spec.rb +14 -0
  174. data/spec/spec/runner/kernel_ext_spec.rb +16 -0
  175. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
  176. data/spec/spec/runner/object_ext_spec.rb +11 -0
  177. data/spec/spec/runner/option_parser_spec.rb +269 -0
  178. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +47 -0
  179. data/spec/spec/runner/reporter_spec.rb +126 -0
  180. data/spec/spec/runner/spec_matcher_spec.rb +107 -0
  181. data/spec/spec/runner/spec_name_generation_spec.rb +102 -0
  182. data/spec/spec/runner/spec_parser_spec.rb +37 -0
  183. data/spec/spec/runner/specification_class_spec.rb +72 -0
  184. data/spec/spec/runner/specification_instance_spec.rb +160 -0
  185. data/spec/spec/runner/specification_should_raise_spec.rb +136 -0
  186. data/spec/spec/spec_classes.rb +102 -0
  187. data/spec/spec/translator_spec.rb +79 -0
  188. data/spec/spec_helper.rb +35 -0
  189. metadata +141 -9
  190. data/bin/drbspec +0 -3
  191. data/lib/spec/expectations/diff.rb +0 -28
  192. data/lib/spec/expectations/extensions/numeric.rb +0 -19
  193. data/lib/spec/expectations/extensions/string.rb +0 -22
  194. data/lib/spec/expectations/message_builder.rb +0 -13
@@ -0,0 +1,33 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ context "should include(expected)" do
4
+ specify "should pass if target includes expected" do
5
+ [1,2,3].should include(3)
6
+ "abc".should include("a")
7
+ end
8
+
9
+ specify "should fail if target does not include expected" do
10
+ lambda {
11
+ [1,2,3].should include(4)
12
+ }.should fail_with("expected [1, 2, 3] to include 4")
13
+ lambda {
14
+ "abc".should include("d")
15
+ }.should fail_with("expected \"abc\" to include \"d\"")
16
+ end
17
+ end
18
+
19
+ context "should_not include(expected)" do
20
+ specify "should pass if target does not include expected" do
21
+ [1,2,3].should_not include(4)
22
+ "abc".should_not include("d")
23
+ end
24
+
25
+ specify "should fail if target includes expected" do
26
+ lambda {
27
+ [1,2,3].should_not include(3)
28
+ }.should fail_with("expected [1, 2, 3] not to include 3")
29
+ lambda {
30
+ "abc".should_not include("c")
31
+ }.should fail_with("expected \"abc\" not to include \"c\"")
32
+ end
33
+ end
@@ -0,0 +1,37 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ context "should match(expected)" do
4
+ specify "should pass when target (String) matches expected (Regexp)" do
5
+ "string".should match(/tri/)
6
+ end
7
+
8
+ specify "should fail when target (String) matches expected (Regexp)" do
9
+ lambda {
10
+ "string".should match(/rings/)
11
+ }.should fail
12
+ end
13
+
14
+ specify "should provide message, expected and actual on failure" do
15
+ matcher = match(/rings/)
16
+ matcher.matches?("string")
17
+ matcher.failure_message.should == ["expected \"string\" to match /rings/", /rings/, "string"]
18
+ end
19
+ end
20
+
21
+ context "should_not match(expected)" do
22
+ specify "should pass when target (String) matches expected (Regexp)" do
23
+ "string".should_not match(/rings/)
24
+ end
25
+
26
+ specify "should fail when target (String) matches expected (Regexp)" do
27
+ lambda {
28
+ "string".should_not match(/tri/)
29
+ }.should fail
30
+ end
31
+
32
+ specify "should provide message, expected and actual on failure" do
33
+ matcher = match(/tri/)
34
+ matcher.matches?("string")
35
+ matcher.negative_failure_message.should == ["expected \"string\" not to match /tri/", /tri/, "string"]
36
+ end
37
+ end
@@ -0,0 +1,85 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Matchers
5
+
6
+ context "Spec::Matchers should support" do
7
+ specify "be_true" do
8
+ be_true.should be_an_instance_of(Be)
9
+ end
10
+ specify "be_false" do
11
+ be_false.should be_an_instance_of(Be)
12
+ end
13
+ specify "be_nil" do
14
+ be_nil.should be_an_instance_of(Be)
15
+ end
16
+ specify "be_arbitrary_predicate" do
17
+ be_arbitrary_predicate.should be_an_instance_of(Be)
18
+ end
19
+ specify "be_close" do
20
+ be_close(1,2).should be_an_instance_of(BeClose)
21
+ end
22
+ specify "change" do
23
+ change("target", :message).should be_an_instance_of(Change)
24
+ end
25
+ specify "eql" do
26
+ eql(:expected).should be_an_instance_of(Eql)
27
+ end
28
+ specify "equal" do
29
+ equal(:expected).should be_an_instance_of(Equal)
30
+ end
31
+ specify "have_x > has_x?" do
32
+ have_key(:key).should be_an_instance_of(Has)
33
+ end
34
+ specify "have" do
35
+ have(0).should be_an_instance_of(Have)
36
+ end
37
+ specify "have_exactly" do
38
+ have_exactly(0).should be_an_instance_of(Have)
39
+ end
40
+ specify "have_at_least" do
41
+ have_at_least(0).should be_an_instance_of(Have)
42
+ end
43
+ specify "have_at_most" do
44
+ have_at_most(0).should be_an_instance_of(Have)
45
+ end
46
+ specify "include" do
47
+ include(:value).should be_an_instance_of(Include)
48
+ end
49
+ specify "match" do
50
+ match(:value).should be_an_instance_of(Match)
51
+ end
52
+ specify "raise_error" do
53
+ raise_error.should be_an_instance_of(RaiseError)
54
+ raise_error(NoMethodError).should be_an_instance_of(RaiseError)
55
+ raise_error(NoMethodError, "message").should be_an_instance_of(RaiseError)
56
+ end
57
+ specify "satisfy" do
58
+ satisfy{}.should be_an_instance_of(Satisfy)
59
+ end
60
+ specify "throw_symbol" do
61
+ throw_symbol.should be_an_instance_of(ThrowSymbol)
62
+ throw_symbol(:sym).should be_an_instance_of(ThrowSymbol)
63
+ end
64
+ specify "respond_to" do
65
+ respond_to(:sym).should be_an_instance_of(RespondTo)
66
+ end
67
+
68
+ end
69
+
70
+ context "Spec::Matchers should convert be_xyz to..." do
71
+ specify "sym passed to Be" do
72
+ Be.should_receive(:new).with(:be_whatever)
73
+ be_whatever
74
+ end
75
+ end
76
+
77
+ context "Spec::Matchers should convert have_xyz to..." do
78
+ specify "string passed to Has" do
79
+ Has.should_receive(:new).with(:have_whatever)
80
+ have_whatever
81
+ end
82
+ end
83
+
84
+ end
85
+ end
@@ -0,0 +1,147 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ context "should raise_error" do
4
+ specify "should pass if anything is raised" do
5
+ lambda {raise}.should raise_error
6
+ end
7
+
8
+ specify "should fail if nothing is raised" do
9
+ lambda {
10
+ lambda {}.should raise_error
11
+ }.should fail_with("expected Exception but nothing was raised")
12
+ end
13
+ end
14
+
15
+ context "should_not raise_error" do
16
+ specify "should pass if nothing is raised" do
17
+ lambda {}.should_not raise_error
18
+ end
19
+
20
+ specify "should fail if anything is raised" do
21
+ lambda {
22
+ lambda {raise}.should_not raise_error
23
+ }.should fail_with("expected no Exception, got RuntimeError")
24
+ end
25
+ end
26
+
27
+ context "should raise_error(NamedError)" do
28
+ specify "should pass if named error is raised" do
29
+ lambda { non_existent_method }.should raise_error(NameError)
30
+ end
31
+
32
+ specify "should fail if nothing is raised" do
33
+ lambda {
34
+ lambda { }.should raise_error(NameError)
35
+ }.should fail_with("expected NameError but nothing was raised")
36
+ end
37
+
38
+ specify "should fail if another error is raised" do
39
+ lambda {
40
+ lambda { raise }.should raise_error(NameError)
41
+ }.should fail_with("expected NameError, got RuntimeError")
42
+ end
43
+ end
44
+
45
+ context "should_not raise_error(NamedError)" do
46
+ specify "should pass if nothing is raised" do
47
+ lambda { }.should_not raise_error(NameError)
48
+ end
49
+
50
+ specify "should pass if another error is raised" do
51
+ lambda { raise }.should_not raise_error(NameError)
52
+ end
53
+
54
+ specify "should fail if named error is raised" do
55
+ lambda {
56
+ lambda { non_existent_method }.should_not raise_error(NameError)
57
+ }.should fail_with(/expected no NameError, got #<NameError: undefined/)
58
+ end
59
+ end
60
+
61
+ context "should raise_error(NamedError, error_message) with String" do
62
+ specify "should pass if named error is raised with same message" do
63
+ lambda { raise "example message" }.should raise_error(RuntimeError, "example message")
64
+ end
65
+
66
+ specify "should fail if nothing is raised" do
67
+ lambda {
68
+ lambda {}.should raise_error(RuntimeError, "example message")
69
+ }.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
70
+ end
71
+
72
+ specify "should fail if incorrect error is raised" do
73
+ lambda {
74
+ lambda { raise }.should raise_error(NameError, "example message")
75
+ }.should fail_with("expected NameError with \"example message\", got RuntimeError")
76
+ end
77
+
78
+ specify "should fail if correct error is raised with incorrect message" do
79
+ lambda {
80
+ lambda { raise RuntimeError.new("not the example message") }.should raise_error(RuntimeError, "example message")
81
+ }.should fail_with(/expected RuntimeError with \"example message\", got #<RuntimeError: not the example message/)
82
+ end
83
+ end
84
+
85
+ context "should_not raise_error(NamedError, error_message) with String" do
86
+ specify "should pass if nothing is raised" do
87
+ lambda {}.should_not raise_error(RuntimeError, "example message")
88
+ end
89
+
90
+ specify "should pass if a different error is raised" do
91
+ lambda { raise }.should_not raise_error(NameError, "example message")
92
+ end
93
+
94
+ specify "should pass if same error is raised with different message" do
95
+ lambda { raise RuntimeError.new("not the example message") }.should_not raise_error(RuntimeError, "example message")
96
+ end
97
+
98
+ specify "should fail if named error is raised with same message" do
99
+ lambda {
100
+ lambda { raise "example message" }.should_not raise_error(RuntimeError, "example message")
101
+ }.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
102
+ end
103
+ end
104
+
105
+ context "should raise_error(NamedError, error_message) with Regexp" do
106
+ specify "should pass if named error is raised with matching message" do
107
+ lambda { raise "example message" }.should raise_error(RuntimeError, /ample mess/)
108
+ end
109
+
110
+ specify "should fail if nothing is raised" do
111
+ lambda {
112
+ lambda {}.should raise_error(RuntimeError, /ample mess/)
113
+ }.should fail_with("expected RuntimeError with message matching /ample mess/ but nothing was raised")
114
+ end
115
+
116
+ specify "should fail if incorrect error is raised" do
117
+ lambda {
118
+ lambda { raise }.should raise_error(NameError, /ample mess/)
119
+ }.should fail_with("expected NameError with message matching /ample mess/, got RuntimeError")
120
+ end
121
+
122
+ specify "should fail if correct error is raised with incorrect message" do
123
+ lambda {
124
+ lambda { raise RuntimeError.new("not the example message") }.should raise_error(RuntimeError, /less than ample mess/)
125
+ }.should fail_with("expected RuntimeError with message matching /less than ample mess/, got #<RuntimeError: not the example message>")
126
+ end
127
+ end
128
+
129
+ context "should_not raise_error(NamedError, error_message) with Regexp" do
130
+ specify "should pass if nothing is raised" do
131
+ lambda {}.should_not raise_error(RuntimeError, /ample mess/)
132
+ end
133
+
134
+ specify "should pass if a different error is raised" do
135
+ lambda { raise }.should_not raise_error(NameError, /ample mess/)
136
+ end
137
+
138
+ specify "should pass if same error is raised with non-matching message" do
139
+ lambda { raise RuntimeError.new("non matching message") }.should_not raise_error(RuntimeError, /ample mess/)
140
+ end
141
+
142
+ specify "should fail if named error is raised with matching message" do
143
+ lambda {
144
+ lambda { raise "example message" }.should_not raise_error(RuntimeError, /ample mess/)
145
+ }.should fail_with("expected no RuntimeError with message matching /ample mess/, got #<RuntimeError: example message>")
146
+ end
147
+ end
@@ -0,0 +1,30 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ context "should respond_to(:sym)" do
4
+
5
+ specify "should pass if target responds to :sym" do
6
+ Object.new.should respond_to(:methods)
7
+ end
8
+
9
+ specify "should fail target does not respond to :sym" do
10
+ lambda {
11
+ Object.new.should respond_to(:some_method)
12
+ }.should fail_with("expected target to respond to :some_method")
13
+ end
14
+
15
+ end
16
+
17
+ context "should_not respond_to(:sym)" do
18
+
19
+ specify "should pass if target does not respond to :sym" do
20
+ Object.new.should_not respond_to(:some_method)
21
+ end
22
+
23
+ specify "should fail target responds to :sym" do
24
+ lambda {
25
+ Object.new.should_not respond_to(:methods)
26
+ }.should fail_with("expected target not to respond to :methods")
27
+ end
28
+
29
+ end
30
+
@@ -0,0 +1,36 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ context "should satisfy { block }" do
4
+ specify "should pass if block returns true" do
5
+ true.should satisfy { |val| val }
6
+ true.should satisfy do |val|
7
+ val
8
+ end
9
+ end
10
+
11
+ specify "should fail if block returns false" do
12
+ lambda {
13
+ false.should satisfy { |val| val }
14
+ }.should fail_with("expected false to satisfy block")
15
+ lambda do
16
+ false.should satisfy do |val|
17
+ val
18
+ end
19
+ end.should fail_with("expected false to satisfy block")
20
+ end
21
+ end
22
+
23
+ context "should_not satisfy { block }" do
24
+ specify "should pass if block returns false" do
25
+ false.should_not satisfy { |val| val }
26
+ false.should_not satisfy do |val|
27
+ val
28
+ end
29
+ end
30
+
31
+ specify "should fail if block returns true" do
32
+ lambda {
33
+ true.should_not satisfy { |val| val }
34
+ }.should fail_with("expected true not to satisfy block")
35
+ end
36
+ end
@@ -0,0 +1,59 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ context "should throw_symbol" do
4
+ specify "should pass if any Symbol is thrown" do
5
+ lambda{ throw :sym }.should throw_symbol
6
+ end
7
+
8
+ specify "should fail if no Symbol is thrown" do
9
+ lambda {
10
+ lambda { }.should throw_symbol
11
+ }.should fail_with("expected a Symbol but nothing was thrown")
12
+ end
13
+ end
14
+
15
+ context "should_not throw_symbol" do
16
+ specify "should pass if no Symbol is thrown" do
17
+ lambda{ }.should_not throw_symbol
18
+ end
19
+
20
+ specify "should fail if any Symbol is thrown" do
21
+ lambda {
22
+ lambda { throw :sym }.should_not throw_symbol
23
+ }.should fail_with("expected no Symbol, got :sym")
24
+ end
25
+ end
26
+
27
+ context "should throw_symbol(:sym)" do
28
+ specify "should pass if correct Symbol is thrown" do
29
+ lambda{ throw :sym }.should throw_symbol(:sym)
30
+ end
31
+
32
+ specify "should fail if no Symbol is thrown" do
33
+ lambda {
34
+ lambda { }.should throw_symbol(:sym)
35
+ }.should fail_with("expected :sym but nothing was thrown")
36
+ end
37
+
38
+ specify "should fail if wrong Symbol is thrown" do
39
+ lambda {
40
+ lambda { throw :wrong_sym }.should throw_symbol(:sym)
41
+ }.should fail_with("expected :sym, got :wrong_sym")
42
+ end
43
+ end
44
+
45
+ context "should_not throw_symbol(:sym)" do
46
+ specify "should pass if no Symbol is thrown" do
47
+ lambda { }.should_not throw_symbol(:sym)
48
+ end
49
+
50
+ specify "should pass if other Symbol is thrown" do
51
+ lambda { throw :wrong_sym }.should_not throw_symbol(:sym)
52
+ end
53
+
54
+ specify "should fail if correct Symbol is thrown" do
55
+ lambda {
56
+ lambda{ throw :sym }.should_not throw_symbol(:sym)
57
+ }.should fail_with("expected :sym not to be thrown")
58
+ end
59
+ end
@@ -0,0 +1,34 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Mocks
5
+ context "AnyNumberOfTimes" do
6
+ setup do
7
+ @mock = Mock.new("test mock", {
8
+ :auto_verify => false
9
+ })
10
+
11
+ end
12
+ specify "should pass if any number of times method is called many times" do
13
+ @mock.should_receive(:random_call).any_number_of_times
14
+ (1..10).each do
15
+ @mock.random_call
16
+ end
17
+ @mock.__verify
18
+
19
+ end
20
+ specify "should pass if any number of times method is called once" do
21
+ @mock.should_receive(:random_call).any_number_of_times
22
+ @mock.random_call
23
+ @mock.__verify
24
+
25
+ end
26
+ specify "should pass if any number of times method is not called" do
27
+ @mock.should_receive(:random_call).any_number_of_times
28
+ @mock.__verify
29
+
30
+ end
31
+
32
+ end
33
+ end
34
+ end