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,126 +1,135 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
3
  module Spec
4
- module Runner
5
- context "Reporter" do
6
- setup do
4
+ module Runner
5
+
6
+ module ReporterSpecHelper
7
+ def setup
7
8
  @io = StringIO.new
8
- @backtrace_tweaker = Spec::Mocks::Mock.new("backtrace tweaker", {
9
- :auto_verify => false
10
- })
11
- @formatter = Spec::Mocks::Mock.new("formatter", {
12
- :auto_verify => false
13
- })
14
- @reporter = Reporter.new(@formatter, @backtrace_tweaker)
15
-
16
- end
17
- specify "should account for context in stats" do
18
- @formatter.should_receive(:add_context).with("context", true)
19
- @reporter.add_context("context")
20
-
21
- end
22
- specify "should account for spec and error in stats for pass" do
23
- @formatter.should_receive(:add_context)
24
- @formatter.should_receive(:spec_started).with("spec")
25
- @formatter.should_receive(:spec_failed).with("spec", 1, failure)
26
- @formatter.should_receive(:start_dump)
27
- @formatter.should_receive(:dump_failure).with(1, :anything)
28
- @formatter.should_receive(:dump_summary).with(:anything, 1, 1)
29
- @backtrace_tweaker.should_receive(:tweak_backtrace)
30
- @reporter.add_context("context")
31
- @reporter.spec_started("spec")
32
- @reporter.spec_finished("spec", RuntimeError.new)
33
- @reporter.dump
34
-
35
- end
36
- specify "should account for spec in stats for pass" do
37
- @formatter.should_receive(:spec_started)
38
- @formatter.should_receive(:spec_passed)
39
- @formatter.should_receive(:start_dump)
40
- @formatter.should_receive(:dump_summary).with(:anything, 1, 0)
41
- @reporter.spec_started("spec")
42
- @reporter.spec_finished("spec")
43
- @reporter.dump
44
-
9
+ @backtrace_tweaker = stub("backtrace tweaker", :tweak_backtrace => nil)
10
+ @formatter = mock("formatter")
11
+ @reporter = Reporter.new([@formatter], @backtrace_tweaker)
12
+ end
13
+
14
+ def failure
15
+ Mocks::DuckTypeArgConstraint.new(:header, :exception)
16
+ end
45
17
  end
46
- specify "should delegate to backtrace tweaker" do
47
- @formatter.should_receive(:add_context)
48
- @formatter.should_receive(:spec_failed)
49
- @backtrace_tweaker.should_receive(:tweak_backtrace)
50
- @reporter.add_context("context")
51
- @reporter.spec_finished("spec", RuntimeError.new)
52
- @backtrace_tweaker.__verify
18
+
19
+ describe Reporter do
20
+ include ReporterSpecHelper
21
+ before(:each) {setup}
53
22
 
54
- end
55
- specify "should handle multiple contexts with same name" do
56
- @formatter.should_receive(:add_context).exactly(3).times
57
- @formatter.should_receive(:spec_started).exactly(3).times
58
- @formatter.should_receive(:spec_passed).exactly(3).times
23
+ it "should tell formatter when behaviour is added" do
24
+ @formatter.should_receive(:add_behaviour).with("behaviour")
25
+ @reporter.add_behaviour("behaviour")
26
+ end
27
+
28
+ it "should handle multiple behaviours with same name" do
29
+ @formatter.should_receive(:add_behaviour).exactly(3).times
30
+ @formatter.should_receive(:example_started).exactly(3).times
31
+ @formatter.should_receive(:example_passed).exactly(3).times
59
32
  @formatter.should_receive(:start_dump)
60
33
  @formatter.should_receive(:dump_summary).with(:anything, 3, 0)
