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,128 +0,0 @@
1
- module Spec
2
- module Expectations
3
- module Should
4
- class Have
5
- def initialize(target, relativity=:exactly, expected=nil)
6
- @target = target
7
- init_collection_handler(target, relativity, expected)
8
- init_item_handler(target)
9
- end
10
-
11
- def init_collection_handler(target, relativity, expected)
12
- @collection_handler = CollectionHandler.new(target, relativity, expected)
13
- end
14
-
15
- def init_item_handler(target)
16
- @item_handler = PositiveItemHandler.new(target)
17
- end
18
-
19
- def method_missing(sym, *args)
20
- if @collection_handler.wants_to_handle(sym)
21
- @collection_handler.handle_message(sym, *args)
22
- elsif @item_handler.wants_to_handle(sym)
23
- @item_handler.handle_message(sym, *args)
24
- else
25
- Spec::Expectations.fail_with("target does not respond to #has_#{sym}?")
26
- end
27
- end
28
- end
29
-
30
- class NotHave < Have
31
- def init_item_handler(target)
32
- @item_handler = NegativeItemHandler.new(target)
33
- end
34
- end
35
-
36
- class CollectionHandler
37
- def initialize(target, relativity=:exactly, expected=nil)
38
- @target = target
39
- @expected = expected == :no ? 0 : expected
40
- @at_least = (relativity == :at_least)
41
- @at_most = (relativity == :at_most)
42
- end
43
-
44
- def at_least(expected_number=nil)
45
- @at_least = true
46
- @at_most = false
47
- @expected = expected_number == :no ? 0 : expected_number
48
- self
49
- end
50
-
51
- def at_most(expected_number=nil)
52
- @at_least = false
53
- @at_most = true
54
- @expected = expected_number == :no ? 0 : expected_number
55
- self
56
- end
57
-
58
- def method_missing(sym, *args)
59
- if @target.respond_to?(sym)
60
- handle_message(sym, *args)
61
- end
62
- end
63
-
64
- def wants_to_handle(sym)
65
- respond_to?(sym) || @target.respond_to?(sym)
66
- end
67
-
68
- def handle_message(sym, *args)
69
- return at_least(args[0]) if sym == :at_least
70
- return at_most(args[0]) if sym == :at_most
71
- Spec::Expectations.fail_with(build_message(sym, args)) unless as_specified?(sym, args)
72
- end
73
-
74
- def build_message(sym, args)
75
- message = "expected"
76
- message += " at least" if @at_least
77
- message += " at most" if @at_most
78
- message += " #{@expected} #{sym}, got #{actual_size_of(collection(sym, args))}"
79
- end
80
-
81
- def as_specified?(sym, args)
82
- return actual_size_of(collection(sym, args)) >= @expected if @at_least
83
- return actual_size_of(collection(sym, args)) <= @expected if @at_most
84
- return actual_size_of(collection(sym, args)) == @expected
85
- end
86
-
87
- def collection(sym, args)
88
- @target.send(sym, *args)
89
- end
90
-
91
- def actual_size_of(collection)
92
- return collection.length if collection.respond_to? :length
93
- return collection.size if collection.respond_to? :size
94
- end
95
- end
96
-
97
- class ItemHandler
98
- def wants_to_handle(sym)
99
- @target.respond_to?("has_#{sym}?")
100
- end
101
-
102
- def initialize(target)
103
- @target = target
104
- end
105
-
106
- def fail_with(message)
107
- Spec::Expectations.fail_with(message)
108
- end
109
- end
110
-
111
- class PositiveItemHandler < ItemHandler
112
- def handle_message(sym, *args)
113
- fail_with(
114
- "expected #has_#{sym}?(#{args.collect{|arg| arg.inspect}.join(', ')}) to return true, got false"
115
- ) unless @target.send("has_#{sym}?", *args)
116
- end
117
- end
118
-
119
- class NegativeItemHandler < ItemHandler
120
- def handle_message(sym, *args)
121
- fail_with(
122
- "expected #has_#{sym}?(#{args.collect{|arg| arg.inspect}.join(', ')}) to return false, got true"
123
- ) if @target.send("has_#{sym}?", *args)
124
- end
125
- end
126
- end
127
- end
128
- end
@@ -1,74 +0,0 @@
1
- module Spec
2
- module Expectations
3
- module Should
4
-
5
- class Not < Base #:nodoc:
6
- def initialize(target)
7
- @target = target
8
- @be_seen = false
9
- end
10
-
11
- deprecated do
12
- #Gone for 0.9
13
- def be(expected = :___no_arg)
14
- @be_seen = true
15
- return self if (expected == :___no_arg)
16
- fail_with_message(default_message("should not be", expected)) if (@target.equal?(expected))
17
- end
18
-
19
- #Gone for 0.9
20
- def have(expected_number=nil)
21
- NotHave.new(@target, :exactly, expected_number)
22
- end
23
-
24
- #Gone for 0.9
25
- def change(receiver, message)
26
- NotChange.new(@target, receiver, message)
27
- end
28
-
29
- #Gone for 0.9
30
- def raise(exception=Exception, message=nil)
31
- begin
32
- @target.call
33
- rescue exception => e
34
- return unless message.nil? || e.message == message || (message.is_a?(Regexp) && e.message =~ message)
35
- if e.kind_of?(exception)
36
- failure_message = "expected no "
37
- failure_message << exception.to_s
38
- unless message.nil?
39
- failure_message << " with "
40
- failure_message << "message matching " if message.is_a?(Regexp)
41
- failure_message << message.inspect
42
- end
43
- failure_message << ", got " << e.inspect
44
- fail_with_message(failure_message)
45
- end
46
- rescue
47
- true
48
- end
49
- end
50
-
51
- #Gone for 0.9
52
- def throw(symbol=:___this_is_a_symbol_that_will_likely_never_occur___)
53
- begin
54
- catch symbol do
55
- @target.call
56
- return true
57
- end
58
- fail_with_message("expected #{symbol.inspect} not to be thrown, but it was")
59
- rescue NameError
60
- true
61
- end
62
- end
63
-
64
- def __delegate_method_missing_to_target original_sym, actual_sym, *args
65
- ::Spec::Matchers.generated_description = "should not #{original_sym} #{args[0].inspect}"
66
- return unless @target.__send__(actual_sym, *args)
67
- fail_with_message(default_message("not #{original_sym}", args[0]))
68
- end
69
- end
70
- end
71
-
72
- end
73
- end
74
- end
@@ -1,81 +0,0 @@
1
- module Spec
2
- module Expectations
3
- module Should # :nodoc:
4
-
5
- class Should < Base
6
-
7
- def initialize(target, expectation=nil)
8
- @target = target
9
- @be_seen = false
10
- end
11
-
12
- deprecated do
13
- #Gone for 0.9
14
- def not
15
- Not.new(@target)
16
- end
17
-
18
- #Gone for 0.9
19
- def be(expected = :___no_arg)
20
- @be_seen = true
21
- return self if (expected == :___no_arg)
22
- if Symbol === expected
23
- fail_with_message(default_message("should be", expected)) unless (@target.equal?(expected))
24
- else
25
- fail_with_message("expected #{expected}, got #{@target} (using .equal?)") unless (@target.equal?(expected))
26
- end
27
- end
28
-
29
- #Gone for 0.9
30
- def have(expected_number=nil)
31
- Have.new(@target, :exactly, expected_number)
32
- end
33
-
34
- #Gone for 0.9
35
- def change(receiver=nil, message=nil, &block)
36
- Change.new(@target, receiver, message, &block)
37
- end
38
-
39
- #Gone for 0.9
40
- def raise(exception=Exception, message=nil)
41
- begin
42
- @target.call
43
- rescue exception => e
44
- unless message.nil?
45
- if message.is_a?(Regexp)
46
- e.message.should =~ message
47
- else
48
- e.message.should == message
49
- end
50
- end
51
- return
52
- rescue => e
53
- fail_with_message("expected #{exception}#{message.nil? ? "" : " with #{message.inspect}"}, got #{e.inspect}")
54
- end
55
- fail_with_message("expected #{exception}#{message.nil? ? "" : " with #{message.inspect}"} but nothing was raised")
56
- end
57
-
58
- #Gone for 0.9
59
- def throw(symbol)
60
- begin
61
- catch symbol do
62
- @target.call
63
- fail_with_message("expected #{symbol.inspect} to be thrown, but nothing was thrown")
64
- end
65
- rescue NameError => e
66
- fail_with_message("expected #{symbol.inspect} to be thrown, got #{e.inspect}")
67
- end
68
- end
69
- end
70
-
71
- private
72
- def __delegate_method_missing_to_target(original_sym, actual_sym, *args)
73
- ::Spec::Matchers.generated_description = "should #{original_sym} #{args[0].inspect}"
74
- return if @target.send(actual_sym, *args)
75
- fail_with_message(default_message(original_sym, args[0]), args[0], @target)
76
- end
77
- end
78
-
79
- end
80
- end
81
- end
@@ -1,47 +0,0 @@
1
- deprecated do
2
- module Spec
3
- module Expectations
4
- # This module adds syntactic sugar that allows usage of should_* instead of should.*
5
- module UnderscoreSugar
6
- def handle_underscores_for_rspec! # :nodoc:
7
- original_method_missing = instance_method(:method_missing)
8
- class_eval do
9
- def method_missing(sym, *args, &block)
10
- _method_missing(sym, args, block)
11
- end
12
-
13
- define_method :_method_missing do |sym, args, block|
14
- return original_method_missing.bind(self).call(sym, *args, &block) unless sym.to_s =~ /^should_/
15
- if sym.to_s =~ /^should_not_/
16
- if __matcher.respond_to?(__strip_should_not(sym))
17
- return should_not(__matcher.__send__(__strip_should_not(sym), *args, &block))
18
- else
19
- return Spec::Expectations::Should::Not.new(self).__send__(__strip_should_not(sym), *args, &block) if sym.to_s =~ /^should_not_/
20
- end
21
- else
22
- if __matcher.respond_to?(__strip_should(sym))
23
- return should(__matcher.__send__(__strip_should(sym), *args, &block))
24
- else
25
- return Spec::Expectations::Should::Should.new(self).__send__(__strip_should(sym), *args, &block)
26
- end
27
- end
28
- end
29
-
30
- def __strip_should(sym) # :nodoc
31
- sym.to_s[7..-1]
32
- end
33
-
34
- def __strip_should_not(sym) # :nodoc
35
- sym.to_s[11..-1]
36
- end
37
-
38
- def __matcher
39
- @matcher ||= Spec::Matchers::Matcher.new
40
- end
41
- end
42
- end
43
- end
44
- end
45
- end
46
-
47
- end
@@ -1,154 +0,0 @@
1
- module Spec
2
- module Runner
3
- class ContextEvalModule < Module
4
- end
5
- class Context
6
- module InstanceMethods
7
- def initialize(description, &context_block)
8
- @description = description
9
-
10
- @context_eval_module = ContextEvalModule.new
11
- @context_eval_module.extend ContextEval::ModuleMethods
12
- @context_eval_module.include ContextEval::InstanceMethods
13
- before_context_eval
14
- @context_eval_module.class_eval(&context_block)
15
- end
16
-
17
- def before_context_eval
18
- end
19
-
20
- def inherit_context_eval_module_from(klass)
21
- @context_eval_module.inherit klass
22
- end
23
- alias :inherit :inherit_context_eval_module_from
24
-
25
- def include(mod)
26
- @context_eval_module.include(mod)
27
- end
28
-
29
- def run(reporter, dry_run=false)
30
- reporter.add_context(@description)
31
- prepare_execution_context_class
32
- errors = run_context_setup(reporter, dry_run)
33
-
34
- specifications.each do |specification|
35
- specification_execution_context = execution_context(specification)
36
- specification_execution_context.copy_instance_variables_from(@once_only_execution_context_instance, []) unless context_setup_block.nil?
37
- specification.run(reporter, setup_block, teardown_block, dry_run, specification_execution_context)
38
- end unless errors.length > 0
39
-
40
- run_context_teardown(reporter, dry_run)
41
- end
42
-
43
- def number_of_specs
44
- specifications.length
45
- end
46
-
47
- def matches?(full_description)
48
- matcher ||= SpecMatcher.new(@description)
49
- specifications.each do |spec|
50
- return true if spec.matches?(matcher, full_description)
51
- end
52
- return false
53
- end
54
-
55
- def run_single_spec(full_description)
56
- return if @description == full_description
57
- matcher = SpecMatcher.new(@description)
58
- specifications.reject! do |spec|
59
- !spec.matches?(matcher, full_description)
60
- end
61
- end
62
-
63
- def methods
64
- my_methods = super
65
- my_methods |= @context_eval_module.methods
66
- my_methods
67
- end
68
-
69
- protected
70
-
71
- def method_missing(*args)
72
- @context_eval_module.method_missing(*args)
73
- end
74
-
75
- def context_setup_block
76
- @context_eval_module.send :context_setup_block
77
- end
78
-
79
- def context_teardown_block
80
- @context_eval_module.send :context_teardown_block
81
- end
82
-
83
- def specifications
84
- @context_eval_module.send :specifications
85
- end
86
-
87
- def setup_block
88
- @context_eval_module.send :setup_block
89
- end
90
-
91
- def teardown_block
92
- @context_eval_module.send :teardown_block
93
- end
94
-
95
- def prepare_execution_context_class
96
- weave_in_context_modules
97
- execution_context_class
98
- end
99
-
100
- def weave_in_context_modules
101
- mods = context_modules
102
- context_eval_module = @context_eval_module
103
- execution_context_class.class_eval do
104
- include context_eval_module
105
- mods.each do |mod|
106
- include mod
107
- end
108
- end
109
- end
110
-
111
- def context_modules
112
- @context_eval_module.send :context_modules
113
- end
114
-
115
- def execution_context_class
116
- @context_eval_module.send :execution_context_class
117
- end
118
-
119
- def execution_context specification
120
- execution_context_class.new(specification)
121
- end
122
-
123
- def run_context_setup(reporter, dry_run)
124
- errors = []
125
- unless dry_run
126
- begin
127
- @once_only_execution_context_instance = execution_context(nil)
128
- @once_only_execution_context_instance.instance_eval(&context_setup_block)
129
- rescue => e
130
- errors << e
131
- location = "context_setup"
132
- reporter.spec_finished(location, e, location) if reporter
133
- end
134
- end
135
- errors
136
- end
137
-
138
- def run_context_teardown(reporter, dry_run)
139
- unless dry_run
140
- begin
141
- @once_only_execution_context_instance ||= execution_context(nil)
142
- @once_only_execution_context_instance.instance_eval(&context_teardown_block)
143
- rescue => e
144
- location = "context_teardown"
145
- reporter.spec_finished(location, e, location) if reporter
146
- end
147
- end
148
- end
149
-
150
- end
151
- include InstanceMethods
152
- end
153
- end
154
- end