rspec 1.1.11 → 1.1.12

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 (269) hide show
  1. data/.autotest +4 -0
  2. data/History.txt +55 -0
  3. data/Manifest.txt +102 -122
  4. data/README.txt +30 -12
  5. data/Rakefile +10 -10
  6. data/TODO.txt +10 -2
  7. data/{failing_examples → examples/failing}/README.txt +0 -0
  8. data/{failing_examples → examples/failing}/diffing_spec.rb +0 -0
  9. data/{failing_examples → examples/failing}/failing_autogenerated_docstrings_example.rb +0 -0
  10. data/{failing_examples/failure_in_teardown.rb → examples/failing/failure_in_after.rb} +1 -1
  11. data/{failing_examples/failure_in_setup.rb → examples/failing/failure_in_before.rb} +1 -1
  12. data/{failing_examples → examples/failing}/mocking_example.rb +0 -0
  13. data/{failing_examples → examples/failing}/mocking_with_flexmock.rb +0 -0
  14. data/{failing_examples → examples/failing}/mocking_with_mocha.rb +0 -0
  15. data/{failing_examples → examples/failing}/mocking_with_rr.rb +0 -0
  16. data/{failing_examples → examples/failing}/partial_mock_example.rb +0 -0
  17. data/{failing_examples → examples/failing}/predicate_example.rb +5 -0
  18. data/{failing_examples → examples/failing}/raising_example.rb +0 -0
  19. data/{failing_examples → examples/failing}/spec_helper.rb +1 -1
  20. data/{failing_examples → examples/failing}/syntax_error_example.rb +0 -0
  21. data/{failing_examples → examples/failing}/team_spec.rb +0 -0
  22. data/{failing_examples → examples/failing}/timeout_behaviour.rb +0 -0
  23. data/examples/{pure → passing}/autogenerated_docstrings_example.rb +6 -0
  24. data/examples/{pure → passing}/before_and_after_example.rb +0 -0
  25. data/examples/{pure → passing}/behave_as_example.rb +0 -0
  26. data/examples/{pure → passing}/custom_expectation_matchers.rb +0 -0
  27. data/examples/{pure → passing}/custom_formatter.rb +1 -1
  28. data/examples/{pure → passing}/dynamic_spec.rb +2 -2
  29. data/examples/{pure → passing}/file_accessor.rb +0 -0
  30. data/examples/{pure → passing}/file_accessor_spec.rb +0 -0
  31. data/examples/{pure → passing}/greeter_spec.rb +0 -0
  32. data/examples/{pure → passing}/helper_method_example.rb +0 -0
  33. data/examples/{pure → passing}/io_processor.rb +0 -0
  34. data/examples/{pure → passing}/io_processor_spec.rb +0 -0
  35. data/examples/{pure → passing}/legacy_spec.rb +0 -0
  36. data/examples/{pure → passing}/mocking_example.rb +0 -0
  37. data/examples/{pure/multi_threaded_behaviour_runner.rb → passing/multi_threaded_example_group_runner.rb} +1 -3
  38. data/examples/{pure → passing}/nested_classes_example.rb +0 -0
  39. data/examples/{pure → passing}/partial_mock_example.rb +0 -0
  40. data/examples/{pure → passing}/pending_example.rb +0 -0
  41. data/examples/{pure → passing}/predicate_example.rb +0 -0
  42. data/examples/{pure → passing}/priority.txt +0 -0
  43. data/examples/{pure → passing}/shared_example_group_example.rb +0 -0
  44. data/examples/{pure → passing}/shared_stack_examples.rb +1 -3
  45. data/examples/passing/simple_matcher_example.rb +31 -0
  46. data/examples/{pure → passing}/spec_helper.rb +0 -0
  47. data/examples/{pure → passing}/stack.rb +0 -0
  48. data/examples/{pure → passing}/stack_spec.rb +3 -2
  49. data/examples/{pure → passing}/stack_spec_with_nested_example_groups.rb +0 -0
  50. data/examples/{pure → passing}/stubbing_example.rb +0 -0
  51. data/examples/{pure → passing}/yielding_example.rb +0 -0
  52. data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +86 -0
  53. data/features/before_and_after_blocks/before_and_after_blocks.feature +168 -0
  54. data/{stories/example_groups/autogenerated_docstrings → features/example_groups/autogenerated_docstrings.feature} +5 -5
  55. data/{stories/example_groups/example_group_with_should_methods → features/example_groups/example_group_with_should_methods.feature} +3 -3
  56. data/{stories/example_groups/nested_groups → features/example_groups/nested_groups.feature} +4 -4
  57. data/{stories/example_groups/output → features/example_groups/output.feature} +3 -8
  58. data/{stories/interop/examples_and_tests_together → features/interop/examples_and_tests_together.feature} +5 -4
  59. data/features/interop/test_but_not_test_unit.feature +14 -0
  60. data/{stories/interop/test_case_with_should_methods → features/interop/test_case_with_should_methods.feature} +2 -2
  61. data/{stories/mock_framework_integration/use_flexmock.story → features/mock_framework_integration/use_flexmock.feature} +1 -1
  62. data/features/step_definitions/running_rspec.rb +54 -0
  63. data/features/support/env.rb +26 -0
  64. data/{stories/resources → features/support}/helpers/cmdline.rb +0 -0
  65. data/{stories/resources → features/support}/helpers/story_helper.rb +1 -1
  66. data/{stories/resources → features/support}/matchers/smart_match.rb +0 -0
  67. data/{plugins → lib/adapters}/mock_frameworks/flexmock.rb +1 -1
  68. data/{plugins → lib/adapters}/mock_frameworks/mocha.rb +1 -1
  69. data/{plugins → lib/adapters}/mock_frameworks/rr.rb +1 -1
  70. data/{plugins → lib/adapters}/mock_frameworks/rspec.rb +2 -2
  71. data/lib/autotest/rspec.rb +4 -3
  72. data/lib/spec.rb +2 -27
  73. data/lib/spec/dsl.rb +1 -0
  74. data/lib/spec/{extensions → dsl}/main.rb +10 -10
  75. data/lib/spec/example.rb +175 -1
  76. data/lib/spec/example/before_and_after_hooks.rb +30 -24
  77. data/lib/spec/example/example_group.rb +1 -0
  78. data/lib/spec/example/example_group_factory.rb +26 -9
  79. data/lib/spec/example/example_group_methods.rb +138 -113
  80. data/lib/spec/example/example_methods.rb +88 -25
  81. data/lib/spec/example/shared_example_group.rb +28 -21
  82. data/lib/spec/expectations.rb +22 -18
  83. data/lib/spec/expectations/handler.rb +16 -36
  84. data/lib/spec/interop/test/unit/testcase.rb +19 -17
  85. data/lib/spec/interop/test/unit/testresult.rb +1 -1
  86. data/lib/spec/interop/test/unit/testsuite_adapter.rb +1 -1
  87. data/lib/spec/matchers.rb +7 -28
  88. data/lib/spec/matchers/be.rb +103 -116
  89. data/lib/spec/matchers/be_close.rb +6 -22
  90. data/lib/spec/matchers/eql.rb +7 -25
  91. data/lib/spec/matchers/equal.rb +7 -25
  92. data/lib/spec/matchers/errors.rb +5 -0
  93. data/lib/spec/matchers/exist.rb +8 -14
  94. data/lib/spec/matchers/generated_descriptions.rb +48 -0
  95. data/lib/spec/matchers/has.rb +12 -28
  96. data/lib/spec/matchers/include.rb +12 -9
  97. data/lib/spec/matchers/match.rb +8 -27
  98. data/lib/spec/matchers/match_array.rb +79 -0
  99. data/lib/spec/matchers/method_missing.rb +9 -0
  100. data/lib/spec/matchers/operator_matcher.rb +39 -48
  101. data/lib/spec/matchers/raise_error.rb +4 -8
  102. data/lib/spec/matchers/respond_to.rb +33 -8
  103. data/lib/spec/matchers/throw_symbol.rb +49 -17
  104. data/lib/spec/matchers/wrap_expectation.rb +55 -0
  105. data/lib/spec/mocks/argument_constraints.rb +77 -5
  106. data/lib/spec/mocks/message_expectation.rb +7 -7
  107. data/lib/spec/mocks/proxy.rb +14 -12
  108. data/lib/spec/rake/spectask.rb +4 -6
  109. data/lib/spec/ruby.rb +9 -0
  110. data/lib/spec/runner.rb +37 -162
  111. data/lib/spec/runner/backtrace_tweaker.rb +5 -3
  112. data/lib/spec/runner/class_and_arguments_parser.rb +7 -9
  113. data/lib/spec/runner/command_line.rb +6 -8
  114. data/lib/spec/{example → runner}/configuration.rb +46 -47
  115. data/lib/spec/runner/example_group_runner.rb +15 -4
  116. data/lib/spec/runner/formatter/base_text_formatter.rb +4 -3
  117. data/lib/spec/runner/formatter/html_formatter.rb +14 -11
  118. data/lib/spec/runner/formatter/nested_text_formatter.rb +2 -2
  119. data/lib/spec/runner/heckle_runner.rb +58 -56
  120. data/lib/spec/runner/option_parser.rb +8 -4
  121. data/lib/spec/runner/options.rb +29 -14
  122. data/lib/spec/runner/reporter.rb +1 -1
  123. data/lib/spec/runner/spec_parser.rb +11 -9
  124. data/lib/spec/story/runner.rb +40 -42
  125. data/lib/spec/story/runner/story_runner.rb +10 -6
  126. data/lib/spec/story/world.rb +66 -70
  127. data/lib/spec/version.rb +4 -2
  128. data/{rake_tasks → resources/rake}/examples.rake +0 -0
  129. data/{rake_tasks → resources/rake}/examples_with_rcov.rake +0 -0
  130. data/{rake_tasks → resources/rake}/failing_examples_with_html.rake +0 -0
  131. data/{rake_tasks → resources/rake}/verify_rcov.rake +0 -0
  132. data/{stories/resources → resources}/spec/example_group_with_should_methods.rb +1 -1
  133. data/{stories/resources → resources}/spec/simple_spec.rb +1 -1
  134. data/resources/spec/spec_with_flexmock.rb +19 -0
  135. data/{stories/resources → resources}/test/spec_and_test_together.rb +1 -1
  136. data/resources/test/spec_including_test_but_not_unit.rb +11 -0
  137. data/{stories/resources → resources}/test/test_case_with_should_methods.rb +2 -2
  138. data/rspec.gemspec +16 -6
  139. data/spec/autotest/autotest_helper.rb +2 -2
  140. data/spec/autotest/discover_spec.rb +4 -15
  141. data/spec/autotest/failed_results_re_spec.rb +24 -0
  142. data/spec/autotest/rspec_spec.rb +2 -38
  143. data/spec/spec/dsl/main_spec.rb +88 -0
  144. data/spec/spec/example/example_group_class_definition_spec.rb +6 -2
  145. data/spec/spec/example/example_group_factory_spec.rb +50 -10
  146. data/spec/spec/example/example_group_methods_spec.rb +210 -160
  147. data/spec/spec/example/example_group_spec.rb +44 -52
  148. data/spec/spec/example/example_matcher_spec.rb +6 -23
  149. data/spec/spec/example/example_methods_spec.rb +176 -54
  150. data/spec/spec/example/helper_method_spec.rb +24 -0
  151. data/spec/spec/example/pending_module_spec.rb +2 -8
  152. data/spec/spec/example/shared_example_group_spec.rb +56 -80
  153. data/spec/spec/expectations/extensions/object_spec.rb +0 -50
  154. data/spec/spec/expectations/wrap_expectation_spec.rb +30 -0
  155. data/spec/spec/interop/test/unit/spec_spec.rb +1 -5
  156. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +4 -0
  157. data/spec/spec/matchers/be_close_spec.rb +12 -10
  158. data/spec/spec/matchers/be_spec.rb +62 -7
  159. data/spec/spec/matchers/description_generation_spec.rb +19 -0
  160. data/spec/spec/matchers/eql_spec.rb +7 -6
  161. data/spec/spec/matchers/equal_spec.rb +7 -6
  162. data/spec/spec/matchers/handler_spec.rb +4 -43
  163. data/spec/spec/matchers/has_spec.rb +1 -1
  164. data/spec/spec/matchers/have_spec.rb +23 -18
  165. data/spec/spec/matchers/include_spec.rb +24 -0
  166. data/spec/spec/matchers/match_array_spec.rb +83 -0
  167. data/spec/spec/matchers/matcher_methods_spec.rb +1 -13
  168. data/spec/spec/matchers/raise_error_spec.rb +18 -0
  169. data/spec/spec/matchers/respond_to_spec.rb +71 -9
  170. data/spec/spec/matchers/throw_symbol_spec.rb +85 -43
  171. data/spec/spec/mocks/bug_report_11545_spec.rb +4 -5
  172. data/spec/spec/mocks/bug_report_496.rb +11 -9
  173. data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  174. data/spec/spec/mocks/hash_including_matcher_spec.rb +39 -2
  175. data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
  176. data/spec/spec/mocks/mock_spec.rb +5 -6
  177. data/spec/spec/mocks/nil_expectation_warning_spec.rb +2 -2
  178. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +18 -3
  179. data/spec/spec/mocks/stub_spec.rb +6 -0
  180. data/spec/spec/mocks/stubbed_message_expectations_spec.rb +14 -0
  181. data/spec/spec/runner/command_line_spec.rb +4 -4
  182. data/spec/spec/runner/configuration_spec.rb +301 -0
  183. data/spec/spec/runner/drb_command_line_spec.rb +4 -4
  184. data/spec/spec/runner/example_group_runner_spec.rb +33 -0
  185. data/spec/spec/runner/formatter/base_formatter_spec.rb +13 -102
  186. data/spec/spec/runner/formatter/base_text_formatter_spec.rb +23 -0
  187. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +5 -5
  188. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +3 -3
  189. data/spec/spec/runner/formatter/html_formatted-1.8.4.html +6 -6
  190. data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +9 -9
  191. data/spec/spec/runner/formatter/html_formatted-1.8.5.html +6 -6
  192. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +10 -10
  193. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +39 -30
  194. data/spec/spec/runner/formatter/html_formatted-1.8.7.html +379 -0
  195. data/spec/spec/runner/formatter/html_formatted-1.9.1.html +379 -0
  196. data/spec/spec/runner/formatter/html_formatter_spec.rb +14 -13
  197. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +5 -5
  198. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +7 -17
  199. data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +18 -17
  200. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +5 -5
  201. data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +6 -6
  202. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +33 -30
  203. data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +373 -0
  204. data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +373 -0
  205. data/spec/spec/runner/heckler_spec.rb +16 -9
  206. data/spec/spec/runner/option_parser_spec.rb +3 -18
  207. data/spec/spec/runner/options_spec.rb +27 -8
  208. data/spec/spec/runner/reporter_spec.rb +5 -5
  209. data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
  210. data/spec/spec/runner/resources/utf8_encoded.rb +7 -0
  211. data/spec/spec/runner/spec_parser_spec.rb +85 -79
  212. data/spec/spec/spec_spec.rb +21 -0
  213. data/spec/spec_helper.rb +9 -1
  214. data/story_server/prototype/javascripts/prototype.js +1 -1
  215. metadata +119 -131
  216. data/examples/stories/adder.rb +0 -13
  217. data/examples/stories/addition +0 -34
  218. data/examples/stories/addition.rb +0 -9
  219. data/examples/stories/calculator.rb +0 -65
  220. data/examples/stories/game-of-life/.loadpath +0 -5
  221. data/examples/stories/game-of-life/README.txt +0 -21
  222. data/examples/stories/game-of-life/behaviour/everything.rb +0 -6
  223. data/examples/stories/game-of-life/behaviour/examples/examples.rb +0 -3
  224. data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +0 -35
  225. data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +0 -66
  226. data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +0 -21
  227. data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +0 -21
  228. data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +0 -42
  229. data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +0 -42
  230. data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +0 -17
  231. data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +0 -53
  232. data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +0 -52
  233. data/examples/stories/game-of-life/behaviour/stories/helper.rb +0 -6
  234. data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +0 -26
  235. data/examples/stories/game-of-life/behaviour/stories/steps.rb +0 -5
  236. data/examples/stories/game-of-life/behaviour/stories/stories.rb +0 -3
  237. data/examples/stories/game-of-life/behaviour/stories/stories.txt +0 -22
  238. data/examples/stories/game-of-life/life.rb +0 -3
  239. data/examples/stories/game-of-life/life/game.rb +0 -23
  240. data/examples/stories/game-of-life/life/grid.rb +0 -43
  241. data/examples/stories/helper.rb +0 -9
  242. data/examples/stories/steps/addition_steps.rb +0 -18
  243. data/lib/spec/adapters.rb +0 -1
  244. data/lib/spec/adapters/ruby_engine.rb +0 -26
  245. data/lib/spec/adapters/ruby_engine/mri.rb +0 -8
  246. data/lib/spec/adapters/ruby_engine/rubinius.rb +0 -8
  247. data/lib/spec/extensions.rb +0 -4
  248. data/lib/spec/extensions/class.rb +0 -24
  249. data/lib/spec/extensions/metaclass.rb +0 -7
  250. data/lib/spec/extensions/object.rb +0 -6
  251. data/spec/spec/adapters/ruby_engine_spec.rb +0 -16
  252. data/spec/spec/example/configuration_spec.rb +0 -296
  253. data/spec/spec/example/example_runner_spec.rb +0 -194
  254. data/spec/spec/extensions/main_spec.rb +0 -71
  255. data/stories/all.rb +0 -5
  256. data/stories/configuration/before_blocks.story +0 -21
  257. data/stories/configuration/stories.rb +0 -7
  258. data/stories/example_groups/stories.rb +0 -7
  259. data/stories/helper.rb +0 -6
  260. data/stories/interop/stories.rb +0 -7
  261. data/stories/mock_framework_integration/stories.rb +0 -7
  262. data/stories/pending_stories/README +0 -3
  263. data/stories/resources/spec/before_blocks_example.rb +0 -32
  264. data/stories/resources/spec/spec_with_flexmock.rb +0 -18
  265. data/stories/resources/steps/running_rspec.rb +0 -50
  266. data/stories/resources/stories/failing_story.rb +0 -15
  267. data/stories/stories/multiline_steps.story +0 -23
  268. data/stories/stories/steps/multiline_steps.rb +0 -13
  269. data/stories/stories/stories.rb +0 -6