61
- @reporter.add_context("context")
62
- @reporter.spec_started("spec 1")
63
- @reporter.spec_finished("spec 1")
64
- @reporter.add_context("context")
65
- @reporter.spec_started("spec 2")
66
- @reporter.spec_finished("spec 2")
67
- @reporter.add_context("context")
68
- @reporter.spec_started("spec 3")
69
- @reporter.spec_finished("spec 3")
34
+ @reporter.add_behaviour("behaviour")
35
+ @reporter.example_started("spec 1")
36
+ @reporter.example_finished("spec 1")
37
+ @reporter.add_behaviour("behaviour")
38
+ @reporter.example_started("spec 2")
39
+ @reporter.example_finished("spec 2")
40
+ @reporter.add_behaviour("behaviour")
41
+ @reporter.example_started("spec 3")
42
+ @reporter.example_finished("spec 3")
70
43
  @reporter.dump
71
-
72
- end
73
- specify "should handle multiple specs same name" do
74
-
44
+ end
45
+
46
+ it "should handle multiple examples with the same name" do
75
47
  error=RuntimeError.new
76
- @formatter.should_receive(:add_context).exactly(2).times
77
- @formatter.should_receive(:spec_started).with("spec").exactly(4).times
78
- @formatter.should_receive(:spec_passed).with("spec").exactly(2).times
79
- @formatter.should_receive(:spec_failed).with("spec", 1, failure)
80
- @formatter.should_receive(:spec_failed).with("spec", 2, failure)
48
+ @formatter.should_receive(:add_behaviour).exactly(2).times
49
+ @formatter.should_receive(:example_passed).with("example").exactly(2).times
50
+ @formatter.should_receive(:example_failed).with("example", 1, failure)
51
+ @formatter.should_receive(:example_failed).with("example", 2, failure)
81
52
  @formatter.should_receive(:dump_failure).exactly(2).times
82
53
  @formatter.should_receive(:start_dump)
83
54
  @formatter.should_receive(:dump_summary).with(:anything, 4, 2)
84
- @backtrace_tweaker.should_receive(:tweak_backtrace)
85
- @reporter.add_context("context")
86
- @reporter.spec_started("spec")
87
- @reporter.spec_finished("spec")
88
- @reporter.spec_started("spec")
89
- @reporter.spec_finished("spec", error)
90
- @reporter.add_context("context")
91
- @reporter.spec_started("spec")
92
- @reporter.spec_finished("spec")
93
- @reporter.spec_started("spec")
94
- @reporter.spec_finished("spec", error)
55
+ @backtrace_tweaker.should_receive(:tweak_backtrace).twice
56
+ @reporter.add_behaviour("behaviour")
57
+ @reporter.example_finished("example")
58
+ @reporter.example_finished("example", error)
59
+ @reporter.add_behaviour("behaviour")
60
+ @reporter.example_finished("example")
61
+ @reporter.example_finished("example", error)
95
62
  @reporter.dump
96
-
97
- end
98
- specify "should push context to formatter" do
99
- @formatter.should_receive(:add_context).never
100
- @reporter.add_context("context")
101
-
102
- end
103
- specify "should push stats to reporter even with no data" do
63
+ end
64
+
65
+ it "should push stats to formatter even with no data" do
104
66
  @formatter.should_receive(:start_dump)
105
67
  @formatter.should_receive(:dump_summary).with(:anything, 0, 0)
106
68
  @reporter.dump
69
+ end
107
70
 
108
- end
109
- specify "should push time to reporter" do
71
+ it "should push time to formatter" do
110
72
  @formatter.should_receive(:start).with(5)
111
73
  @formatter.should_receive(:start_dump)
112
74
  @formatter.should_receive(:dump_summary) do |time, a, b|
113
- time.to_s.should_match(/[0-9].[0-9|e|-]+/)
75
+ time.to_s.should match(/[0-9].[0-9|e|-]+/)
114
76
  end
115
77
  @reporter.start(5)
116
78
  @reporter.end
117
79
  @reporter.dump
80
+ end
81
+ end
82
+
83
+ describe Reporter, " reporting one passing example" do
84
+ include ReporterSpecHelper
85
+ before(:each) {setup}
86
+
87
+ it "should tell formatter example passed" do
88
+ @formatter.should_receive(:example_passed)
89
+ @reporter.example_finished("example")
90
+ end
118
91
 
