rspec 0.0.10 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (395) hide show
  1. data/CHANGES +8 -0
  2. data/README +20 -0
  3. data/Rakefile.rb +122 -0
  4. data/lib/rspec.rb +9 -0
  5. data/lib/spec.rb +4 -29
  6. data/lib/spec/context.rb +61 -0
  7. data/lib/spec/{mocks/errors.rb → exceptions.rb} +5 -4
  8. data/lib/spec/expectations.rb +61 -50
  9. data/lib/spec/mock.rb +104 -0
  10. data/lib/spec/text_runner.rb +84 -0
  11. metadata +48 -452
  12. data/.autotest +0 -3
  13. data/.gitignore +0 -7
  14. data/History.txt +0 -1104
  15. data/MIT-LICENSE +0 -20
  16. data/Manifest.txt +0 -387
  17. data/README.txt +0 -36
  18. data/Rakefile +0 -88
  19. data/TODO +0 -1
  20. data/bin/autospec +0 -3
  21. data/bin/spec +0 -4
  22. data/bin/spec_translator +0 -8
  23. data/examples/pure/autogenerated_docstrings_example.rb +0 -19
  24. data/examples/pure/before_and_after_example.rb +0 -40
  25. data/examples/pure/behave_as_example.rb +0 -45
  26. data/examples/pure/custom_expectation_matchers.rb +0 -54
  27. data/examples/pure/custom_formatter.rb +0 -12
  28. data/examples/pure/dynamic_spec.rb +0 -9
  29. data/examples/pure/file_accessor.rb +0 -19
  30. data/examples/pure/file_accessor_spec.rb +0 -38
  31. data/examples/pure/greeter_spec.rb +0 -31
  32. data/examples/pure/helper_method_example.rb +0 -14
  33. data/examples/pure/io_processor.rb +0 -8
  34. data/examples/pure/io_processor_spec.rb +0 -21
  35. data/examples/pure/legacy_spec.rb +0 -11
  36. data/examples/pure/mocking_example.rb +0 -27
  37. data/examples/pure/multi_threaded_behaviour_runner.rb +0 -28
  38. data/examples/pure/nested_classes_example.rb +0 -36
  39. data/examples/pure/partial_mock_example.rb +0 -29
  40. data/examples/pure/pending_example.rb +0 -20
  41. data/examples/pure/predicate_example.rb +0 -27
  42. data/examples/pure/priority.txt +0 -1
  43. data/examples/pure/shared_example_group_example.rb +0 -81
  44. data/examples/pure/shared_stack_examples.rb +0 -38
  45. data/examples/pure/spec_helper.rb +0 -3
  46. data/examples/pure/stack.rb +0 -36
  47. data/examples/pure/stack_spec.rb +0 -63
  48. data/examples/pure/stack_spec_with_nested_example_groups.rb +0 -67
  49. data/examples/pure/stubbing_example.rb +0 -69
  50. data/examples/stories/adder.rb +0 -13
  51. data/examples/stories/addition +0 -34
  52. data/examples/stories/addition.rb +0 -9
  53. data/examples/stories/calculator.rb +0 -65
  54. data/examples/stories/game-of-life/.loadpath +0 -5
  55. data/examples/stories/game-of-life/README.txt +0 -21
  56. data/examples/stories/game-of-life/behaviour/everything.rb +0 -6
  57. data/examples/stories/game-of-life/behaviour/examples/examples.rb +0 -3
  58. data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +0 -35
  59. data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +0 -66
  60. data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +0 -21
  61. data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +0 -21
  62. data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +0 -42
  63. data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +0 -42
  64. data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +0 -17
  65. data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +0 -53
  66. data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +0 -52
  67. data/examples/stories/game-of-life/behaviour/stories/helper.rb +0 -6
  68. data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +0 -26
  69. data/examples/stories/game-of-life/behaviour/stories/steps.rb +0 -5
  70. data/examples/stories/game-of-life/behaviour/stories/stories.rb +0 -3
  71. data/examples/stories/game-of-life/behaviour/stories/stories.txt +0 -22
  72. data/examples/stories/game-of-life/life.rb +0 -3
  73. data/examples/stories/game-of-life/life/game.rb +0 -23
  74. data/examples/stories/game-of-life/life/grid.rb +0 -43
  75. data/examples/stories/helper.rb +0 -9
  76. data/examples/stories/steps/addition_steps.rb +0 -18
  77. data/failing_examples/README.txt +0 -7
  78. data/failing_examples/diffing_spec.rb +0 -36
  79. data/failing_examples/failing_autogenerated_docstrings_example.rb +0 -19
  80. data/failing_examples/failure_in_setup.rb +0 -10
  81. data/failing_examples/failure_in_teardown.rb +0 -10
  82. data/failing_examples/mocking_example.rb +0 -40
  83. data/failing_examples/mocking_with_flexmock.rb +0 -26
  84. data/failing_examples/mocking_with_mocha.rb +0 -25
  85. data/failing_examples/mocking_with_rr.rb +0 -27
  86. data/failing_examples/partial_mock_example.rb +0 -20
  87. data/failing_examples/predicate_example.rb +0 -29
  88. data/failing_examples/raising_example.rb +0 -47
  89. data/failing_examples/spec_helper.rb +0 -3
  90. data/failing_examples/syntax_error_example.rb +0 -7
  91. data/failing_examples/team_spec.rb +0 -44
  92. data/failing_examples/timeout_behaviour.rb +0 -7
  93. data/init.rb +0 -9
  94. data/lib/autotest/discover.rb +0 -3
  95. data/lib/autotest/rspec.rb +0 -72
  96. data/lib/spec/adapters.rb +0 -1
  97. data/lib/spec/adapters/ruby_engine.rb +0 -26
  98. data/lib/spec/adapters/ruby_engine/mri.rb +0 -8
  99. data/lib/spec/adapters/ruby_engine/rubinius.rb +0 -8
  100. data/lib/spec/example.rb +0 -12
  101. data/lib/spec/example/configuration.rb +0 -158
  102. data/lib/spec/example/errors.rb +0 -9
  103. data/lib/spec/example/example_group.rb +0 -17
  104. data/lib/spec/example/example_group_factory.rb +0 -64
  105. data/lib/spec/example/example_group_methods.rb +0 -440
  106. data/lib/spec/example/example_matcher.rb +0 -44
  107. data/lib/spec/example/example_methods.rb +0 -112
  108. data/lib/spec/example/module_inclusion_warnings.rb +0 -38
  109. data/lib/spec/example/module_reopening_fix.rb +0 -21
  110. data/lib/spec/example/pending.rb +0 -18
  111. data/lib/spec/example/shared_example_group.rb +0 -58
  112. data/lib/spec/expectations/differs/default.rb +0 -66
  113. data/lib/spec/expectations/errors.rb +0 -12
  114. data/lib/spec/expectations/extensions.rb +0 -2
  115. data/lib/spec/expectations/extensions/object.rb +0 -63
  116. data/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
  117. data/lib/spec/expectations/handler.rb +0 -62
  118. data/lib/spec/extensions.rb +0 -4
  119. data/lib/spec/extensions/class.rb +0 -24
  120. data/lib/spec/extensions/main.rb +0 -102
  121. data/lib/spec/extensions/metaclass.rb +0 -7
  122. data/lib/spec/extensions/object.rb +0 -6
  123. data/lib/spec/interop/test.rb +0 -12
  124. data/lib/spec/interop/test/unit/autorunner.rb +0 -6
  125. data/lib/spec/interop/test/unit/testcase.rb +0 -61
  126. data/lib/spec/interop/test/unit/testresult.rb +0 -6
  127. data/lib/spec/interop/test/unit/testsuite_adapter.rb +0 -34
  128. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +0 -61
  129. data/lib/spec/matchers.rb +0 -156
  130. data/lib/spec/matchers/be.rb +0 -224
  131. data/lib/spec/matchers/be_close.rb +0 -37
  132. data/lib/spec/matchers/change.rb +0 -148
  133. data/lib/spec/matchers/eql.rb +0 -43
  134. data/lib/spec/matchers/equal.rb +0 -43
  135. data/lib/spec/matchers/exist.rb +0 -17
  136. data/lib/spec/matchers/has.rb +0 -34
  137. data/lib/spec/matchers/have.rb +0 -149
  138. data/lib/spec/matchers/include.rb +0 -70
  139. data/lib/spec/matchers/match.rb +0 -41
  140. data/lib/spec/matchers/operator_matcher.rb +0 -73
  141. data/lib/spec/matchers/raise_error.rb +0 -132
  142. data/lib/spec/matchers/respond_to.rb +0 -45
  143. data/lib/spec/matchers/satisfy.rb +0 -47
  144. data/lib/spec/matchers/simple_matcher.rb +0 -132
  145. data/lib/spec/matchers/throw_symbol.rb +0 -74
  146. data/lib/spec/mocks.rb +0 -211
  147. data/lib/spec/mocks/argument_constraint_matchers.rb +0 -31
  148. data/lib/spec/mocks/argument_expectation.rb +0 -216
  149. data/lib/spec/mocks/error_generator.rb +0 -84
  150. data/lib/spec/mocks/extensions.rb +0 -1
  151. data/lib/spec/mocks/extensions/object.rb +0 -3
  152. data/lib/spec/mocks/framework.rb +0 -15
  153. data/lib/spec/mocks/message_expectation.rb +0 -290
  154. data/lib/spec/mocks/methods.rb +0 -39
  155. data/lib/spec/mocks/mock.rb +0 -56
  156. data/lib/spec/mocks/order_group.rb +0 -29
  157. data/lib/spec/mocks/proxy.rb +0 -184
  158. data/lib/spec/mocks/space.rb +0 -28
  159. data/lib/spec/mocks/spec_methods.rb +0 -38
  160. data/lib/spec/rake/spectask.rb +0 -227
  161. data/lib/spec/rake/verify_rcov.rb +0 -52
  162. data/lib/spec/runner.rb +0 -201
  163. data/lib/spec/runner/backtrace_tweaker.rb +0 -57
  164. data/lib/spec/runner/class_and_arguments_parser.rb +0 -16
  165. data/lib/spec/runner/command_line.rb +0 -28
  166. data/lib/spec/runner/drb_command_line.rb +0 -20
  167. data/lib/spec/runner/example_group_runner.rb +0 -59
  168. data/lib/spec/runner/formatter/base_formatter.rb +0 -77
  169. data/lib/spec/runner/formatter/base_text_formatter.rb +0 -130
  170. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +0 -27
  171. data/lib/spec/runner/formatter/failing_examples_formatter.rb +0 -20
  172. data/lib/spec/runner/formatter/html_formatter.rb +0 -337
  173. data/lib/spec/runner/formatter/nested_text_formatter.rb +0 -65
  174. data/lib/spec/runner/formatter/profile_formatter.rb +0 -51
  175. data/lib/spec/runner/formatter/progress_bar_formatter.rb +0 -34
  176. data/lib/spec/runner/formatter/snippet_extractor.rb +0 -52
  177. data/lib/spec/runner/formatter/specdoc_formatter.rb +0 -39
  178. data/lib/spec/runner/formatter/story/html_formatter.rb +0 -161
  179. data/lib/spec/runner/formatter/story/plain_text_formatter.rb +0 -188
  180. data/lib/spec/runner/formatter/text_mate_formatter.rb +0 -16
  181. data/lib/spec/runner/heckle_runner.rb +0 -72
  182. data/lib/spec/runner/heckle_runner_unsupported.rb +0 -10
  183. data/lib/spec/runner/option_parser.rb +0 -203
  184. data/lib/spec/runner/options.rb +0 -309
  185. data/lib/spec/runner/reporter.rb +0 -147
  186. data/lib/spec/runner/spec_parser.rb +0 -71
  187. data/lib/spec/story.rb +0 -10
  188. data/lib/spec/story/extensions.rb +0 -3
  189. data/lib/spec/story/extensions/main.rb +0 -86
  190. data/lib/spec/story/extensions/regexp.rb +0 -9
  191. data/lib/spec/story/extensions/string.rb +0 -9
  192. data/lib/spec/story/given_scenario.rb +0 -14
  193. data/lib/spec/story/runner.rb +0 -60
  194. data/lib/spec/story/runner/plain_text_story_runner.rb +0 -48
  195. data/lib/spec/story/runner/scenario_collector.rb +0 -18
  196. data/lib/spec/story/runner/scenario_runner.rb +0 -54
  197. data/lib/spec/story/runner/story_mediator.rb +0 -137
  198. data/lib/spec/story/runner/story_parser.rb +0 -247
  199. data/lib/spec/story/runner/story_runner.rb +0 -70
  200. data/lib/spec/story/scenario.rb +0 -14
  201. data/lib/spec/story/step.rb +0 -70
  202. data/lib/spec/story/step_group.rb +0 -89
  203. data/lib/spec/story/step_mother.rb +0 -37
  204. data/lib/spec/story/story.rb +0 -39
  205. data/lib/spec/story/world.rb +0 -128
  206. data/lib/spec/translator.rb +0 -114
  207. data/lib/spec/version.rb +0 -13
  208. data/plugins/mock_frameworks/flexmock.rb +0 -23
  209. data/plugins/mock_frameworks/mocha.rb +0 -19
  210. data/plugins/mock_frameworks/rr.rb +0 -21
  211. data/plugins/mock_frameworks/rspec.rb +0 -20
  212. data/rake_tasks/examples.rake +0 -7
  213. data/rake_tasks/examples_with_rcov.rake +0 -9
  214. data/rake_tasks/failing_examples_with_html.rake +0 -9
  215. data/rake_tasks/verify_rcov.rake +0 -7
  216. data/spec/README.jruby +0 -15
  217. data/spec/autotest/discover_spec.rb +0 -19
  218. data/spec/autotest/rspec_spec.rb +0 -206
  219. data/spec/autotest_helper.rb +0 -6
  220. data/spec/autotest_matchers.rb +0 -47
  221. data/spec/rspec_suite.rb +0 -7
  222. data/spec/ruby_forker.rb +0 -13
  223. data/spec/spec.opts +0 -6
  224. data/spec/spec/adapters/ruby_engine_spec.rb +0 -16
  225. data/spec/spec/example/configuration_spec.rb +0 -282
  226. data/spec/spec/example/example_group/described_module_spec.rb +0 -20
  227. data/spec/spec/example/example_group/warning_messages_spec.rb +0 -76
  228. data/spec/spec/example/example_group_class_definition_spec.rb +0 -48
  229. data/spec/spec/example/example_group_factory_spec.rb +0 -144
  230. data/spec/spec/example/example_group_methods_spec.rb +0 -572
  231. data/spec/spec/example/example_group_spec.rb +0 -723
  232. data/spec/spec/example/example_matcher_spec.rb +0 -96
  233. data/spec/spec/example/example_methods_spec.rb +0 -126
  234. data/spec/spec/example/example_runner_spec.rb +0 -194
  235. data/spec/spec/example/example_spec.rb +0 -53
  236. data/spec/spec/example/nested_example_group_spec.rb +0 -71
  237. data/spec/spec/example/pending_module_spec.rb +0 -42
  238. data/spec/spec/example/predicate_matcher_spec.rb +0 -21
  239. data/spec/spec/example/shared_example_group_spec.rb +0 -265
  240. data/spec/spec/example/subclassing_example_group_spec.rb +0 -25
  241. data/spec/spec/expectations/differs/default_spec.rb +0 -127
  242. data/spec/spec/expectations/extensions/object_spec.rb +0 -107
  243. data/spec/spec/expectations/fail_with_spec.rb +0 -71
  244. data/spec/spec/extensions/main_spec.rb +0 -76
  245. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +0 -10
  246. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +0 -10
  247. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +0 -10
  248. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +0 -10
  249. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +0 -10
  250. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +0 -10
  251. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +0 -38
  252. data/spec/spec/interop/test/unit/spec_spec.rb +0 -45
  253. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +0 -14
  254. data/spec/spec/interop/test/unit/testcase_spec.rb +0 -45
  255. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +0 -9
  256. data/spec/spec/matchers/be_close_spec.rb +0 -39
  257. data/spec/spec/matchers/be_spec.rb +0 -248
  258. data/spec/spec/matchers/change_spec.rb +0 -317
  259. data/spec/spec/matchers/description_generation_spec.rb +0 -153
  260. data/spec/spec/matchers/eql_spec.rb +0 -28
  261. data/spec/spec/matchers/equal_spec.rb +0 -28
  262. data/spec/spec/matchers/exist_spec.rb +0 -57
  263. data/spec/spec/matchers/handler_spec.rb +0 -150
  264. data/spec/spec/matchers/has_spec.rb +0 -53
  265. data/spec/spec/matchers/have_spec.rb +0 -293
  266. data/spec/spec/matchers/include_spec.rb +0 -45
  267. data/spec/spec/matchers/match_spec.rb +0 -37
  268. data/spec/spec/matchers/matcher_methods_spec.rb +0 -78
  269. data/spec/spec/matchers/mock_constraint_matchers_spec.rb +0 -24
  270. data/spec/spec/matchers/operator_matcher_spec.rb +0 -168
  271. data/spec/spec/matchers/raise_error_spec.rb +0 -315
  272. data/spec/spec/matchers/respond_to_spec.rb +0 -54
  273. data/spec/spec/matchers/satisfy_spec.rb +0 -36
  274. data/spec/spec/matchers/simple_matcher_spec.rb +0 -93
  275. data/spec/spec/matchers/throw_symbol_spec.rb +0 -54
  276. data/spec/spec/mocks/any_number_of_times_spec.rb +0 -29
  277. data/spec/spec/mocks/argument_expectation_spec.rb +0 -23
  278. data/spec/spec/mocks/at_least_spec.rb +0 -97
  279. data/spec/spec/mocks/at_most_spec.rb +0 -93
  280. data/spec/spec/mocks/bug_report_10260_spec.rb +0 -8
  281. data/spec/spec/mocks/bug_report_10263_spec.rb +0 -24
  282. data/spec/spec/mocks/bug_report_11545_spec.rb +0 -33
  283. data/spec/spec/mocks/bug_report_15719_spec.rb +0 -30
  284. data/spec/spec/mocks/bug_report_7611_spec.rb +0 -19
  285. data/spec/spec/mocks/bug_report_7805_spec.rb +0 -22
  286. data/spec/spec/mocks/bug_report_8165_spec.rb +0 -31
  287. data/spec/spec/mocks/bug_report_8302_spec.rb +0 -26
  288. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +0 -130
  289. data/spec/spec/mocks/hash_including_matcher_spec.rb +0 -32
  290. data/spec/spec/mocks/mock_ordering_spec.rb +0 -84
  291. data/spec/spec/mocks/mock_space_spec.rb +0 -54
  292. data/spec/spec/mocks/mock_spec.rb +0 -494
  293. data/spec/spec/mocks/multiple_return_value_spec.rb +0 -113
  294. data/spec/spec/mocks/null_object_mock_spec.rb +0 -40
  295. data/spec/spec/mocks/once_counts_spec.rb +0 -53
  296. data/spec/spec/mocks/options_hash_spec.rb +0 -45
  297. data/spec/spec/mocks/partial_mock_spec.rb +0 -142
  298. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +0 -66
  299. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +0 -175
  300. data/spec/spec/mocks/precise_counts_spec.rb +0 -52
  301. data/spec/spec/mocks/record_messages_spec.rb +0 -26
  302. data/spec/spec/mocks/stub_spec.rb +0 -181
  303. data/spec/spec/mocks/twice_counts_spec.rb +0 -67
  304. data/spec/spec/package/bin_spec_spec.rb +0 -14
  305. data/spec/spec/runner/class_and_argument_parser_spec.rb +0 -23
  306. data/spec/spec/runner/command_line_spec.rb +0 -147
  307. data/spec/spec/runner/drb_command_line_spec.rb +0 -92
  308. data/spec/spec/runner/empty_file.txt +0 -0
  309. data/spec/spec/runner/examples.txt +0 -2
  310. data/spec/spec/runner/execution_context_spec.rb +0 -37
  311. data/spec/spec/runner/failed.txt +0 -3
  312. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +0 -45
  313. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +0 -33
  314. data/spec/spec/runner/formatter/html_formatted-1.8.4.html +0 -365
  315. data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +0 -387
  316. data/spec/spec/runner/formatter/html_formatted-1.8.5.html +0 -371
  317. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +0 -381
  318. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +0 -370
  319. data/spec/spec/runner/formatter/html_formatter_spec.rb +0 -63
  320. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +0 -333
  321. data/spec/spec/runner/formatter/profile_formatter_spec.rb +0 -65
  322. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +0 -137
  323. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +0 -18
  324. data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +0 -103
  325. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +0 -158
  326. data/spec/spec/runner/formatter/story/html_formatter_spec.rb +0 -87
  327. data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +0 -548
  328. data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +0 -365
  329. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +0 -370
  330. data/spec/spec/runner/heckle_runner_spec.rb +0 -78
  331. data/spec/spec/runner/heckler_spec.rb +0 -13
  332. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +0 -45
  333. data/spec/spec/runner/option_parser_spec.rb +0 -394
  334. data/spec/spec/runner/options_spec.rb +0 -450
  335. data/spec/spec/runner/output_one_time_fixture.rb +0 -7
  336. data/spec/spec/runner/output_one_time_fixture_runner.rb +0 -8
  337. data/spec/spec/runner/output_one_time_spec.rb +0 -16
  338. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +0 -56
  339. data/spec/spec/runner/reporter_spec.rb +0 -192
  340. data/spec/spec/runner/resources/a_bar.rb +0 -0
  341. data/spec/spec/runner/resources/a_foo.rb +0 -0
  342. data/spec/spec/runner/resources/a_spec.rb +0 -1
  343. data/spec/spec/runner/spec.opts +0 -2
  344. data/spec/spec/runner/spec_drb.opts +0 -1
  345. data/spec/spec/runner/spec_parser/spec_parser_fixture.rb +0 -70
  346. data/spec/spec/runner/spec_parser_spec.rb +0 -85
  347. data/spec/spec/runner/spec_spaced.opts +0 -2
  348. data/spec/spec/runner_spec.rb +0 -11
  349. data/spec/spec/spec_classes.rb +0 -133
  350. data/spec/spec/story/builders.rb +0 -46
  351. data/spec/spec/story/extensions/main_spec.rb +0 -161
  352. data/spec/spec/story/extensions_spec.rb +0 -14
  353. data/spec/spec/story/given_scenario_spec.rb +0 -27
  354. data/spec/spec/story/runner/plain_text_story_runner_spec.rb +0 -93
  355. data/spec/spec/story/runner/scenario_collector_spec.rb +0 -27
  356. data/spec/spec/story/runner/scenario_runner_spec.rb +0 -214
  357. data/spec/spec/story/runner/story_mediator_spec.rb +0 -143
  358. data/spec/spec/story/runner/story_parser_spec.rb +0 -401
  359. data/spec/spec/story/runner/story_runner_spec.rb +0 -294
  360. data/spec/spec/story/runner_spec.rb +0 -93
  361. data/spec/spec/story/scenario_spec.rb +0 -20
  362. data/spec/spec/story/step_group_spec.rb +0 -157
  363. data/spec/spec/story/step_mother_spec.rb +0 -72
  364. data/spec/spec/story/step_spec.rb +0 -250
  365. data/spec/spec/story/story_helper.rb +0 -2
  366. data/spec/spec/story/story_spec.rb +0 -86
  367. data/spec/spec/story/world_spec.rb +0 -423
  368. data/spec/spec/translator_spec.rb +0 -265
  369. data/spec/spec_helper.rb +0 -103
  370. data/stories/all.rb +0 -5
  371. data/stories/example_groups/autogenerated_docstrings +0 -45
  372. data/stories/example_groups/example_group_with_should_methods +0 -17
  373. data/stories/example_groups/nested_groups +0 -17
  374. data/stories/example_groups/output +0 -25
  375. data/stories/example_groups/stories.rb +0 -7
  376. data/stories/helper.rb +0 -6
  377. data/stories/interop/examples_and_tests_together +0 -30
  378. data/stories/interop/stories.rb +0 -7
  379. data/stories/interop/test_case_with_should_methods +0 -17
  380. data/stories/mock_framework_integration/stories.rb +0 -7
  381. data/stories/mock_framework_integration/use_flexmock.story +0 -9
  382. data/stories/pending_stories/README +0 -3
  383. data/stories/resources/helpers/cmdline.rb +0 -9
  384. data/stories/resources/helpers/story_helper.rb +0 -16
  385. data/stories/resources/matchers/smart_match.rb +0 -37
  386. data/stories/resources/spec/example_group_with_should_methods.rb +0 -12
  387. data/stories/resources/spec/simple_spec.rb +0 -8
  388. data/stories/resources/spec/spec_with_flexmock.rb +0 -18
  389. data/stories/resources/steps/running_rspec.rb +0 -50
  390. data/stories/resources/stories/failing_story.rb +0 -15
  391. data/stories/resources/test/spec_and_test_together.rb +0 -57
  392. data/stories/resources/test/test_case_with_should_methods.rb +0 -30
  393. data/stories/stories/multiline_steps.story +0 -23
  394. data/stories/stories/steps/multiline_steps.rb +0 -13
  395. data/stories/stories/stories.rb +0 -6
