rspec 0.8.2 → 0.9.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 (245) hide show
  1. data/CHANGES +125 -9
  2. data/EXAMPLES.rd +50 -27
  3. data/README +14 -1
  4. data/Rakefile +95 -42
  5. data/UPGRADE +31 -0
  6. data/bin/spec +0 -1
  7. data/bin/spec_translator +6 -0
  8. data/examples/auto_spec_description_example.rb +19 -0
  9. data/examples/{setup_teardown_example.rb → before_and_after_example.rb} +6 -6
  10. data/examples/behave_as_example.rb +45 -0
  11. data/examples/custom_expectation_matchers.rb +13 -12
  12. data/examples/dynamic_spec.rb +2 -2
  13. data/examples/file_accessor_spec.rb +2 -2
  14. data/examples/greeter_spec.rb +3 -3
  15. data/examples/helper_method_example.rb +2 -2
  16. data/examples/io_processor_spec.rb +4 -4
  17. data/examples/legacy_spec.rb +10 -0
  18. data/examples/mocking_example.rb +5 -5
  19. data/examples/multi_threaded_behaviour_runner.rb +25 -0
  20. data/examples/partial_mock_example.rb +4 -4
  21. data/examples/predicate_example.rb +4 -4
  22. data/examples/priority.txt +1 -0
  23. data/examples/shared_behaviours_example.rb +31 -0
  24. data/examples/stack_spec.rb +52 -69
  25. data/examples/stubbing_example.rb +10 -10
  26. data/examples/test_case_adapter_example.rb +26 -0
  27. data/examples/test_case_spec.rb +6 -6
  28. data/lib/spec.rb +9 -4
  29. data/lib/spec/dsl.rb +10 -0
  30. data/lib/spec/dsl/behaviour.rb +189 -0
  31. data/lib/spec/dsl/behaviour_callbacks.rb +43 -0
  32. data/lib/spec/dsl/behaviour_eval.rb +170 -0
  33. data/lib/spec/dsl/behaviour_factory.rb +32 -0
  34. data/lib/spec/dsl/composite_proc_builder.rb +28 -0
  35. data/lib/spec/dsl/configuration.rb +38 -0
  36. data/lib/spec/dsl/description.rb +34 -0
  37. data/lib/spec/dsl/example.rb +114 -0
  38. data/lib/spec/dsl/example_matcher.rb +28 -0
  39. data/lib/spec/{runner/spec_should_raise_handler.rb → dsl/example_should_raise_handler.rb} +4 -4
  40. data/lib/spec/expectations.rb +0 -3
  41. data/lib/spec/expectations/differs/default.rb +0 -1
  42. data/lib/spec/expectations/extensions.rb +0 -1
  43. data/lib/spec/expectations/extensions/object.rb +10 -53
  44. data/lib/spec/expectations/handler.rb +14 -18
  45. data/lib/spec/extensions.rb +1 -0
  46. data/lib/spec/extensions/object.rb +6 -0
  47. data/lib/spec/matchers.rb +19 -21
  48. data/lib/spec/matchers/be.rb +40 -11
  49. data/lib/spec/matchers/be_close.rb +2 -2
  50. data/lib/spec/matchers/operator_matcher.rb +52 -0
  51. data/lib/spec/matchers/respond_to.rb +21 -11
  52. data/lib/spec/mocks.rb +5 -28
  53. data/lib/spec/mocks/argument_constraint_matchers.rb +12 -0
  54. data/lib/spec/mocks/argument_expectation.rb +7 -4
  55. data/lib/spec/mocks/methods.rb +11 -16
  56. data/lib/spec/mocks/mock.rb +6 -3
  57. data/lib/spec/mocks/{mock_handler.rb → proxy.rb} +4 -7
  58. data/lib/spec/mocks/space.rb +28 -0
  59. data/lib/spec/mocks/spec_methods.rb +30 -0
  60. data/lib/spec/rake/spectask.rb +23 -21
  61. data/lib/spec/rake/verify_rcov.rb +1 -0
  62. data/lib/spec/runner.rb +88 -35
  63. data/lib/spec/runner/backtrace_tweaker.rb +2 -1
  64. data/lib/spec/runner/behaviour_runner.rb +102 -0
  65. data/lib/spec/runner/command_line.rb +5 -17
  66. data/lib/spec/runner/drb_command_line.rb +2 -2
  67. data/lib/spec/runner/extensions/kernel.rb +22 -9
  68. data/lib/spec/runner/formatter.rb +4 -0
  69. data/lib/spec/runner/formatter/base_formatter.rb +63 -0
  70. data/lib/spec/runner/formatter/base_text_formatter.rb +22 -52
  71. data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +25 -0
  72. data/lib/spec/runner/formatter/failing_examples_formatter.rb +22 -0
  73. data/lib/spec/runner/formatter/html_formatter.rb +74 -29
  74. data/lib/spec/runner/formatter/progress_bar_formatter.rb +6 -8
  75. data/lib/spec/runner/formatter/rdoc_formatter.rb +6 -6
  76. data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  77. data/lib/spec/runner/formatter/specdoc_formatter.rb +6 -6
  78. data/lib/spec/runner/heckle_runner.rb +8 -7
  79. data/lib/spec/runner/option_parser.rb +136 -55
  80. data/lib/spec/runner/options.rb +26 -0
  81. data/lib/spec/runner/reporter.rb +38 -31
  82. data/lib/spec/runner/spec_parser.rb +22 -13
  83. data/lib/spec/test_case_adapter.rb +10 -0
  84. data/lib/spec/translator.rb +103 -86
  85. data/lib/spec/version.rb +7 -15
  86. data/plugins/mock_frameworks/flexmock.rb +27 -0
  87. data/plugins/mock_frameworks/mocha.rb +21 -0
  88. data/plugins/mock_frameworks/rspec.rb +18 -0
  89. data/spec/spec/dsl/behaviour_eval_spec.rb +49 -0
  90. data/spec/spec/dsl/behaviour_factory_spec.rb +30 -0
  91. data/spec/spec/dsl/behaviour_spec.rb +508 -0
  92. data/spec/spec/dsl/composite_proc_builder_spec.rb +57 -0
  93. data/spec/spec/dsl/configuration_spec.rb +43 -0
  94. data/spec/spec/dsl/description_spec.rb +51 -0
  95. data/spec/spec/dsl/example_class_spec.rb +24 -0
  96. data/spec/spec/dsl/example_instance_spec.rb +140 -0
  97. data/spec/spec/dsl/example_should_raise_spec.rb +137 -0
  98. data/spec/spec/dsl/predicate_matcher_spec.rb +21 -0
  99. data/spec/spec/dsl/shared_behaviour_spec.rb +186 -0
  100. data/spec/spec/expectations/differs/default_spec.rb +12 -12
  101. data/spec/spec/expectations/extensions/object_spec.rb +10 -10
  102. data/spec/spec/expectations/fail_with_spec.rb +20 -20
  103. data/spec/spec/matchers/be_close_spec.rb +37 -31
  104. data/spec/spec/matchers/be_spec.rb +50 -41
  105. data/spec/spec/matchers/change_spec.rb +54 -54
  106. data/spec/spec/matchers/description_generation_spec.rb +43 -31
  107. data/spec/spec/matchers/eql_spec.rb +24 -37
  108. data/spec/spec/matchers/equal_spec.rb +24 -37
  109. data/spec/spec/matchers/exist_spec.rb +48 -0
  110. data/spec/spec/matchers/handler_spec.rb +36 -23
  111. data/spec/spec/matchers/has_spec.rb +8 -8
  112. data/spec/spec/matchers/have_spec.rb +38 -38
  113. data/spec/spec/matchers/include_spec.rb +6 -6
  114. data/spec/spec/matchers/match_spec.rb +8 -8
  115. data/spec/spec/matchers/matcher_methods_spec.rb +24 -31
  116. data/spec/spec/matchers/raise_error_spec.rb +34 -34
  117. data/spec/spec/matchers/respond_to_spec.rb +32 -8
  118. data/spec/spec/matchers/satisfy_spec.rb +6 -6
  119. data/spec/spec/matchers/should_===_spec.rb +38 -0
  120. data/spec/spec/matchers/should_==_spec.rb +37 -0
  121. data/spec/spec/matchers/should_=~_spec.rb +36 -0
  122. data/spec/spec/matchers/throw_symbol_spec.rb +47 -55
  123. data/spec/spec/mocks/any_number_of_times_spec.rb +16 -21
  124. data/spec/spec/mocks/argument_expectation_spec.rb +3 -3
  125. data/spec/spec/mocks/at_least_spec.rb +30 -30
  126. data/spec/spec/mocks/at_most_spec.rb +53 -57
  127. data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  128. data/spec/spec/mocks/bug_report_7611_spec.rb +3 -3
  129. data/spec/spec/mocks/bug_report_7805_spec.rb +3 -3
  130. data/spec/spec/mocks/bug_report_8165_spec.rb +5 -5
  131. data/spec/spec/mocks/bug_report_8302_spec.rb +5 -5
  132. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +26 -27
  133. data/spec/spec/mocks/mock_ordering_spec.rb +19 -15
  134. data/spec/spec/mocks/mock_space_spec.rb +54 -0
  135. data/spec/spec/mocks/mock_spec.rb +111 -141
  136. data/spec/spec/mocks/multiple_return_value_spec.rb +48 -48
  137. data/spec/spec/mocks/null_object_mock_spec.rb +10 -10
  138. data/spec/spec/mocks/once_counts_spec.rb +32 -35
  139. data/spec/spec/mocks/options_hash_spec.rb +12 -10
  140. data/spec/spec/mocks/partial_mock_spec.rb +15 -15
  141. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +24 -22
  142. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +19 -19
  143. data/spec/spec/mocks/precise_counts_spec.rb +28 -32
  144. data/spec/spec/mocks/record_messages_spec.rb +10 -10
  145. data/spec/spec/mocks/stub_spec.rb +45 -45
  146. data/spec/spec/mocks/twice_counts_spec.rb +21 -21
  147. data/spec/spec/package/bin_spec_spec.rb +12 -0
  148. data/spec/spec/runner/behaviour_runner_spec.rb +114 -0
  149. data/spec/spec/runner/command_line_spec.rb +8 -8
  150. data/spec/spec/runner/context_matching_spec.rb +14 -15
  151. data/spec/spec/runner/drb_command_line_spec.rb +12 -12
  152. data/spec/spec/runner/execution_context_spec.rb +8 -29
  153. data/spec/spec/runner/extensions/kernel_spec.rb +36 -0
  154. data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +27 -0
  155. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +28 -0
  156. data/spec/spec/runner/formatter/html_formatter_spec.rb +9 -8
  157. data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +6 -6
  158. data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +10 -10
  159. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +22 -27
  160. data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +6 -5
  161. data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +17 -17
  162. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +11 -0
  163. data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +6 -6
  164. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +17 -17
  165. data/spec/spec/runner/heckle_runner_spec.rb +21 -21
  166. data/spec/spec/runner/heckler_spec.rb +5 -5
  167. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +12 -12
  168. data/spec/spec/runner/object_ext_spec.rb +3 -3
  169. data/spec/spec/runner/option_parser_spec.rb +171 -102
  170. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +21 -12
  171. data/spec/spec/runner/reporter_spec.rb +106 -97
  172. data/spec/spec/runner/spec_matcher_spec.rb +46 -51
  173. data/spec/spec/runner/spec_parser_spec.rb +72 -16
  174. data/spec/spec/spec_classes.rb +12 -3
  175. data/spec/spec/translator_spec.rb +165 -36
  176. metadata +66 -76
  177. data/RELEASE-PLAN +0 -117
  178. data/examples/auto_spec_name_generation_example.rb +0 -18
  179. data/lib/spec/callback.rb +0 -11
  180. data/lib/spec/callback/callback_container.rb +0 -60
  181. data/lib/spec/callback/extensions/module.rb +0 -24
  182. data/lib/spec/callback/extensions/object.rb +0 -37
  183. data/lib/spec/deprecated.rb +0 -3
  184. data/lib/spec/expectations/extensions/proc.rb +0 -57
  185. data/lib/spec/expectations/should.rb +0 -5
  186. data/lib/spec/expectations/should/base.rb +0 -64
  187. data/lib/spec/expectations/should/change.rb +0 -69
  188. data/lib/spec/expectations/should/have.rb +0 -128
  189. data/lib/spec/expectations/should/not.rb +0 -74
  190. data/lib/spec/expectations/should/should.rb +0 -81
  191. data/lib/spec/expectations/sugar.rb +0 -47
  192. data/lib/spec/runner/context.rb +0 -154
  193. data/lib/spec/runner/context_eval.rb +0 -142
  194. data/lib/spec/runner/context_runner.rb +0 -55
  195. data/lib/spec/runner/execution_context.rb +0 -17
  196. data/lib/spec/runner/spec_matcher.rb +0 -25
  197. data/lib/spec/runner/specification.rb +0 -114
  198. data/spec/spec/callback/callback_container_spec.rb +0 -27
  199. data/spec/spec/callback/module_spec.rb +0 -37
  200. data/spec/spec/callback/object_spec.rb +0 -90
  201. data/spec/spec/callback/object_with_class_callback_spec.rb +0 -19
  202. data/spec/spec/expectations/should/should_==_spec.rb +0 -19
  203. data/spec/spec/expectations/should/should_=~_spec.rb +0 -13
  204. data/spec/spec/expectations/should/should_be_a_kind_of_spec.rb +0 -21
  205. data/spec/spec/expectations/should/should_be_an_instance_of_spec.rb +0 -30
  206. data/spec/spec/expectations/should/should_be_arbitrary_predicate_spec.rb +0 -81
  207. data/spec/spec/expectations/should/should_be_close_spec.rb +0 -18
  208. data/spec/spec/expectations/should/should_be_comparison_operator_spec.rb +0 -44
  209. data/spec/spec/expectations/should/should_be_false_spec.rb +0 -39
  210. data/spec/spec/expectations/should/should_be_spec.rb +0 -11
  211. data/spec/spec/expectations/should/should_be_true_spec.rb +0 -27
  212. data/spec/spec/expectations/should/should_change_spec.rb +0 -184
  213. data/spec/spec/expectations/should/should_eql_spec.rb +0 -11
  214. data/spec/spec/expectations/should/should_equal_spec.rb +0 -11
  215. data/spec/spec/expectations/should/should_have_at_least_spec.rb +0 -53
  216. data/spec/spec/expectations/should/should_have_at_most_spec.rb +0 -45
  217. data/spec/spec/expectations/should/should_have_key_spec.rb +0 -21
  218. data/spec/spec/expectations/should/should_have_spec.rb +0 -64
  219. data/spec/spec/expectations/should/should_include_spec.rb +0 -59
  220. data/spec/spec/expectations/should/should_match_spec.rb +0 -25
  221. data/spec/spec/expectations/should/should_not_==_spec.rb +0 -15
  222. data/spec/spec/expectations/should/should_not_be_a_kind_of_spec.rb +0 -21
  223. data/spec/spec/expectations/should/should_not_be_an_instance_of_spec.rb +0 -11
  224. data/spec/spec/expectations/should/should_not_be_arbitrary_predicate_spec.rb +0 -68
  225. data/spec/spec/expectations/should/should_not_be_spec.rb +0 -11
  226. data/spec/spec/expectations/should/should_not_change_spec.rb +0 -24
  227. data/spec/spec/expectations/should/should_not_eql_spec.rb +0 -11
  228. data/spec/spec/expectations/should/should_not_equal_spec.rb +0 -11
  229. data/spec/spec/expectations/should/should_not_have_key_spec.rb +0 -15
  230. data/spec/spec/expectations/should/should_not_include_spec.rb +0 -58
  231. data/spec/spec/expectations/should/should_not_match_spec.rb +0 -11
  232. data/spec/spec/expectations/should/should_not_raise_spec.rb +0 -75
  233. data/spec/spec/expectations/should/should_not_respond_to_spec.rb +0 -15
  234. data/spec/spec/expectations/should/should_not_throw_spec.rb +0 -35
  235. data/spec/spec/expectations/should/should_raise_spec.rb +0 -66
  236. data/spec/spec/expectations/should/should_respond_to_spec.rb +0 -15
  237. data/spec/spec/expectations/should/should_satisfy_spec.rb +0 -35
  238. data/spec/spec/expectations/should/should_throw_spec.rb +0 -27
  239. data/spec/spec/runner/context_runner_spec.rb +0 -100
  240. data/spec/spec/runner/context_spec.rb +0 -405
  241. data/spec/spec/runner/kernel_ext_spec.rb +0 -16
  242. data/spec/spec/runner/spec_name_generation_spec.rb +0 -102
  243. data/spec/spec/runner/specification_class_spec.rb +0 -72
  244. data/spec/spec/runner/specification_instance_spec.rb +0 -160
  245. data/spec/spec/runner/specification_should_raise_spec.rb +0 -136