92
+ it "should not delegate to backtrace tweaker" do
93
+ @formatter.should_receive(:example_passed)
94
+ @backtrace_tweaker.should_not_receive(:tweak_backtrace)
95
+ @reporter.example_finished("example")
96
+ end
97
+
98
+ it "should account for passing example in stats" do
99
+ @formatter.should_receive(:example_passed)
100
+ @formatter.should_receive(:start_dump)
101
+ @formatter.should_receive(:dump_summary).with(:anything, 1, 0)
102
+ @reporter.example_finished("example")
103
+ @reporter.dump
104
+ end
119
105
  end
120
- def failure
121
- Mocks::DuckTypeArgConstraint.new(:header, :exception)
106
+
107
+ describe Reporter, " reporting one failing example" do
108
+ include ReporterSpecHelper
109
+ before(:each) {setup}
110
+
111
+ it "should tell formatter that example failed" do
112
+ @formatter.should_receive(:example_failed)
113
+ @reporter.example_finished("example", RuntimeError.new)
114
+ end
115
+
116
+ it "should delegate to backtrace tweaker" do
117
+ @formatter.should_receive(:example_failed)
118
+ @backtrace_tweaker.should_receive(:tweak_backtrace)
119
+ @reporter.example_finished("spec", RuntimeError.new)
120
+ end
121
+
122
+ it "should account for failing example in stats" do
123
+ @formatter.should_receive(:add_behaviour)
124
+ @formatter.should_receive(:example_failed).with("example", 1, failure)
125
+ @formatter.should_receive(:start_dump)
126
+ @formatter.should_receive(:dump_failure).with(1, :anything)
127
+ @formatter.should_receive(:dump_summary).with(:anything, 1, 1)
128
+ @reporter.add_behaviour("behaviour")
129
+ @reporter.example_finished("example", RuntimeError.new)
130
+ @reporter.dump
131
+ end
132
+
122
133
  end
123
-
124
- end
125
- end
134
+ end
126
135
  end
@@ -1,8 +1,8 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
3
  module Spec
4
- module Runner
5
- module SpecMatcherSpecHelper
4
+ module DSL
5
+ module ExampleMatcherSpecHelper
6
6
  class MatchDescription
7
7
  def initialize(description)
8
8
  @description = description
@@ -25,81 +25,76 @@ module Spec
25
25
  end
26
26
  end
27
27
 
28
- context "SpecMatcher" do
29
- include SpecMatcherSpecHelper
28
+ describe ExampleMatcher do
29
+ include ExampleMatcherSpecHelper
30
30
 
31
- specify "should match correct context and spec" do
32
- matcher=SpecMatcher.new("context", "spec")
33
- matcher.should match_description("context spec")
31
+ it "should match correct behaviour and example" do
32
+ matcher=ExampleMatcher.new("behaviour", "example")
33
+ matcher.should match_description("behaviour example")
34
34
  end
35
35
 
36
- specify "should not match wrong spec" do
37
- matcher=SpecMatcher.new("context", "other spec")
38
- matcher.should_not match_description("context spec")
36
+ it "should not match wrong example" do
37
+ matcher=ExampleMatcher.new("behaviour", "other example")
38
+ matcher.should_not match_description("behaviour example")
39
39
  end
40
40
 
41
- specify "should not match wrong context" do
42
- matcher=SpecMatcher.new("other context", "spec")
43
- matcher.should_not match_description("context spec")
41
+ it "should not match wrong behaviour" do
42
+ matcher=ExampleMatcher.new("other behaviour", "example")
43
+ matcher.should_not match_description("behaviour example")
44
44
  end
45
45
 
46
- specify "should match spec only" do
47
- matcher=SpecMatcher.new("context", "spec")
48
- matcher.should match_description("spec")
46
+ it "should match example only" do
47
+ matcher=ExampleMatcher.new("behaviour", "example")
48
+ matcher.should match_description("example")
49
49
  end
