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,59 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "should_include" do
4
+ setup do
5
+ @dummy = "dummy"
6
+ @equal_dummy = "dummy"
7
+ @another_dummy = "another_dummy"
8
+ @nil_var = nil
9
+ end
10
+
11
+ specify "should fail when array inclusion is missing" do
12
+ lambda do
13
+ [1, 2, 3].should_include(5)
14
+ end.should_fail
15
+ end
16
+
17
+ specify "should fail when enumerable inclusion is missing" do
18
+ lambda do
19
+ IO.constants.should_include("BLAH")
20
+ end.should_fail
21
+ end
22
+
23
+ specify "should fail when hash inclusion is missing" do
24
+ lambda do
25
+ {"a" => 1}.should_include("b")
26
+ end.should_fail
27
+ end
28
+
29
+ specify "should fail when string inclusion is missing" do
30
+ lambda do
31
+ @dummy.should_include("abc")
32
+ end.should_fail
33
+ end
34
+
35
+ specify "should pass when array inclusion is present" do
36
+ lambda do
37
+ [1, 2, 3].should_include(2)
38
+ end.should_pass
39
+ end
40
+
41
+ specify "should pass when enumerable inclusion is present" do
42
+ lambda do
43
+ IO.constants.should_include("SEEK_SET")
44
+ end.should_pass
45
+ end
46
+
47
+ specify "should pass when hash inclusion is present" do
48
+ lambda do
49
+ {"a" => 1}.should_include("a")
50
+ end.should_pass
51
+ end
52
+
53
+ specify "should pass when string inclusion is present" do
54
+ lambda do
55
+ @dummy.should_include("mm")
56
+ end.should_pass
57
+ end
58
+ end
59
+
@@ -0,0 +1,25 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "should_match" do
4
+ specify "should pass when objects match" do
5
+ "hi aslak".should_match(/aslak/)
6
+ end
7
+
8
+ specify "should fail objects do not match" do
9
+ lambda do
10
+ "hi aslak".should_match(/steve/)
11
+ end.should_fail
12
+ end
13
+ end
14
+
15
+ context "should_not_match" do
16
+ specify "should fail when objects match" do
17
+ lambda do
18
+ "hi aslak".should_not_match(/aslak/)
19
+ end.should_fail
20
+ end
21
+
22
+ specify "should pass objects do not match" do
23
+ "hi aslak".should_not_match(/steve/)
24
+ end
25
+ end
@@ -0,0 +1,15 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "should_not ==" do
4
+ specify "should pass objects are not ==" do
5
+ lambda do
6
+ "apple".should_not == "cadillac"
7
+ end.should_pass
8
+ end
9
+
10
+ specify "should fail when objects are ==" do
11
+ lambda do
12
+ "apple".should_not == "apple"
13
+ end.should_fail_with "expected not == \"apple\", got \"apple\""
14
+ end
15
+ end
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "should_not_be_a_kind_of" do
4
+ specify "should fail when target is of specified class" do
5
+ lambda do
6
+ 5.should_not_be_a_kind_of(Fixnum)
7
+ end.should_fail
8
+ end
9
+
10
+ specify "should fail when target is of subclass of specified class" do
11
+ lambda do
12
+ 5.should_not_be_a_kind_of(Integer)
13
+ end.should_fail
14
+ end
15
+
16
+ specify "should pass when target is not specified class" do
17
+ lambda do
18
+ 5.should_not_be_a_kind_of(String)
19
+ end.should_not_raise
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "should_not_be_an_instance_of" do
4
+ specify "should fail when target is of specified class" do
5
+ lambda { "hello".should_not_be_an_instance_of(String) }.should_fail
6
+ end
7
+
8
+ specify "should pass when target is not of specified class" do
9
+ [].should_not_be_an_instance_of(String)
10
+ end
11
+ end
@@ -0,0 +1,68 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Expectations
5
+ module Helper
6
+ context "should_not_be_arbitrary_predicate" do
7
+ specify "should fail when method returns something other than true false or nil" do
8
+ mock=HandCodedMock.new(5)
9
+ lambda do
10
+ mock.should_not_be_funny
11
+ end.should_fail
12
+ mock.__verify
13
+ end
14
+
15
+ specify "should fail when predicate accepts args and returns true" do
16
+ mock=HandCodedMock.new(true)
17
+ lambda do
18
+ mock.should_not_be_hungry(1, 2, 3)
19
+ end.should_fail
20
+ mock.__verify
21
+ end
22
+
23
+ specify "should fail when predicate returns true" do
24
+ mock=HandCodedMock.new(true)
25
+ lambda do
26
+ mock.should_not_be_funny
27
+ end.should_fail
28
+ mock.__verify
29
+ end
30
+
31
+ specify "should pass when predicate accepts args and returns false" do
32
+ mock=HandCodedMock.new(false)
33
+ lambda do
34
+ mock.should_not_be_hungry(1, 2, 3)
35
+ end.should_not_raise
36
+ mock.__verify
37
+ end
38
+
39
+ specify "should pass when predicate returns false" do
40
+ mock=HandCodedMock.new(false)
41
+ mock.should_not_be_funny
42
+ mock.__verify
43
+ end
44
+
45
+ specify "should pass when predicate returns nil" do
46
+ mock=HandCodedMock.new(nil)
47
+ mock.should_not_be_funny
48
+ mock.__verify
49
+ end
50
+
51
+ specify "should raise NoMethodError when target does not respond to predicate" do
52
+ lambda do
53
+ 5.should_not_be_funny
54
+ end.should_raise(NameError)
55
+ end
56
+
57
+ specify "should support multi word predicates with should" do
58
+ HandCodedMock.new(false).should_not_multi_word_predicate
59
+ end
60
+
61
+ specify "should support multi word predicates with should be" do
62
+ HandCodedMock.new(false).should_not_be_multi_word_predicate
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "should_not_be" do
4
+ specify "should pass when objects are not the same instance" do
5
+ "apple".should_not_be("apple")
6
+ end
7
+
8
+ specify "should fail when objects are the same instance" do
9
+ lambda { :apple.should_not_be(:apple) }.should_fail
10
+ end
11
+ end
@@ -0,0 +1,24 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ class SomethingExpected
4
+ attr_accessor :some_value
5
+ end
6
+
7
+ context "should_not_change" do
8
+ setup do
9
+ @instance = SomethingExpected.new
10
+ @instance.some_value = 5
11
+ end
12
+
13
+ specify "should not raise exception when the target is not modified by the block" do
14
+ lambda do
15
+ lambda {nil}.should_not_change(@instance, :some_value)
16
+ end.should_not_raise
17
+ end
18
+
19
+ specify "should raise exception when the target is modified by the block" do
20
+ lambda do
21
+ lambda {@instance.some_value = 6}.should_not_change(@instance, :some_value)
22
+ end.should_fail_with "some_value should not have changed, but did change from 5 to 6"
23
+ end
24
+ end
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "should_not_eql" do
4
+ specify "should pass when objects are not equal (by value)" do
5
+ "apples".should_not_eql("cadillacs")
6
+ end
7
+
8
+ specify "should fail when objects are equal (by value)" do
9
+ lambda { "apple".should_not_eql("apple") }.should_fail_with "expected \"apple\" not to equal \"apple\" (using .eql?)"
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "should_not_equal" do
4
+ specify "should pass when objects are not the same instance" do
5
+ "apple".should_not_equal("apple")
6
+ end
7
+
8
+ specify "should fail when objects are the same instance" do
9
+ lambda { :apple.should_not_equal(:apple) }.should_fail_with "expected :apple not to equal :apple (using .equal?)"
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "should_not_have_key" do
4
+ specify "should pass when key is not present" do
5
+ lambda do
6
+ {"a" => 1}.should_not_have_key("b")
7
+ end.should_not_raise
8
+ end
9
+
10
+ specify "should fail when key is present" do
11
+ lambda do
12
+ {"a" => 1}.should_not_have_key("a")
13
+ end.should_fail_with('expected #has_key?("a") to return false, got true')
14
+ end
15
+ end
@@ -0,0 +1,58 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "should_not_include" do
4
+ setup do
5
+ @dummy = "dummy"
6
+ @equal_dummy = "dummy"
7
+ @another_dummy = "another_dummy"
8
+ @nil_var = nil
9
+ end
10
+
11
+ specify "should fail when array inclusion is present" do
12
+ lambda do
13
+ [1, 2, 3].should_not_include(2)
14
+ end.should_fail
15
+ end
16
+
17
+ specify "should fail when enumerable inclusion is missing" do
18
+ lambda do
19
+ IO.constants.should_not_include("SEEK_SET")
20
+ end.should_fail
21
+ end
22
+
23
+ specify "should fail when hash inclusion is present" do
24
+ lambda do
25
+ {"a" => 1}.should_not_include("a")
26
+ end.should_fail
27
+ end
28
+
29
+ specify "should fail when string inclusion is present" do
30
+ lambda do
31
+ @dummy.should_not_include("mm")
32
+ end.should_fail
33
+ end
34
+
35
+ specify "should pass when array inclusion is missing" do
36
+ lambda do
37
+ [1, 2, 3].should_not_include(5)
38
+ end.should_pass
39
+ end
40
+
41
+ specify "should pass when enumerable inclusion is present" do
42
+ lambda do
43
+ IO.constants.should_not_include("BLAH")
44
+ end.should_pass
45
+ end
46
+
47
+ specify "should pass when hash inclusion is missing" do
48
+ lambda do
49
+ {"a" => 1}.should_not_include("b")
50
+ end.should_pass
51
+ end
52
+
53
+ specify "should pass when string inclusion is missing" do
54
+ lambda do
55
+ @dummy.should_not_include("abc")
56
+ end.should_pass
57
+ end
58
+ end
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "should_not_match" do
4
+ specify "should not raise when objects do not match" do
5
+ "hi aslak".should_not_match(/steve/)
6
+ end
7
+
8
+ specify "should raise when objects match" do
9
+ lambda { "hi aslak".should_not_match(/aslak/) }.should_fail
10
+ end
11
+ end
@@ -0,0 +1,75 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "should_not_raise" do
4
+ specify "should fail when specific exception is raised" do
5
+ lambda {
6
+ lambda do
7
+ "".nonexistent_method
8
+ end.should_not_raise(NoMethodError)
9
+ }.should_fail_with /expected no NoMethodError, got #<NoMethodError: undefined method/
10
+ end
11
+
12
+ specify "should fail when exact exception is raised with message" do
13
+ lambda do
14
+ lambda do
15
+ raise(StandardError.new("abc"))
16
+ end.should_not_raise(StandardError, "abc")
17
+ end.should_fail_with "expected no StandardError with \"abc\", got #<StandardError: abc>"
18
+ end
19
+
20
+ specify "should fail when exact exception is raised with message matching regexp" do
21
+ lambda do
22
+ lambda do
23
+ raise(StandardError.new("abc"))
24
+ end.should_not_raise(StandardError, /^a.c$/)
25
+ end.should_fail_with "expected no StandardError with message matching /^a.c$/, got #<StandardError: abc>"
26
+ end
27
+
28
+ specify "should include actual error in failure message" do
29
+ lambda {
30
+ lambda {
31
+ "".nonexistent_method
32
+ }.should_not_raise(Exception)
33
+ }.should_fail_with /expected no Exception, got #<NoMethodError: undefined method/
34
+ end
35
+
36
+ specify "should pass when exact exception is raised with wrong message" do
37
+ lambda do
38
+ lambda do
39
+ raise(StandardError.new("abc"))
40
+ end.should_not_raise(StandardError, "xyz")
41
+ end.should_pass
42
+ end
43
+
44
+ specify "should pass when exact exception is raised with message not matching regexp" do
45
+ lambda do
46
+ lambda do
47
+ raise(StandardError.new("abc"))
48
+ end.should_not_raise(StandardError, /xyz/)
49
+ end.should_pass
50
+ end
51
+
52
+ specify "should pass when no exception is raised" do
53
+ lambda do
54
+ lambda do
55
+ "".to_s
56
+ end.should_not_raise(NoMethodError)
57
+ end.should_pass
58
+ end
59
+
60
+ specify "should pass when other exception is raised" do
61
+ lambda do
62
+ lambda do
63
+ "".nonexistent_method
64
+ end.should_not_raise(SyntaxError)
65
+ end.should_pass
66
+ end
67
+
68
+ specify "without exception should pass when no exception is raised" do
69
+ lambda do
70
+ lambda do
71
+ "".to_s
72
+ end.should_not_raise
73
+ end.should_pass
74
+ end
75
+ end
@@ -0,0 +1,15 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "should_not_respond_to" do
4
+ specify "should fail when target responds to" do
5
+ lambda do
6
+ "".should_not_respond_to(:length)
7
+ end.should_fail
8
+ end
9
+
10
+ specify "should pass when target doesnt respond to" do
11
+ lambda do
12
+ "".should_not_respond_to(:connect)
13
+ end.should_not_raise
14
+ end
15
+ end