@@ -1,117 +0,0 @@
1
- Beginning with 0.8.0, RSpec is moving towards a new syntax using Expression Matchers
2
- instead of adding expectations directly to Object. We'll still be adding a few methods
3
- to Object, but it will be much less invasive, and will eliminate conflicts with
4
- other tools and frameworks that utilize method_missing to perform magic.
5
-
6
- For more information on Expression Matchers, see the rdoc for Spec::Matchers
7
-
8
- Our plan is as follows:
9
-
10
- * release 0.8.0 with:
11
- - full support for Expression Matchers
12
- - a translation tool that will convert the majority of your specs from the old syntax to the new syntax
13
- - deprecation warnings for all of the old methods that will be removed
14
- * release 0.9.0 with all of the old methods removed
15
-
16
- Everything that is listed below is already supported and usable right now.
17
-
18
- == General: should_xyz
19
-
20
- #before
21
- actual.should_xyz expected
22
- actual.should_not_xyz expected
23
-
24
- #after
25
- actual.should xyz(expected)
26
- actual.should_not xyz(expected)
27
-
28
- This change applies to all of these as well:
29
-
30
- should_equal
31
- should_eql
32
- should_be_close
33
- should_include
34
- should_match
35
- should_satisfy
36
-
37
- == should_be
38
-
39
- #before
40
- result.should_be true
41
- result.should_be false
42
- result.should_be nil
43
- result.should_not_be nil
44
-
45
- #after
46
- result.should be(true)
47
- result.should be(false)
48
- result.should be(nil)
49
- result.should_not be(true)
50
-
51
- == should_be with arbitrary predicates
52
-
53
- #before
54
- true.should_be_arbitrary_predicate
55
- true.should_be_a_arbitrary_predicate
56
- true.should_be_an_arbitrary_predicate
57
-
58
- #after
59
- true.should be_arbitrary_predicate
60
- true.should be_a_arbitrary_predicate
61
- true.should be_an_arbitrary_predicate
62
-
63
- == should_be with comparison operators
64
-
65
- #before
66
- 5.should_be > 3
67
- 4.should_be >= 4
68
- 4.should_be <= 4
69
- 4.should_be < 4
70
-
71
- #before
72
- 5.should be > 3
73
- 4.should be >= 4
74
- 4.should be <= 4
75
- 4.should be < 4
76
-
77
- == should ==
78
-
79
- #before
80
- actual.should == expected
81
- actual.should_not == expected
82
-
83
- #after - exactly the same
84
- actual.should == expected
85
- actual.should_not == expected
86
-
87
- == should =~
88
-
89
- #before
90
- actual.should =~ regexp
91
- actual.should_not =~ regexp
92
-
93
- #after - exactly the same
94
- actual.should =~ regexp
95
- actual.should_not =~ regexp
96
-
97
- == should_have
98
-
99
- #before
100
- team.should_have(3).players
101
- hash.should_have_key(:a)
102
-
103
- #after
104
- team.should have(3).players
105
- hash.should have_key(:a)
106
-
107
- == should_change
108
-
109
- #before
110
- proc.should_change(:target, message)
111
- proc.should_change(:target, message).by(1)
112
- proc.should_change(:target, message).from("a").to("b")
113
-
114
- proc.should change(:target, message)
115
- proc.should change(:target, message).by(1)
116
- proc.should change(:target, message).from("a").to("b")
117
-
@@ -1,18 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- # Run spec w/ -fs to see the output of this file
4
-
5
- context "specs with no names" do
6
-
7
- # spec name is auto-generated as "should equal(5)"
8
- specify do
9
- 3.should equal(3)
10
- 5.should equal(5)
11
- end
12
-
13
- specify { 3.should be < 5 }
14
-
15
- specify { ["a"].should include("a") }
16
-
17
- specify { [1,2,3].should respond_to(:size) }
18
- end
@@ -1,11 +0,0 @@
1
- require 'spec/callback/callback_container'
2
- require 'spec/callback/extensions/module'
3
- require 'spec/callback/extensions/object'
4
-
5
- # Callback is a fork of Brian Takita's "callback library" (see http://callback.rubyforge.org),
6
- # which Brian graciously contributed to RSpec in order to avoid the dependency.
7
- #
8
- # RSpec uses Callback internally to create hooks to Spec::Runner events. If you're interested
9
- # in a simple, powerful API for generating callback events, check out http://callback.rubyforge.org.
10
- module Callback
11
- end
@@ -1,60 +0,0 @@
1
- module Callback
2
- class CallbackContainer
3
- def initialize
4
- @callback_registry = Hash.new do |hash, key|
5
- hash[key] = Array.new
6
- end
7
- end
8
-
9
- # Defines the callback with the key in this container.
10
- def define(key, callback_proc=nil, &callback_block)
11
- callback = extract_callback(callback_block, callback_proc) do
12
- raise "You must define the callback that accepts the call method."
13
- end
14
- @callback_registry[key] << callback
15
- callback
16
- end
17
-
18
- # Undefines the callback with the key in this container.
19
- def undefine(key, callback_proc)
20
- callback = extract_callback(callback_proc) do
21
- raise "You may only undefine callbacks that use the call method."
22
- end
23
- @callback_registry[key].delete callback
24
- callback
25
- end
26
-
27
- # Notifies the callbacks for the key. Arguments may be passed.
28
- # An error handler may be passed in as a block. If there is an error, the block is called with
29
- # error object as an argument.
30
- # An array of the return values of the callbacks is returned.
31
- def notify(key, *args, &error_handler)
32
- @callback_registry[key].collect do |callback|
33
- begin
34
- callback.call(*args)
35
- rescue Exception => e
36
- yield(e) if error_handler
37
- end
38
- end
39
- end
40
-
41
- # Clears all of the callbacks in this container.
42
- def clear
43
- @callback_registry.clear
44
- end
45
-
46
- protected
47
- def extract_callback(first_choice_callback, second_choice_callback = nil)
48
- callback = nil
49
- if first_choice_callback
50
- callback = first_choice_callback
51
- elsif second_choice_callback
52
- callback = second_choice_callback
53
- end
54
- unless callback.respond_to? :call
55
- yield
56
- end
57
- return callback
58
- end
59
- end
60
- end
@@ -1,24 +0,0 @@
1
- module Callback
2
- module ModuleMethods
3
- # For each event_name submitted, defines a callback event with this name.
4
- # Client code can then register as a callback listener using object.event_name.
5
- def callback_events(*event_names)
6
- event_names.each do |event_name|
7
- define_callback_event(event_name)
8
- end
9
- end
10
-
11
- private
12
- def define_callback_event(event_name)
13
- module_eval <<-EOS
14
- def #{event_name}(&block)
15
- register_callback(:#{event_name}, &block)
16
- end
17
- EOS
18
- end
19
- end
20
- end
21
-
22
- class Module
23
- include Callback::ModuleMethods
24
- end
@@ -1,37 +0,0 @@
1
- module Callback
2
- module InstanceMethods
3
- # Registers a callback for the event on the object. The callback can either be a block or a proc.
4
- # When the callbacks are notified, the return value of the proc is passed to the caller.
5
- def register_callback(event, callback_proc=nil, &callback_block)
6
- callbacks.define(event, callback_proc, &callback_block)
7
- end
8
-
9
- # Removes the callback from the event. The callback proc must be the same
10
- # object as the one that was passed to register_callback.
11
- def unregister_callback(event, callback_proc)
12
- callbacks.undefine(event, callback_proc)
13
- end
14
-
15
- protected
16
- # Notifies the callbacks registered with the event on the object. Arguments can be passed to the callbacks.
17
- # An error handler may be passed in as a block. If there is an error, the block is called with
18
- # error object as an argument.
19
- # An array of the return values of the callbacks is returned.
20
- def notify_callbacks(event, *args, &error_handler)
21
- callbacks.notify(event, *args, &error_handler)
22
- end
23
-
24
- def notify_class_callbacks(event, *args, &error_handler)
25
- self.class.send(:notify_callbacks, event, *args, &error_handler)
26
- end
27
-
28
- # The CallbackContainer for this object.
29
- def callbacks
30
- @callbacks ||= CallbackContainer.new
31
- end
32
- end
33
- end
34
-
35
- class Object
36
- include Callback::InstanceMethods
37
- end
@@ -1,3 +0,0 @@
1
- def deprecated(&block)
2
- block.call unless ENV['RSPEC_DISABLE_DEPRECATED_FEATURES'] == 'true'
3
- end
@@ -1,57 +0,0 @@
1
- module Spec
2
- module Expectations
3
- module ProcExpectations
4
- # Given a receiver and a message (Symbol), specifies that the result
5
- # of sending that message that receiver should change after
6
- # executing the proc.
7
- #
8
- # lambda { @team.add player }.should_change(@team.players, :size)
9
- # lambda { @team.add player }.should_change(@team.players, :size).by(1)
10
- # lambda { @team.add player }.should_change(@team.players, :size).to(23)
11
- # lambda { @team.add player }.should_change(@team.players, :size).from(22).to(23)
12
- #
13
- # You can use a block instead of a message and receiver.
14
- #
15
- # lambda { @team.add player }.should_change{@team.players.size}
16
- # lambda { @team.add player }.should_change{@team.players.size}.by(1)
17
- # lambda { @team.add player }.should_change{@team.players.size}.to(23)
18
- # lambda { @team.add player }.should_change{@team.players.size}.from(22).to(23)
19
- def should_change(receiver=nil, message=nil, &block)
20
- should.change(receiver, message, &block)
21
- end
22
-
23
- # Given a receiver and a message (Symbol), specifies that the result
24
- # of sending that message that receiver should NOT change after
25
- # executing the proc.
26
- #
27
- # lambda { @team.add player }.should_not_change(@team.players, :size)
28
- #
29
- # You can use a block instead of a message and receiver.
30
- #
31
- # lambda { @team.add player }.should_not_change{@team.players.size}
32
- def should_not_change(receiver, message)
33
- should.not.change(receiver, message)
34
- end
35
-
36
- def should_raise(exception=Exception, message=nil)
37
- should.raise(exception, message)
38
- end
39
-
40
- def should_not_raise(exception=Exception, message=nil)
41
- should.not.raise(exception, message)
42
- end
43
-
44
- def should_throw(symbol)
45
- should.throw(symbol)
46
- end
47
-
48
- def should_not_throw(symbol=:___this_is_a_symbol_that_will_likely_never_occur___)
49
- should.not.throw(symbol)
50
- end
51
- end
52
- end
53
- end
54
-
55
- class Proc
56
- include Spec::Expectations::ProcExpectations
57
- end
@@ -1,5 +0,0 @@
1
- require 'spec/expectations/should/base'
2
- require 'spec/expectations/should/have'
3
- require 'spec/expectations/should/not'
4
- require 'spec/expectations/should/should'
5
- require 'spec/expectations/should/change'
@@ -1,64 +0,0 @@
1
- module Spec
2
- module Expectations
3
- module Should
4
- class Base
5
-
6
- #== and =~ will stay after the new syntax
7
- def ==(expected)
8
- __delegate_method_missing_to_target "==", "==", expected
9
- end
10
-
11
- def =~(expected)
12
- __delegate_method_missing_to_target "=~", "=~", expected
13
- end
14
-
15
- #<, <=, >=, > are all implemented in Spec::Matchers::Be
16
- # and will be removed with 0.9
17
- deprecated do
18
- def <(expected)
19
- __delegate_method_missing_to_target "<", "<", expected
20
- end
21
-
22
- def <=(expected)
23
- __delegate_method_missing_to_target "<=", "<=", expected
24
- end
25
-
26
- def >=(expected)
27
- __delegate_method_missing_to_target ">=", ">=", expected
28
- end
29
-
30
- def >(expected)
31
- __delegate_method_missing_to_target ">", ">", expected
32
- end
33
- end
34
-
35
- def default_message(expectation, expected=nil)
36
- return "expected #{expected.inspect}, got #{@target.inspect} (using #{expectation})" if expectation == '=='
37
- "expected #{expectation} #{expected.inspect}, got #{@target.inspect}" unless expectation == '=='
38
- end
39
-
40
- def fail_with_message(message, expected=nil, target=nil)
41
- Spec::Expectations.fail_with(message, expected, target)
42
- end
43
-
44
- def find_supported_sym(original_sym)
45
- ["#{original_sym}?", "#{original_sym}s?"].each do |alternate_sym|
46
- return alternate_sym.to_s if @target.respond_to?(alternate_sym.to_s)
47
- end
48
- end
49
-
50
- deprecated do
51
- def method_missing(original_sym, *args, &block)
52
- if original_sym.to_s =~ /^not_/
53
- return Not.new(@target).__send__(sym, *args, &block)
54
- end
55
- if original_sym.to_s =~ /^have_/
56
- return have.__send__(original_sym.to_s[5..-1].to_sym, *args, &block)
57
- end
58
- __delegate_method_missing_to_target original_sym, find_supported_sym(original_sym), *args
59
- end
60
- end
61
- end
62
- end
63
- end
64
- end
@@ -1,69 +0,0 @@
1
- module Spec
2
- module Expectations
3
- module Should
4
- class Change < Base
5
-
6
- def initialize(target, receiver=nil, message=nil, &block)
7
- @block = block
8
- @target = target
9
- @receiver = receiver
10
- @message = message
11
- execute_change
12
- evaluate_change
13
- end
14
-
15
- def execute_change
16
- @before_change = @block.nil? ? @receiver.send(@message) : @block.call
17
- @target.call
18
- @after_change = @block.nil? ? @receiver.send(@message) : @block.call
19
- end
20
-
21
- def message
22
- @message.nil? ? 'result' : @message
23
- end
24
-
25
- def evaluate_change
26
- if @before_change == @after_change
27
- fail_with_message "#{message} should have changed, but is still #{@after_change.inspect}"
28
- end
29
- end
30
-
31
- def from(value)
32
- if @before_change != value
33
- fail_with_message "#{message} should have initially been #{value.inspect}, but was #{@before_change.inspect}"
34
- end
35
- self
36
- end
37
-
38
- def to(value)
39
- if @after_change != value
40
- fail_with_message "#{message} should have been changed to #{value.inspect}, but is now #{@after_change.inspect}"
41
- end
42
- self
43
- end
44
-
45
- def by(expected_delta)
46
- if actual_delta != expected_delta
47
- fail_with_message "#{message} should have been changed by #{expected_delta}, but was changed by #{actual_delta}"
48
- end
49
- self
50
- end
51
-
52
- private
53
- def actual_delta
54
- @after_change - @before_change
55
- end
56
- end
57
-
58
- class NotChange < Change
59
- def evaluate_change
60
- if @before_change != @after_change
61
- fail_with_message "#{@message} should not have changed, but did change from #{@before_change.inspect} to #{@after_change.inspect}"
62
- end
63
- end
64
- end
65
-
66
- end
67
- end
68
- end
69
-