50
50
 
51
- specify "should match context only" do
52
- matcher=SpecMatcher.new("context", "spec")
53
- matcher.should match_description("context")
51
+ it "should match behaviour only" do
52
+ matcher=ExampleMatcher.new("behaviour", "example")
53
+ matcher.should match_description("behaviour")
54
54
  end
55
55
 
56
- specify "should escape regexp chars" do
57
- matcher=SpecMatcher.new("(con|text)", "[spec]")
56
+ it "should escape regexp chars" do
57
+ matcher=ExampleMatcher.new("(con|text)", "[example]")
58
58
  matcher.should_not match_description("con p")
59
59
  end
60
60
 
61
- # specify "should match context only" do
62
- # matcher=SpecMatcher.new("context", "a context")
63
- # matcher.should match_description("a context")
64
- # end
65
- #
66
- # specify "should match spec only" do
67
- # matcher=SpecMatcher.new("with a spec", "a context")
68
- # matcher.should match_description("with a spec")
69
- # end
61
+ it "should match when behaviour is modularized" do
62
+ matcher=ExampleMatcher.new("MyModule::MyClass", "example")
63
+ matcher.should match_description("MyClass example")
64
+ end
70
65
 
71
- # specify "should match with regexp reserved (characters) in the spec" do
72
- # matcher=SpecMatcher.new("with ([#]) a spec", "a context")
66
+ # it "should match with regexp reserved (characters) in the example" do
67
+ # matcher=ExampleMatcher.new("with ([#]) an example", "a context")
73
68
  # matcher.should match_description("a context")
74
- # matcher.should match_description("with ([#]) a spec")
75
- # matcher.should match_description("a context with ([#]) a spec")
69
+ # matcher.should match_description("with ([#]) an example")
70
+ # matcher.should match_description("a context with ([#]) an example")
76
71
  # end
77
72
  #
78
- # specify "should match with regexp reserved (characters) in the context" do
79
- # matcher=SpecMatcher.new("with a spec", "a ([#]) context")
80
- # matcher.should match_description("a ([#]) context with a spec")
81
- # matcher.should match_description("a ([#]) context with a spec")
82
- # matcher.should match_description("a ([#]) context with a spec")
73
+ # it "should match with regexp reserved (characters) in the context" do
74
+ # matcher=ExampleMatcher.new("with an example", "a ([#]) context")
75
+ # matcher.should match_description("a ([#]) context with an example")
76
+ # matcher.should match_description("a ([#]) context with an example")
77
+ # matcher.should match_description("a ([#]) context with an example")
83
78
  # end
84
79
 
85
- # specify "should not match wrong spec only" do
86
- # matcher=SpecMatcher.new("with another spec", "a context")
87
- # matcher.should_not match_description("with a spec")
80
+ # it "should not match wrong example only" do
81
+ # matcher=ExampleMatcher.new("with another example", "a context")
82
+ # matcher.should_not match_description("with an example")
88
83
  # end
89
84
  #
90
- # specify "should not match wrong context" do
91
- # matcher=SpecMatcher.new("another context with a spec", "a context")
92
- # matcher.should_not match_description("with a spec")
85
+ # it "should not match wrong context" do
86
+ # matcher=ExampleMatcher.new("another context with an example", "a context")
87
+ # matcher.should_not match_description("with an example")
93
88
  # end
94
89
  #
95
- # specify "should not match wrong context only" do
96
- # matcher=SpecMatcher.new("another context", "a context")
97
- # matcher.should_not match_description("with a spec")
90
+ # it "should not match wrong context only" do
91
+ # matcher=ExampleMatcher.new("another context", "a context")
92
+ # matcher.should_not match_description("with an example")
98
93
  # end
99
94
  #