@@ -0,0 +1,24 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ # This was added to prove that http://rspec.lighthouseapp.com/projects/5645/tickets/211
4
+ # was fixed in ruby 1.9.1
5
+
6
+ module HelperMethodExample
7
+ describe "a helper method" do
8
+ def helper_method
9
+ "received call"
10
+ end
11
+
12
+ it "is available to examples in the same group" do
13
+ helper_method.should == "received call"
14
+ end
15
+
16
+ describe "from a nested group" do
17
+ it "is available to examples in a nested group" do
18
+ helper_method.should == "received call"
19
+ end
20
+ end
21
+
22
+ end
23
+ end
24
+
@@ -4,14 +4,12 @@ module Spec
4
4
 
5
5
  it 'should raise an ExamplePendingError if no block is supplied' do
6
6
  lambda {
7
- include Pending
8
7
  pending "TODO"
9
8
  }.should raise_error(ExamplePendingError, /TODO/)
10
9
  end
11
10
 
12
11
  it 'should raise an ExamplePendingError if a supplied block fails as expected' do
13
12
  lambda {
14
- include Pending
15
13
  pending "TODO" do
16
14
  raise "oops"
17
15
  end
@@ -20,7 +18,6 @@ module Spec
20
18
 
21
19
  it 'should raise an ExamplePendingError if a supplied block fails as expected with a mock' do
22
20
  lambda {
23
- include Pending
24
21
  pending "TODO" do
25
22
  m = mock('thing')
26
23
  m.should_receive(:foo)
@@ -31,7 +28,6 @@ module Spec
31
28
 
32
29
  it 'should raise a PendingExampleFixedError if a supplied block starts working' do
33
30
  lambda {
34
- include Pending
35
31
  pending "TODO" do
36
32
  # success!
37
33
  end
@@ -40,9 +36,8 @@ module Spec
40
36
 
41
37
  it "should have the correct file and line number for pending given with a block which fails" do
42
38
  file = __FILE__
43
- line_number = __LINE__ + 3
39
+ line_number = __LINE__ + 2
44
40
  begin
45
- include Pending
46
41
  pending do
47
42
  raise
48
43
  end
@@ -53,9 +48,8 @@ module Spec
53
48
 
54
49
  it "should have the correct file and line number for pending given with no block" do
55
50
  file = __FILE__
56
- line_number = __LINE__ + 3
51
+ line_number = __LINE__ + 2
57
52
  begin
58
- include Pending
59
53
  pending("TODO")
60
54
  rescue => error
61
55
  error.pending_caller.should == "#{file}:#{line_number}"
@@ -17,46 +17,25 @@ module Spec
17
17
  after(:each) do
18
18
  @formatter.rspec_verify
19
19
  @example_group = nil
20
- Spec::Example::SharedExampleGroup.shared_example_groups.clear
21
- end
22
-
23
- def make_shared_example_group(name, opts=nil, &block)
24
- example_group = SharedExampleGroup.new(name, :shared => true, &block)
25
- SharedExampleGroup.add_shared_example_group(example_group)
26
- example_group
27
- end
28
-
29
- def non_shared_example_group()
30
- @non_shared_example_group ||= Class.new(ExampleGroup).describe("example_group")
31
- end
32
-
33
- it "should accept an optional options hash" do
34
- lambda { Class.new(ExampleGroup).describe("context") }.should_not raise_error(Exception)
35
- lambda { Class.new(ExampleGroup).describe("context", :shared => true) }.should_not raise_error(Exception)
36
- end
37
-
38
- it "should return all shared example_groups" do
39
- b1 = make_shared_example_group("b1", :shared => true) {}
40
- b2 = make_shared_example_group("b2", :shared => true) {}
41
-
42
- b1.should_not be(nil)
43
- b2.should_not be(nil)
44
-
45
- SharedExampleGroup.find_shared_example_group("b1").should equal(b1)
46
- SharedExampleGroup.find_shared_example_group("b2").should equal(b2)
47
- end
48
-
49
- it "should register as shared example_group" do
50
- example_group = make_shared_example_group("example_group") {}
51
- SharedExampleGroup.shared_example_groups.should include(example_group)
20
+ Spec::Example::SharedExampleGroup.clear
52
21
  end
22
+
23
+ describe "#register" do
24
+ it "creates a new shared example group with the submitted args" do
25
+ block = lambda {}
26
+ group = SharedExampleGroup.new("shared group") do end
27
+ Spec::Example::SharedExampleGroup.should_receive(:new).with("share me", &block).and_return(group)
28
+ Spec::Example::SharedExampleGroup.register("share me", &block)
29
+ end
53
30
 
54
- it "should not be shared when not configured as shared" do
55
- example_group = non_shared_example_group
56
- SharedExampleGroup.shared_example_groups.should_not include(example_group)
31
+ it "registers the shared example group" do
32
+ lambda do
33
+ Spec::Example::SharedExampleGroup.register "share me" do end
34
+ end.should change {Spec::Example::SharedExampleGroup.count}.by(1)
35
+ end
57
36
  end
58
37
 
59
- it "should complain when adding a second shared example_group with the same description" do
38
+ it "complains when adding a second shared example_group with the same description" do
60
39
  describe "shared example_group", :shared => true do
61
40
  end
62
41
  lambda do
@@ -64,14 +43,17 @@ module Spec
64
43
  end
65
44
  end.should raise_error(ArgumentError)
66
45
  end
67
-
68
- it "should NOT complain when adding the same shared example_group instance again" do
69
- shared_example_group = Class.new(ExampleGroup).describe("shared example_group", :shared => true)
70
- SharedExampleGroup.add_shared_example_group(shared_example_group)
71
- SharedExampleGroup.add_shared_example_group(shared_example_group)
46
+
47
+ it "does NOT add the same group twice" do
48
+ lambda do
49
+ 2.times do
50
+ describe "shared example_group which gets loaded twice", :shared => true do
51
+ end
52
+ end
53
+ end.should change {Spec::Example::SharedExampleGroup.count}.by(1)
72
54
  end
73
55
 
74
- it "should NOT complain when adding the same shared example_group again (i.e. file gets reloaded)" do
56
+ it "does NOT complain when adding the same shared example_group again (i.e. file gets reloaded)" do
75
57
  lambda do
76
58
  2.times do
77
59
  describe "shared example_group which gets loaded twice", :shared => true do
@@ -80,42 +62,36 @@ module Spec
80
62
  end.should_not raise_error(ArgumentError)
81
63
  end
82
64
 
83
- it "should NOT complain when adding the same shared example_group in same file with different absolute path" do
84
- shared_example_group_1 = Class.new(ExampleGroup).describe(
65
+ it "does NOT complain when adding the same shared example_group in same file with different absolute path" do
66
+ SharedExampleGroup.register(
85
67
  "shared example_group",
86
68
  :shared => true,
87
69
  :spec_path => "/my/spec/a/../shared.rb"
88
70
  )
89
- shared_example_group_2 = Class.new(ExampleGroup).describe(
71
+ SharedExampleGroup.register(
90
72
  "shared example_group",
91
73
  :shared => true,
92
74
  :spec_path => "/my/spec/b/../shared.rb"
93
75
  )
94
-
95
- SharedExampleGroup.add_shared_example_group(shared_example_group_1)
96
- SharedExampleGroup.add_shared_example_group(shared_example_group_2)
97
76
  end
98
77
 
99
- it "should complain when adding a different shared example_group with the same name in a different file with the same basename" do
100
- shared_example_group_1 = Class.new(ExampleGroup).describe(
78
+ it "complains when adding a different shared example_group with the same name in a different file with the same basename" do
79
+ SharedExampleGroup.register(
101
80
  "shared example_group",
102
81
  :shared => true,
103
82
  :spec_path => "/my/spec/a/shared.rb"
104
83
  )
105
- shared_example_group_2 = Class.new(ExampleGroup).describe(
106
- "shared example_group",
107
- :shared => true,
108
- :spec_path => "/my/spec/b/shared.rb"
109
- )
110
-
111
- SharedExampleGroup.add_shared_example_group(shared_example_group_1)
112
84
  lambda do
113
- SharedExampleGroup.add_shared_example_group(shared_example_group_2)
85
+ SharedExampleGroup.register(
86
+ "shared example_group",
87
+ :shared => true,
88
+ :spec_path => "/my/spec/b/shared.rb"
89
+ )
114
90
  end.should raise_error(ArgumentError, /already exists/)
115
91
  end
116
92
 
117
- it "should add examples to current example_group using it_should_behave_like" do
118
- shared_example_group = make_shared_example_group("shared example_group") do
93
+ it "adds examples to current example_group using it_should_behave_like" do
94
+ shared_example_group = SharedExampleGroup.register("shared example_group") do
119
95
  it("shared example") {}
120
96
  it("shared example 2") {}
121
97
  end
@@ -126,12 +102,12 @@ module Spec
126
102
  example_group.number_of_examples.should == 3
127
103
  end
128
104
 
129
- it "should add examples to from two shared groups" do
130
- shared_example_group_1 = make_shared_example_group("shared example_group 1") do
105
+ it "adds examples to from two shared groups" do
106
+ shared_example_group_1 = SharedExampleGroup.register("shared example_group 1") do
131
107
  it("shared example 1") {}
132
108
  end
133
109
 
134
- shared_example_group_1 = make_shared_example_group("shared example_group 2") do
110
+ shared_example_group_1 = SharedExampleGroup.register("shared example_group 2") do
135
111
  it("shared example 2") {}
136
112
  end
137
113
 
@@ -141,7 +117,7 @@ module Spec
141
117
  example_group.number_of_examples.should == 3
142
118
  end
143
119
 
144
- it "should add examples to current example_group using include" do
120
+ it "adds examples to current example_group using include" do
145
121
  shared_example_group = describe "all things", :shared => true do
146
122
  it "should do stuff" do end
147
123
  end
@@ -153,7 +129,7 @@ module Spec
153
129
  example_group.number_of_examples.should == 1
154
130
  end
155
131
 
156
- it "should add examples to current example_group using it_should_behave_like with a module" do
132
+ it "adds examples to current example_group using it_should_behave_like with a module" do
157
133
  AllThings = describe "all things", :shared => true do
158
134
  it "should do stuff" do end
159
135
  end
@@ -165,9 +141,9 @@ module Spec
165
141
  example_group.number_of_examples.should == 1
166
142
  end
167
143
 
168
- it "should run shared examples" do
144
+ it "runs shared examples" do
169
145
  shared_example_ran = false
170
- shared_example_group = make_shared_example_group("shared example_group") do
146
+ shared_example_group = SharedExampleGroup.register("shared example_group") do
171
147
  it("shared example") { shared_example_ran = true }
172
148
  end
173
149
 
@@ -175,17 +151,17 @@ module Spec
175
151
 
176
152
  example_group.it_should_behave_like("shared example_group")
177
153
  example_group.it("example") {example_ran = true}
178
- example_group.run
154
+ example_group.run(options)
179
155
  example_ran.should be_true
180
156
  shared_example_ran.should be_true
181
157
  end
182
158
 
183
- it "should run setup and teardown from shared example_group" do
159
+ it "runs before(:each) and after(:each) from shared example_group" do
184
160
  shared_setup_ran = false
185
161
  shared_teardown_ran = false
186
- shared_example_group = make_shared_example_group("shared example_group") do
187
- before { shared_setup_ran = true }
188
- after { shared_teardown_ran = true }
162
+ shared_example_group = SharedExampleGroup.register("shared example_group") do
163
+ before(:each) { shared_setup_ran = true }
164
+ after(:each) { shared_teardown_ran = true }
189
165
  it("shared example") { shared_example_ran = true }
190
166
  end
191
167
 
@@ -193,7 +169,7 @@ module Spec
193
169
 
194
170
  example_group.it_should_behave_like("shared example_group")
195
171
  example_group.it("example") {example_ran = true}
196
- example_group.run
172
+ example_group.run(options)
197
173
  example_ran.should be_true
198
174
  shared_setup_ran.should be_true
199
175
  shared_teardown_ran.should be_true
@@ -202,9 +178,9 @@ module Spec
202
178
  it "should run before(:all) and after(:all) only once from shared example_group" do
203
179
  shared_before_all_run_count = 0
204
180
  shared_after_all_run_count = 0
205
- shared_example_group = make_shared_example_group("shared example_group") do
181
+ shared_example_group = SharedExampleGroup.register("shared example_group") do
206
182
  before(:all) { shared_before_all_run_count += 1}
207
- after(:all) { shared_after_all_run_count += 1}
183
+ after(:all) { shared_after_all_run_count += 1}
208
184
  it("shared example") { shared_example_ran = true }
209
185
  end
210
186
 
@@ -212,7 +188,7 @@ module Spec
212
188
 
213
189
  example_group.it_should_behave_like("shared example_group")
214
190
  example_group.it("example") {example_ran = true}
215
- example_group.run
191
+ example_group.run(options)
216
192
  example_ran.should be_true
217
193
  shared_before_all_run_count.should == 1
218
194
  shared_after_all_run_count.should == 1
@@ -221,7 +197,7 @@ module Spec
221
197
  it "should include modules, included into shared example_group, into current example_group" do
222
198
  @formatter.should_receive(:add_example_group).with(any_args)
223
199
 
224
- shared_example_group = make_shared_example_group("shared example_group") do
200
+ shared_example_group = SharedExampleGroup.register("shared example_group") do
225
201
  it("shared example") { shared_example_ran = true }
226
202
  end
227
203
 
@@ -248,13 +224,13 @@ module Spec
248
224
  mod1_method
249
225
  mod2_method
250
226
  end
251
- example_group.run
227
+ example_group.run(options)
252
228
  mod1_method_called.should be_true
253
229
  mod2_method_called.should be_true
254
230
  end
255
231
 
256
232
  it "should make methods defined in the shared example_group available in consuming example_group" do
257
- shared_example_group = make_shared_example_group("shared example_group xyz") do
233
+ shared_example_group = SharedExampleGroup.register("shared example_group xyz") do
258
234
  def a_shared_helper_method
259
235
  "this got defined in a shared example_group"
260
236
  end
@@ -265,7 +241,7 @@ module Spec
265
241
  a_shared_helper_method
266
242
  success = true
267
243
  end
268
- example_group.run
244
+ example_group.run(options)
269
245
  success.should be_true
270
246
  end
271
247
 
@@ -20,31 +20,6 @@ describe Object, "#should" do
20
20
  @target.should @matcher
21
21
  }.should fail_with("the failure message")
22
22
  end
23
-
24
- it "should raise error if it receives false directly" do
25
- lambda {
26
- @target.should false
27
- }.should raise_error(Spec::Expectations::InvalidMatcherError)
28
- end
29
-
30
- it "should raise error if it receives false (evaluated)" do
31
- lambda {
32
- @target.should eql?("foo")
33
- }.should raise_error(Spec::Expectations::InvalidMatcherError)
34
- end
35
-
36
- it "should raise error if it receives true" do
37
- lambda {
38
- @target.should true
39
- }.should raise_error(Spec::Expectations::InvalidMatcherError)
40
- end
41
-
42
- it "should raise error if it receives no argument and it is not used as a left side of an operator" do
43
- pending "Is it even possible to catch this?"
44
- lambda {
45
- @target.should
46
- }.should raise_error(Spec::Expectations::InvalidMatcherError)
47
- end
48
23
  end
49
24
 
50
25
  describe Object, "#should_not" do
@@ -67,29 +42,4 @@ describe Object, "#should_not" do
67
42
  @target.should_not @matcher
68
43
  }.should fail_with("the negative failure message")
69
44
  end
70
-
71
- it "should raise error if it receives false directly" do
72
- lambda {
73
- @target.should_not false
74
- }.should raise_error(Spec::Expectations::InvalidMatcherError)
75
- end
76
-
77
- it "should raise error if it receives false (evaluated)" do
78
- lambda {
79
- @target.should_not eql?("foo")
80
- }.should raise_error(Spec::Expectations::InvalidMatcherError)
81
- end
82
-
83
- it "should raise error if it receives true" do
84
- lambda {
85
- @target.should_not true
86
- }.should raise_error(Spec::Expectations::InvalidMatcherError)
87
- end
88
-
89
- it "should raise error if it receives no argument and it is not used as a left side of an operator" do
90
- pending "Is it even possible to catch this?"
91
- lambda {
92
- @target.should_not
93
- }.should raise_error(Spec::Expectations::InvalidMatcherError)
94
- end
95
45
  end
@@ -0,0 +1,30 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Matchers
5
+ describe "wrap_expectation" do
6
+
7
+ def stub_matcher
8
+ @_stub_matcher ||= simple_matcher do
9
+ end
10
+ end
11
+
12
+ def failing_matcher
13
+ @_failing_matcher ||= simple_matcher do
14
+ 1.should == 2
15
+ end
16
+ end
17
+
18
+ it "should return true if there is no error" do
19
+ wrap_expectation stub_matcher do
20
+ end.should be_true
21
+ end
22
+
23
+ it "should return false if there is an error" do
24
+ wrap_expectation failing_matcher do
25
+ raise "error"
26
+ end.should be_false
27
+ end
28
+ end
29
+ end
30
+ end
@@ -2,11 +2,7 @@ require File.dirname(__FILE__) + '/test_unit_spec_helper'
2
2
 
3
3
  describe "ExampleGroup with test/unit/interop" do
4
4
  include TestUnitSpecHelper
5
-
6
- def resources
7
- File.dirname(__FILE__) + "/resources"
8
- end
9
-
5
+
10
6
  describe "with passing examples" do
11
7
  it "should output 0 failures" do
12
8
  output = ruby("#{resources}/spec_that_passes.rb")