@@ -1,16 +0,0 @@
1
- require 'spec/runner/formatter/html_formatter'
2
-
3
- module Spec
4
- module Runner
5
- module Formatter
6
- # Formats backtraces so they're clickable by TextMate
7
- class TextMateFormatter < HtmlFormatter
8
- def backtrace_line(line)
9
- line.gsub(/([^:]*\.rb):(\d*)/) do
10
- "<a href=\"txmt://open?url=file://#{File.expand_path($1)}&line=#{$2}\">#{$1}:#{$2}</a> "
11
- end
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,72 +0,0 @@
1
- begin
2
- require 'rubygems'
3
- require 'heckle'
4
- rescue LoadError ; raise "You must gem install heckle to use --heckle" ; end
5
-
6
- module Spec
7
- module Runner
8
- # Creates a new Heckler configured to heckle all methods in the classes
9
- # whose name matches +filter+
10
- class HeckleRunner
11
- def initialize(filter, heckle_class=Heckler)
12
- @filter = filter
13
- @heckle_class = heckle_class
14
- end
15
-
16
- # Runs all the example groups held by +rspec_options+ once for each of the
17
- # methods in the matched classes.
18
- def heckle_with
19
- if @filter =~ /(.*)[#\.](.*)/
20
- heckle_method($1, $2)
21
- else
22
- heckle_class_or_module(@filter)
23
- end
24
- end
25
-
26
- def heckle_method(class_name, method_name)
27
- verify_constant(class_name)
28
- heckle = @heckle_class.new(class_name, method_name, rspec_options)
29
- heckle.validate
30
- end
31
-
32
- def heckle_class_or_module(class_or_module_name)
33
- verify_constant(class_or_module_name)
34
- pattern = /^#{class_or_module_name}/
35
- classes = []
36
- ObjectSpace.each_object(Class) do |klass|
37
- classes << klass if klass.name =~ pattern
38
- end
39
-
40
- classes.each do |klass|
41
- klass.instance_methods(false).each do |method_name|
42
- heckle = @heckle_class.new(klass.name, method_name, rspec_options)
43
- heckle.validate
44
- end
45
- end
46
- end
47
-
48
- def verify_constant(name)
49
- begin
50
- # This is defined in Heckle
51
- name.to_class
52
- rescue
53
- raise "Heckling failed - \"#{name}\" is not a known class or module"
54
- end
55
- end
56
- end
57
-
58
- #Supports Heckle 1.2 and prior (earlier versions used Heckle::Base)
59
- class Heckler < (Heckle.const_defined?(:Base) ? Heckle::Base : Heckle)
60
- def initialize(klass_name, method_name, rspec_options)
61
- super(klass_name, method_name)
62
- @rspec_options = rspec_options
63
- end
64
-
65
- def tests_pass?
66
- success = @rspec_options.run_examples
67
- success
68
- end
69
-
70
- end
71
- end
72
- end
@@ -1,10 +0,0 @@
1
- module Spec
2
- module Runner
3
- # Dummy implementation for Windows that just fails (Heckle is not supported on Windows)
4
- class HeckleRunner
5
- def initialize(filter)
6
- raise "Heckle not supported on Windows"
7
- end
8
- end
9
- end
10
- end
@@ -1,203 +0,0 @@
1
- require 'optparse'
2
- require 'stringio'
3
-
4
- module Spec
5
- module Runner
6
- class OptionParser < ::OptionParser
7
- class << self
8
- def parse(args, err, out)
9
- parser = new(err, out)
10
- parser.parse(args)
11
- parser.options
12
- end
13
- end
14
-
15
- attr_reader :options
16
-
17
- OPTIONS = {
18
- :pattern => ["-p", "--pattern [PATTERN]","Limit files loaded to those matching this pattern. Defaults to '**/*_spec.rb'",
19
- "Separate multiple patterns with commas.",
20
- "Applies only to directories named on the command line (files",
21
- "named explicitly on the command line will be loaded regardless)."],
22
- :diff => ["-D", "--diff [FORMAT]","Show diff of objects that are expected to be equal when they are not",
23
- "Builtin formats: unified|u|context|c",
24
- "You can also specify a custom differ class",
25
- "(in which case you should also specify --require)"],
26
- :colour => ["-c", "--colour", "--color", "Show coloured (red/green) output"],
27
- :example => ["-e", "--example [NAME|FILE_NAME]", "Execute example(s) with matching name(s). If the argument is",
28
- "the path to an existing file (typically generated by a previous",
29
- "run using --format failing_examples:file.txt), then the examples",
30
- "on each line of thatfile will be executed. If the file is empty,",
31
- "all examples will be run (as if --example was not specified).",
32
- " ",
33
- "If the argument is not an existing file, then it is treated as",
34
- "an example name directly, causing RSpec to run just the example",
35
- "matching that name"],
36
- :specification => ["-s", "--specification [NAME]", "DEPRECATED - use -e instead", "(This will be removed when autotest works with -e)"],
37
- :line => ["-l", "--line LINE_NUMBER", Integer, "Execute behaviout or specification at given line.",
38
- "(does not work for dynamically generated specs)"],
39
- :format => ["-f", "--format FORMAT[:WHERE]","Specifies what format to use for output. Specify WHERE to tell",
40
- "the formatter where to write the output. All built-in formats",
41
- "expect WHERE to be a file name, and will write to STDOUT if it's",
42
- "not specified. The --format option may be specified several times",
43
- "if you want several outputs",
44
- " ",
45
- "Builtin formats for examples: ",
46
- "progress|p : Text progress",
47
- "profile|o : Text progress with profiling of 10 slowest examples",
48
- "specdoc|s : Example doc as text",
49
- "indented|i : Example doc as indented text",
50
- "html|h : A nice HTML report",
51
- "failing_examples|e : Write all failing examples - input for --example",
52
- "failing_example_groups|g : Write all failing example groups - input for --example",
53
- " ",
54
- "Builtin formats for stories: ",
55
- "plain|p : Plain Text",
56
- "html|h : A nice HTML report",
57
- " ",
58
- "FORMAT can also be the name of a custom formatter class",
59
- "(in which case you should also specify --require to load it)"],
60
- :require => ["-r", "--require FILE", "Require FILE before running specs",
61
- "Useful for loading custom formatters or other extensions.",
62
- "If this option is used it must come before the others"],
63
- :backtrace => ["-b", "--backtrace", "Output full backtrace"],
64
- :loadby => ["-L", "--loadby STRATEGY", "Specify the strategy by which spec files should be loaded.",
65
- "STRATEGY can currently only be 'mtime' (File modification time)",
66
- "By default, spec files are loaded in alphabetical order if --loadby",
67
- "is not specified."],
68
- :reverse => ["-R", "--reverse", "Run examples in reverse order"],
69
- :timeout => ["-t", "--timeout FLOAT", "Interrupt and fail each example that doesn't complete in the",
70
- "specified time"],
71
- :heckle => ["-H", "--heckle CODE", "If all examples pass, this will mutate the classes and methods",
72
- "identified by CODE little by little and run all the examples again",
73
- "for each mutation. The intent is that for each mutation, at least",
74
- "one example *should* fail, and RSpec will tell you if this is not the",
75
- "case. CODE should be either Some::Module, Some::Class or",
76
- "Some::Fabulous#method}"],
77
- :dry_run => ["-d", "--dry-run", "Invokes formatters without executing the examples."],
78
- :options_file => ["-O", "--options PATH", "Read options from a file"],
79
- :generate_options => ["-G", "--generate-options PATH", "Generate an options file for --options"],
80
- :runner => ["-U", "--runner RUNNER", "Use a custom Runner."],
81
- :drb => ["-X", "--drb", "Run examples via DRb. (For example against script/spec_server)"],
82
- :version => ["-v", "--version", "Show version"],
83
- :help => ["-h", "--help", "You're looking at it"]
84
- }
85
-
86
- def initialize(err, out)
87
- super()
88
- @error_stream = err
89
- @out_stream = out
90
- @options = Options.new(@error_stream, @out_stream)
91
-
92
- @file_factory = File
93
-
94
- self.banner = "Usage: spec (FILE|DIRECTORY|GLOB)+ [options]"
95
- self.separator ""
96
- on(*OPTIONS[:pattern]) {|pattern| @options.filename_pattern = pattern}
97
- on(*OPTIONS[:diff]) {|diff| @options.parse_diff(diff)}
98
- on(*OPTIONS[:colour]) {@options.colour = true}
99
- on(*OPTIONS[:example]) {|example| @options.parse_example(example)}
100
- on(*OPTIONS[:specification]) {|example| @options.parse_example(example)}
101
- on(*OPTIONS[:line]) {|line_number| @options.line_number = line_number.to_i}
102
- on(*OPTIONS[:format]) {|format| @options.parse_format(format)}
103
- on(*OPTIONS[:require]) {|requires| invoke_requires(requires)}
104
- on(*OPTIONS[:backtrace]) {@options.backtrace_tweaker = NoisyBacktraceTweaker.new}
105
- on(*OPTIONS[:loadby]) {|loadby| @options.loadby = loadby}
106
- on(*OPTIONS[:reverse]) {@options.reverse = true}
107
- on(*OPTIONS[:timeout]) {|timeout| @options.timeout = timeout.to_f}
108
- on(*OPTIONS[:heckle]) {|heckle| @options.load_heckle_runner(heckle)}
109
- on(*OPTIONS[:dry_run]) {@options.dry_run = true}
110
- on(*OPTIONS[:options_file]) {|options_file| parse_options_file(options_file)}
111
- on(*OPTIONS[:generate_options]) {|options_file|}
112
- on(*OPTIONS[:runner]) {|runner| @options.user_input_for_runner = runner}
113
- on(*OPTIONS[:drb]) {}
114
- on(*OPTIONS[:version]) {parse_version}
115
- on_tail(*OPTIONS[:help]) {parse_help}
116
- end
117
-
118
- def order!(argv, &blk)
119
- @argv = argv
120
- @options.argv = @argv.dup
121
- return if parse_generate_options
122
- return if parse_drb
123
-
124
- super(@argv) do |file|
125
- @options.files << file
126
- blk.call(file) if blk
127
- end
128
-
129
- @options
130
- end
131
-
132
- protected
133
- def invoke_requires(requires)
134
- requires.split(",").each do |file|
135
- require file
136
- end
137
- end
138
-
139
- def parse_options_file(options_file)
140
- option_file_args = IO.readlines(options_file).map {|l| l.chomp.split " "}.flatten
141
- @argv.push(*option_file_args)
142
- # TODO - this is a brute force solution to http://rspec.lighthouseapp.com/projects/5645/tickets/293.
143
- # Let's look for a cleaner way. Might not be one. But let's look. If not, perhaps
144
- # this can be moved to a different method to indicate the special handling for drb?
145
- parse_drb(@argv)
146
- end
147
-
148
- def parse_generate_options
149
- # Remove the --generate-options option and the argument before writing to file
150
- options_file = nil
151
- ['-G', '--generate-options'].each do |option|
152
- if index = @argv.index(option)
153
- @argv.delete_at(index)
154
- options_file = @argv.delete_at(index)
155
- end
156
- end
157
-
158
- if options_file
159
- write_generated_options(options_file)
160
- return true
161
- else
162
- return false
163
- end
164
- end
165
-
166
- def write_generated_options(options_file)
167
- File.open(options_file, 'w') do |io|
168
- io.puts @argv.join("\n")
169
- end
170
- @out_stream.puts "\nOptions written to #{options_file}. You can now use these options with:"
171
- @out_stream.puts "spec --options #{options_file}"
172
- @options.examples_should_not_be_run
173
- end
174
-
175
- def parse_drb(argv = nil)
176
- argv ||= @options.argv # TODO - see note about about http://rspec.lighthouseapp.com/projects/5645/tickets/293
177
- is_drb = false
178
- is_drb ||= argv.delete(OPTIONS[:drb][0])
179
- is_drb ||= argv.delete(OPTIONS[:drb][1])
180
- return false unless is_drb
181
- @options.examples_should_not_be_run
182
- DrbCommandLine.run(
183
- self.class.parse(argv, @error_stream, @out_stream)
184
- )
185
- true
186
- end
187
-
188
- def parse_version
189
- @out_stream.puts ::Spec::VERSION::SUMMARY
190
- exit if stdout?
191
- end
192
-
193
- def parse_help
194
- @out_stream.puts self
195
- exit if stdout?
196
- end
197
-
198
- def stdout?
199
- @out_stream == $stdout
200
- end
201
- end
202
- end
203
- end
@@ -1,309 +0,0 @@
1
- module Spec
2
- module Runner
3
- class Options
4
- FILE_SORTERS = {
5
- 'mtime' => lambda {|file_a, file_b| File.mtime(file_b) <=> File.mtime(file_a)}
6
- }
7
-
8
- EXAMPLE_FORMATTERS = { # Load these lazily for better speed
9
- 'specdoc' => ['spec/runner/formatter/specdoc_formatter', 'Formatter::SpecdocFormatter'],
10
- 's' => ['spec/runner/formatter/specdoc_formatter', 'Formatter::SpecdocFormatter'],
11
- 'nested' => ['spec/runner/formatter/nested_text_formatter', 'Formatter::NestedTextFormatter'],
12
- 'n' => ['spec/runner/formatter/nested_text_formatter', 'Formatter::NestedTextFormatter'],
13
- 'html' => ['spec/runner/formatter/html_formatter', 'Formatter::HtmlFormatter'],
14
- 'h' => ['spec/runner/formatter/html_formatter', 'Formatter::HtmlFormatter'],
15
- 'progress' => ['spec/runner/formatter/progress_bar_formatter', 'Formatter::ProgressBarFormatter'],
16
- 'p' => ['spec/runner/formatter/progress_bar_formatter', 'Formatter::ProgressBarFormatter'],
17
- 'failing_examples' => ['spec/runner/formatter/failing_examples_formatter', 'Formatter::FailingExamplesFormatter'],
18
- 'e' => ['spec/runner/formatter/failing_examples_formatter', 'Formatter::FailingExamplesFormatter'],
19
- 'failing_example_groups' => ['spec/runner/formatter/failing_example_groups_formatter', 'Formatter::FailingExampleGroupsFormatter'],
20
- 'g' => ['spec/runner/formatter/failing_example_groups_formatter', 'Formatter::FailingExampleGroupsFormatter'],
21
- 'profile' => ['spec/runner/formatter/profile_formatter', 'Formatter::ProfileFormatter'],
22
- 'o' => ['spec/runner/formatter/profile_formatter', 'Formatter::ProfileFormatter'],
23
- 'textmate' => ['spec/runner/formatter/text_mate_formatter', 'Formatter::TextMateFormatter']
24
- }
25
-
26
- STORY_FORMATTERS = {
27
- 'plain' => ['spec/runner/formatter/story/plain_text_formatter', 'Formatter::Story::PlainTextFormatter'],
28
- 'p' => ['spec/runner/formatter/story/plain_text_formatter', 'Formatter::Story::PlainTextFormatter'],
29
- 'html' => ['spec/runner/formatter/story/html_formatter', 'Formatter::Story::HtmlFormatter'],
30
- 'h' => ['spec/runner/formatter/story/html_formatter', 'Formatter::Story::HtmlFormatter']
31
- }
32
-
33
- attr_accessor(
34
- :filename_pattern,
35
- :backtrace_tweaker,
36
- :context_lines,
37
- :diff_format,
38
- :dry_run,
39
- :profile,
40
- :examples,
41
- :heckle_runner,
42
- :line_number,
43
- :loadby,
44
- :reporter,
45
- :reverse,
46
- :timeout,
47
- :verbose,
48
- :user_input_for_runner,
49
- :error_stream,
50
- :output_stream,
51
- :before_suite_parts,
52
- :after_suite_parts,
53
- # TODO: BT - Figure out a better name
54
- :argv
55
- )
56
- attr_reader :colour, :differ_class, :files, :example_groups
57
-
58
- def initialize(error_stream, output_stream)
59
- @error_stream = error_stream
60
- @output_stream = output_stream
61
- @filename_pattern = "**/*_spec.rb"
62
- @backtrace_tweaker = QuietBacktraceTweaker.new
63
- @examples = []
64
- @colour = false
65
- @profile = false
66
- @dry_run = false
67
- @reporter = Reporter.new(self)
68
- @context_lines = 3
69
- @diff_format = :unified
70
- @files = []
71
- @example_groups = []
72
- @result = nil
73
- @examples_run = false
74
- @examples_should_be_run = nil
75
- @user_input_for_runner = nil
76
- @before_suite_parts = []
77
- @after_suite_parts = []
78
- end
79
-
80
- def add_example_group(example_group)
81
- @example_groups << example_group
82
- end
83
-
84
- def remove_example_group(example_group)
85
- @example_groups.delete(example_group)
86
- end
87
-
88
- def run_examples
89
- return true unless examples_should_be_run?
90
- success = true
91
- begin
92
- before_suite_parts.each do |part|
93
- part.call
94
- end
95
- runner = custom_runner || ExampleGroupRunner.new(self)
96
-
97
- unless @files_loaded
98
- runner.load_files(files_to_load)
99
- @files_loaded = true
100
- end
101
-
102
- if example_groups.empty?
103
- true
104
- else
105
- set_spec_from_line_number if line_number
106
- success = runner.run
107
- @examples_run = true
108
- heckle if heckle_runner
109
- success
110
- end
111
- ensure
112
- after_suite_parts.each do |part|
113
- part.call(success)
114
- end
115
- end
116
- end
117
-
118
- def examples_run?
119
- @examples_run
120
- end
121
-
122
- def examples_should_not_be_run
123
- @examples_should_be_run = false
124
- end
125
-
126
- def colour=(colour)
127
- @colour = colour
128
- if @colour && RUBY_PLATFORM =~ /mswin|mingw/ ;\
129
- begin ;\
130
- require 'rubygems' ;\
131
- require 'Win32/Console/ANSI' ;\
132
- rescue LoadError ;\
133
- warn "You must 'gem install win32console' to use colour on Windows" ;\
134
- @colour = false ;\
135
- end
136
- end
137
- end
138
-
139
- def parse_diff(format)
140
- case format
141
- when :context, 'context', 'c'
142
- @diff_format = :context
143
- default_differ
144
- when :unified, 'unified', 'u', '', nil
145
- @diff_format = :unified
146
- default_differ
147
- else
148
- @diff_format = :custom
149
- self.differ_class = load_class(format, 'differ', '--diff')
150
- end
151
- end
152
-
153
- def parse_example(example)
154
- if(File.file?(example))
155
- @examples = File.open(example).read.split("\n")
156
- else
157
- @examples = [example]
158
- end
159
- end
160
-
161
- def parse_format(format_arg)
162
- format, where = ClassAndArgumentsParser.parse(format_arg)
163
- unless where
164
- raise "When using several --format options only one of them can be without a file" if @out_used
165
- where = @output_stream
166
- @out_used = true
167
- end
168
- @format_options ||= []
169
- @format_options << [format, where]
170
- end
171
-
172
- def formatters
173
- @format_options ||= [['progress', @output_stream]]
174
- @formatters ||= load_formatters(@format_options, EXAMPLE_FORMATTERS)
175
- end
176
-
177
- def story_formatters
178
- @format_options ||= [['plain', @output_stream]]
179
- @formatters ||= load_formatters(@format_options, STORY_FORMATTERS)
180
- end
181
-
182
- def load_formatters(format_options, formatters)
183
- format_options.map do |format, where|
184
- formatter_type = if formatters[format]
185
- require formatters[format][0]
186
- eval(formatters[format][1], binding, __FILE__, __LINE__)
187
- else
188
- load_class(format, 'formatter', '--format')
189
- end
190
- formatter_type.new(self, where)
191
- end
192
- end
193
-
194
- def load_heckle_runner(heckle)
195
- suffix = [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM} ? '_unsupported' : ''
196
- require "spec/runner/heckle_runner#{suffix}"
197
- @heckle_runner = HeckleRunner.new(heckle)
198
- end
199
-
200
- def number_of_examples
201
- total = 0
202
- @example_groups.each do |example_group|
203
- total += example_group.number_of_examples
204
- end
205
- total
206
- end
207
-
208
- def files_to_load
209
- result = []
210
- sorted_files.each do |file|
211
- if File.directory?(file)
212
- filename_pattern.split(",").each do |pattern|
213
- result += Dir[File.expand_path("#{file}/#{pattern.strip}")]
214
- end
215
- elsif File.file?(file)
216
- result << file
217
- else
218
- raise "File or directory not found: #{file}"
219
- end
220
- end
221
- result
222
- end
223
-
224
- protected
225
- def examples_should_be_run?
226
- return @examples_should_be_run unless @examples_should_be_run.nil?
227
- @examples_should_be_run = true
228
- end
229
-
230
- def differ_class=(klass)
231
- return unless klass
232
- @differ_class = klass
233
- Spec::Expectations.differ = self.differ_class.new(self)
234
- end
235
-
236
- def load_class(name, kind, option)
237
- if name =~ /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/
238
- arg = $2 == "" ? nil : $2
239
- [$1, arg]
240
- else
241
- m = "#{name.inspect} is not a valid class name"
242
- @error_stream.puts m
243
- raise m
244
- end
245
- begin
246
- eval(name, binding, __FILE__, __LINE__)
247
- rescue NameError => e
248
- @error_stream.puts "Couldn't find #{kind} class #{name}"
249
- @error_stream.puts "Make sure the --require option is specified *before* #{option}"
250
- if $_spec_spec ; raise e ; else exit(1) ; end
251
- end
252
- end
253
-
254
- def custom_runner
255
- return nil unless custom_runner?
256
- klass_name, arg = ClassAndArgumentsParser.parse(user_input_for_runner)
257
- runner_type = load_class(klass_name, 'behaviour runner', '--runner')
258
- return runner_type.new(self, arg)
259
- end
260
-
261
- def custom_runner?
262
- return user_input_for_runner ? true : false
263
- end
264
-
265
- def heckle
266
- heckle_runner = self.heckle_runner
267
- self.heckle_runner = nil
268
- heckle_runner.heckle_with
269
- end
270
-
271
- def sorted_files
272
- return sorter ? files.sort(&sorter) : files
273
- end
274
-
275
- def sorter
276
- FILE_SORTERS[loadby]
277
- end
278
-
279
- def default_differ
280
- require 'spec/expectations/differs/default'
281
- self.differ_class = Spec::Expectations::Differs::Default
282
- end
283
-
284
- def set_spec_from_line_number
285
- if examples.empty?
286
- if files.length == 1
287
- if File.directory?(files[0])
288
- error_stream.puts "You must specify one file, not a directory when using the --line option"
289
- exit(1) if stderr?
290
- else
291
- example = SpecParser.new.spec_name_for(files[0], line_number)
292
- @examples = [example]
293
- end
294
- else
295
- error_stream.puts "Only one file can be specified when using the --line option: #{files.inspect}"
296
- exit(3) if stderr?
297
- end
298
- else
299
- error_stream.puts "You cannot use both --line and --example"
300
- exit(4) if stderr?
301
- end
302
- end
303
-
304
- def stderr?
305
- @error_stream == $stderr
306
- end
307
- end
308
- end
309
- end