100
- # specify "should not match wrong spec" do
101
- # matcher=SpecMatcher.new("a context with another spec", "a context")
102
- # matcher.should_not match_description("with a spec")
95
+ # it "should not match wrong example" do
96
+ # matcher=ExampleMatcher.new("a context with another example", "a context")
97
+ # matcher.should_not match_description("with an example")
103
98
  # end
104
99
 
105
100
  end
@@ -1,37 +1,93 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
- context "c" do
3
+ describe "c" do
4
4
 
5
- specify "1" do
5
+ it "1" do
6
6
  end
7
7
 
8
- specify "2" do
8
+ it "2" do
9
9
  end
10
10
 
11
11
  end
12
12
 
13
- context "SpecParser" do
14
- setup do
13
+ describe "d" do
14
+
15
+ it "3" do
16
+ end
17
+
18
+ it "4" do
19
+ end
20
+
21
+ end
22
+
23
+ class SpecParserSubject
24
+ end
25
+
26
+ describe SpecParserSubject do
27
+
28
+ it "5" do
29
+ end
30
+
31
+ end
32
+
33
+ describe SpecParserSubject, " described" do
34
+
35
+ it "6" do
36
+ end
37
+
38
+ end
39
+
40
+ describe "SpecParser" do
41
+ before(:each) do
15
42
  @p = Spec::Runner::SpecParser.new
16
43
  end
17
44
 
18
- specify "should find spec name at same line" do
19
- @p.spec_name_for(File.open(__FILE__), 5).should_eql "c 1"
45
+ it "should find spec name for 'specify' at same line" do
46
+ @p.spec_name_for(File.open(__FILE__), 5).should == "c 1"
47
+ end
48
+
49
+ it "should find spec name for 'specify' at end of spec line" do
50
+ @p.spec_name_for(File.open(__FILE__), 6).should == "c 1"
20
51
  end
21
52
 
22
- specify "should find spec name at end of spec line" do
23
- @p.spec_name_for(File.open(__FILE__), 6).should_eql "c 1"
53
+ it "should find context for 'context' above all specs" do
54
+ @p.spec_name_for(File.open(__FILE__), 4).should == "c"
24
55
  end
25
56
 
26
- specify "should find context name above all specs" do
27
- @p.spec_name_for(File.open(__FILE__), 4).should_eql "c"
57
+ it "should find spec name for 'it' at same line" do
58
+ @p.spec_name_for(File.open(__FILE__), 15).should == "d 3"
28
59
  end
29
60
 
30
- # specify "should find context name between specs" do
31
- # @p.spec_name_for(File.open(__FILE__), 7).should_eql "c"
32
- # end
61
+ it "should find spec name for 'it' at end of spec line" do
62
+ @p.spec_name_for(File.open(__FILE__), 16).should == "d 3"
63
+ end
64
+
65
+ it "should find context for 'describe' above all specs" do
66
+ @p.spec_name_for(File.open(__FILE__), 14).should == "d"
67
+ end
33
68
 
34
- specify "should find nothing outside a context" do
35
- @p.spec_name_for(File.open(__FILE__), 2).should_be_nil
69
+ it "should find nearest example name between examples" do
70
+ @p.spec_name_for(File.open(__FILE__), 7).should == "c 1"
71
+ end
72
+
73
+ it "should find nothing outside a context" do
74
+ @p.spec_name_for(File.open(__FILE__), 2).should be_nil
75
+ end
76
+
77
+ it "should find context name for type" do
78
+ @p.spec_name_for(File.open(__FILE__), 26).should == "SpecParserSubject"
79
+ end
80
+
81
+ it "should find context and spec name for type" do
82
+ @p.spec_name_for(File.open(__FILE__), 28).should == "SpecParserSubject 5"
83
+ end
84
+
85
+ it "should find context and description for type" do
86
+ @p.spec_name_for(File.open(__FILE__), 33).should == "SpecParserSubject described"
87
+ end
88
+
89
+ it "should find context and description and example for type" do
90
+ @p.spec_name_for(File.open(__FILE__), 36).should == "SpecParserSubject described 6"
36
91
  end
92
+
37
93
  end