dchelimsky-rspec 1.1.10
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.
- data/History.txt +1192 -0
- data/License.txt +22 -0
- data/Manifest.txt +403 -0
- data/README.txt +39 -0
- data/Rakefile +90 -0
- data/TODO.txt +10 -0
- data/bin/autospec +4 -0
- data/bin/spec +4 -0
- data/examples/pure/autogenerated_docstrings_example.rb +19 -0
- data/examples/pure/before_and_after_example.rb +40 -0
- data/examples/pure/behave_as_example.rb +45 -0
- data/examples/pure/custom_expectation_matchers.rb +54 -0
- data/examples/pure/custom_formatter.rb +12 -0
- data/examples/pure/dynamic_spec.rb +9 -0
- data/examples/pure/file_accessor.rb +19 -0
- data/examples/pure/file_accessor_spec.rb +38 -0
- data/examples/pure/greeter_spec.rb +31 -0
- data/examples/pure/helper_method_example.rb +14 -0
- data/examples/pure/io_processor.rb +8 -0
- data/examples/pure/io_processor_spec.rb +21 -0
- data/examples/pure/legacy_spec.rb +11 -0
- data/examples/pure/mocking_example.rb +27 -0
- data/examples/pure/multi_threaded_behaviour_runner.rb +28 -0
- data/examples/pure/nested_classes_example.rb +36 -0
- data/examples/pure/partial_mock_example.rb +29 -0
- data/examples/pure/pending_example.rb +20 -0
- data/examples/pure/predicate_example.rb +27 -0
- data/examples/pure/priority.txt +1 -0
- data/examples/pure/shared_example_group_example.rb +81 -0
- data/examples/pure/shared_stack_examples.rb +38 -0
- data/examples/pure/spec_helper.rb +3 -0
- data/examples/pure/stack.rb +36 -0
- data/examples/pure/stack_spec.rb +63 -0
- data/examples/pure/stack_spec_with_nested_example_groups.rb +67 -0
- data/examples/pure/stubbing_example.rb +69 -0
- data/examples/pure/yielding_example.rb +33 -0
- data/examples/stories/adder.rb +13 -0
- data/examples/stories/addition +34 -0
- data/examples/stories/addition.rb +9 -0
- data/examples/stories/calculator.rb +65 -0
- data/examples/stories/game-of-life/.loadpath +5 -0
- data/examples/stories/game-of-life/README.txt +21 -0
- data/examples/stories/game-of-life/behaviour/everything.rb +6 -0
- data/examples/stories/game-of-life/behaviour/examples/examples.rb +3 -0
- data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +35 -0
- data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +66 -0
- data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +21 -0
- data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +21 -0
- data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +42 -0
- data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +42 -0
- data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +17 -0
- data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +53 -0
- data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +52 -0
- data/examples/stories/game-of-life/behaviour/stories/helper.rb +6 -0
- data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +26 -0
- data/examples/stories/game-of-life/behaviour/stories/steps.rb +5 -0
- data/examples/stories/game-of-life/behaviour/stories/stories.rb +3 -0
- data/examples/stories/game-of-life/behaviour/stories/stories.txt +22 -0
- data/examples/stories/game-of-life/life/game.rb +23 -0
- data/examples/stories/game-of-life/life/grid.rb +43 -0
- data/examples/stories/game-of-life/life.rb +3 -0
- data/examples/stories/helper.rb +9 -0
- data/examples/stories/steps/addition_steps.rb +18 -0
- data/failing_examples/README.txt +7 -0
- data/failing_examples/diffing_spec.rb +36 -0
- data/failing_examples/failing_autogenerated_docstrings_example.rb +19 -0
- data/failing_examples/failure_in_setup.rb +10 -0
- data/failing_examples/failure_in_teardown.rb +10 -0
- data/failing_examples/mocking_example.rb +40 -0
- data/failing_examples/mocking_with_flexmock.rb +26 -0
- data/failing_examples/mocking_with_mocha.rb +25 -0
- data/failing_examples/mocking_with_rr.rb +27 -0
- data/failing_examples/partial_mock_example.rb +20 -0
- data/failing_examples/predicate_example.rb +29 -0
- data/failing_examples/raising_example.rb +47 -0
- data/failing_examples/spec_helper.rb +3 -0
- data/failing_examples/syntax_error_example.rb +7 -0
- data/failing_examples/team_spec.rb +44 -0
- data/failing_examples/timeout_behaviour.rb +7 -0
- data/init.rb +9 -0
- data/lib/autotest/discover.rb +3 -0
- data/lib/autotest/rspec.rb +46 -0
- data/lib/spec/adapters/ruby_engine/mri.rb +8 -0
- data/lib/spec/adapters/ruby_engine/rubinius.rb +8 -0
- data/lib/spec/adapters/ruby_engine.rb +26 -0
- data/lib/spec/adapters.rb +1 -0
- data/lib/spec/example/before_and_after_hooks.rb +93 -0
- data/lib/spec/example/configuration.rb +167 -0
- data/lib/spec/example/errors.rb +30 -0
- data/lib/spec/example/example_group.rb +25 -0
- data/lib/spec/example/example_group_factory.rb +81 -0
- data/lib/spec/example/example_group_methods.rb +368 -0
- data/lib/spec/example/example_matcher.rb +44 -0
- data/lib/spec/example/example_methods.rb +105 -0
- data/lib/spec/example/module_reopening_fix.rb +21 -0
- data/lib/spec/example/pending.rb +18 -0
- data/lib/spec/example/shared_example_group.rb +52 -0
- data/lib/spec/example.rb +12 -0
- data/lib/spec/expectations/differs/default.rb +66 -0
- data/lib/spec/expectations/errors.rb +12 -0
- data/lib/spec/expectations/extensions/object.rb +63 -0
- data/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/lib/spec/expectations/extensions.rb +2 -0
- data/lib/spec/expectations/handler.rb +52 -0
- data/lib/spec/expectations.rb +56 -0
- data/lib/spec/extensions/class.rb +24 -0
- data/lib/spec/extensions/main.rb +87 -0
- data/lib/spec/extensions/metaclass.rb +7 -0
- data/lib/spec/extensions/object.rb +6 -0
- data/lib/spec/extensions.rb +4 -0
- data/lib/spec/interop/test/unit/autorunner.rb +6 -0
- data/lib/spec/interop/test/unit/testcase.rb +71 -0
- data/lib/spec/interop/test/unit/testresult.rb +6 -0
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
- data/lib/spec/interop/test.rb +12 -0
- data/lib/spec/matchers/be.rb +221 -0
- data/lib/spec/matchers/be_close.rb +37 -0
- data/lib/spec/matchers/change.rb +148 -0
- data/lib/spec/matchers/eql.rb +43 -0
- data/lib/spec/matchers/equal.rb +43 -0
- data/lib/spec/matchers/exist.rb +22 -0
- data/lib/spec/matchers/has.rb +34 -0
- data/lib/spec/matchers/have.rb +150 -0
- data/lib/spec/matchers/include.rb +77 -0
- data/lib/spec/matchers/match.rb +41 -0
- data/lib/spec/matchers/operator_matcher.rb +79 -0
- data/lib/spec/matchers/raise_error.rb +132 -0
- data/lib/spec/matchers/respond_to.rb +46 -0
- data/lib/spec/matchers/satisfy.rb +47 -0
- data/lib/spec/matchers/simple_matcher.rb +132 -0
- data/lib/spec/matchers/throw_symbol.rb +74 -0
- data/lib/spec/matchers.rb +162 -0
- data/lib/spec/mocks/argument_constraints.rb +165 -0
- data/lib/spec/mocks/argument_expectation.rb +49 -0
- data/lib/spec/mocks/error_generator.rb +84 -0
- data/lib/spec/mocks/errors.rb +10 -0
- data/lib/spec/mocks/extensions/object.rb +3 -0
- data/lib/spec/mocks/extensions.rb +1 -0
- data/lib/spec/mocks/framework.rb +15 -0
- data/lib/spec/mocks/message_expectation.rb +331 -0
- data/lib/spec/mocks/methods.rb +51 -0
- data/lib/spec/mocks/mock.rb +56 -0
- data/lib/spec/mocks/order_group.rb +29 -0
- data/lib/spec/mocks/proxy.rb +224 -0
- data/lib/spec/mocks/space.rb +28 -0
- data/lib/spec/mocks/spec_methods.rb +46 -0
- data/lib/spec/mocks.rb +200 -0
- data/lib/spec/rake/spectask.rb +227 -0
- data/lib/spec/rake/verify_rcov.rb +52 -0
- data/lib/spec/runner/backtrace_tweaker.rb +56 -0
- data/lib/spec/runner/class_and_arguments_parser.rb +16 -0
- data/lib/spec/runner/command_line.rb +17 -0
- data/lib/spec/runner/drb_command_line.rb +20 -0
- data/lib/spec/runner/example_group_runner.rb +59 -0
- data/lib/spec/runner/formatter/base_formatter.rb +79 -0
- data/lib/spec/runner/formatter/base_text_formatter.rb +126 -0
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +27 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
- data/lib/spec/runner/formatter/html_formatter.rb +337 -0
- data/lib/spec/runner/formatter/nested_text_formatter.rb +65 -0
- data/lib/spec/runner/formatter/profile_formatter.rb +51 -0
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +34 -0
- data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
- data/lib/spec/runner/formatter/specdoc_formatter.rb +39 -0
- data/lib/spec/runner/formatter/story/html_formatter.rb +174 -0
- data/lib/spec/runner/formatter/story/plain_text_formatter.rb +194 -0
- data/lib/spec/runner/formatter/story/progress_bar_formatter.rb +42 -0
- data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/spec/runner/heckle_runner.rb +72 -0
- data/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
- data/lib/spec/runner/option_parser.rb +205 -0
- data/lib/spec/runner/options.rb +320 -0
- data/lib/spec/runner/reporter.rb +167 -0
- data/lib/spec/runner/spec_parser.rb +71 -0
- data/lib/spec/runner.rb +213 -0
- data/lib/spec/story/extensions/main.rb +86 -0
- data/lib/spec/story/extensions/regexp.rb +9 -0
- data/lib/spec/story/extensions/string.rb +9 -0
- data/lib/spec/story/extensions.rb +3 -0
- data/lib/spec/story/given_scenario.rb +14 -0
- data/lib/spec/story/runner/plain_text_story_runner.rb +48 -0
- data/lib/spec/story/runner/scenario_collector.rb +18 -0
- data/lib/spec/story/runner/scenario_runner.rb +54 -0
- data/lib/spec/story/runner/story_mediator.rb +137 -0
- data/lib/spec/story/runner/story_parser.rb +247 -0
- data/lib/spec/story/runner/story_runner.rb +70 -0
- data/lib/spec/story/runner.rb +59 -0
- data/lib/spec/story/scenario.rb +14 -0
- data/lib/spec/story/step.rb +70 -0
- data/lib/spec/story/step_group.rb +89 -0
- data/lib/spec/story/step_mother.rb +38 -0
- data/lib/spec/story/story.rb +39 -0
- data/lib/spec/story/world.rb +128 -0
- data/lib/spec/story.rb +10 -0
- data/lib/spec/version.rb +13 -0
- data/lib/spec.rb +32 -0
- data/plugins/mock_frameworks/flexmock.rb +23 -0
- data/plugins/mock_frameworks/mocha.rb +19 -0
- data/plugins/mock_frameworks/rr.rb +21 -0
- data/plugins/mock_frameworks/rspec.rb +20 -0
- data/rake_tasks/examples.rake +7 -0
- data/rake_tasks/examples_with_rcov.rake +9 -0
- data/rake_tasks/failing_examples_with_html.rake +9 -0
- data/rake_tasks/verify_rcov.rake +7 -0
- data/rspec.gemspec +42 -0
- data/spec/README.jruby +15 -0
- data/spec/autotest/autotest_helper.rb +6 -0
- data/spec/autotest/autotest_matchers.rb +47 -0
- data/spec/autotest/discover_spec.rb +19 -0
- data/spec/autotest/rspec_spec.rb +150 -0
- data/spec/rspec_suite.rb +6 -0
- data/spec/ruby_forker.rb +13 -0
- data/spec/spec/adapters/ruby_engine_spec.rb +16 -0
- data/spec/spec/example/configuration_spec.rb +296 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +48 -0
- data/spec/spec/example/example_group_factory_spec.rb +165 -0
- data/spec/spec/example/example_group_methods_spec.rb +584 -0
- data/spec/spec/example/example_group_spec.rb +683 -0
- data/spec/spec/example/example_matcher_spec.rb +96 -0
- data/spec/spec/example/example_methods_spec.rb +169 -0
- data/spec/spec/example/example_runner_spec.rb +194 -0
- data/spec/spec/example/nested_example_group_spec.rb +71 -0
- data/spec/spec/example/pending_module_spec.rb +145 -0
- data/spec/spec/example/predicate_matcher_spec.rb +21 -0
- data/spec/spec/example/shared_example_group_spec.rb +281 -0
- data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
- data/spec/spec/expectations/differs/default_spec.rb +127 -0
- data/spec/spec/expectations/extensions/object_spec.rb +95 -0
- data/spec/spec/expectations/fail_with_spec.rb +71 -0
- data/spec/spec/extensions/main_spec.rb +71 -0
- data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
- data/spec/spec/interop/test/unit/spec_spec.rb +52 -0
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +14 -0
- data/spec/spec/interop/test/unit/testcase_spec.rb +49 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
- data/spec/spec/matchers/be_close_spec.rb +39 -0
- data/spec/spec/matchers/be_spec.rb +248 -0
- data/spec/spec/matchers/change_spec.rb +329 -0
- data/spec/spec/matchers/description_generation_spec.rb +153 -0
- data/spec/spec/matchers/eql_spec.rb +28 -0
- data/spec/spec/matchers/equal_spec.rb +28 -0
- data/spec/spec/matchers/exist_spec.rb +57 -0
- data/spec/spec/matchers/handler_spec.rb +150 -0
- data/spec/spec/matchers/has_spec.rb +63 -0
- data/spec/spec/matchers/have_spec.rb +394 -0
- data/spec/spec/matchers/include_spec.rb +64 -0
- data/spec/spec/matchers/match_spec.rb +37 -0
- data/spec/spec/matchers/matcher_methods_spec.rb +78 -0
- data/spec/spec/matchers/mock_constraint_matchers_spec.rb +24 -0
- data/spec/spec/matchers/operator_matcher_spec.rb +191 -0
- data/spec/spec/matchers/raise_error_spec.rb +315 -0
- data/spec/spec/matchers/respond_to_spec.rb +54 -0
- data/spec/spec/matchers/satisfy_spec.rb +36 -0
- data/spec/spec/matchers/simple_matcher_spec.rb +93 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +54 -0
- data/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
- data/spec/spec/mocks/argument_expectation_spec.rb +23 -0
- data/spec/spec/mocks/at_least_spec.rb +97 -0
- data/spec/spec/mocks/at_most_spec.rb +93 -0
- data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
- data/spec/spec/mocks/bug_report_10263_spec.rb +24 -0
- data/spec/spec/mocks/bug_report_11545_spec.rb +33 -0
- data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
- data/spec/spec/mocks/bug_report_496.rb +17 -0
- data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
- data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
- data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +95 -0
- data/spec/spec/mocks/hash_including_matcher_spec.rb +53 -0
- data/spec/spec/mocks/mock_ordering_spec.rb +84 -0
- data/spec/spec/mocks/mock_space_spec.rb +54 -0
- data/spec/spec/mocks/mock_spec.rb +555 -0
- data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
- data/spec/spec/mocks/null_object_mock_spec.rb +54 -0
- data/spec/spec/mocks/once_counts_spec.rb +53 -0
- data/spec/spec/mocks/options_hash_spec.rb +35 -0
- data/spec/spec/mocks/partial_mock_spec.rb +149 -0
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +130 -0
- data/spec/spec/mocks/precise_counts_spec.rb +52 -0
- data/spec/spec/mocks/record_messages_spec.rb +26 -0
- data/spec/spec/mocks/stub_spec.rb +188 -0
- data/spec/spec/mocks/twice_counts_spec.rb +67 -0
- data/spec/spec/package/bin_spec_spec.rb +22 -0
- data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
- data/spec/spec/runner/command_line_spec.rb +141 -0
- data/spec/spec/runner/drb_command_line_spec.rb +97 -0
- data/spec/spec/runner/empty_file.txt +0 -0
- data/spec/spec/runner/examples.txt +2 -0
- data/spec/spec/runner/failed.txt +3 -0
- data/spec/spec/runner/formatter/base_formatter_spec.rb +112 -0
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +387 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +381 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +370 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +61 -0
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +318 -0
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +155 -0
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
- data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +103 -0
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
- data/spec/spec/runner/formatter/story/html_formatter_spec.rb +135 -0
- data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +600 -0
- data/spec/spec/runner/formatter/story/progress_bar_formatter_spec.rb +82 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +365 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +370 -0
- data/spec/spec/runner/heckle_runner_spec.rb +78 -0
- data/spec/spec/runner/heckler_spec.rb +13 -0
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
- data/spec/spec/runner/option_parser_spec.rb +421 -0
- data/spec/spec/runner/options_spec.rb +450 -0
- data/spec/spec/runner/output_one_time_fixture.rb +7 -0
- data/spec/spec/runner/output_one_time_fixture_runner.rb +8 -0
- data/spec/spec/runner/output_one_time_spec.rb +16 -0
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +62 -0
- data/spec/spec/runner/reporter_spec.rb +238 -0
- data/spec/spec/runner/resources/a_bar.rb +0 -0
- data/spec/spec/runner/resources/a_foo.rb +0 -0
- data/spec/spec/runner/resources/a_spec.rb +1 -0
- data/spec/spec/runner/spec.opts +2 -0
- data/spec/spec/runner/spec_drb.opts +1 -0
- data/spec/spec/runner/spec_parser/spec_parser_fixture.rb +70 -0
- data/spec/spec/runner/spec_parser_spec.rb +85 -0
- data/spec/spec/runner/spec_spaced.opts +2 -0
- data/spec/spec/runner_spec.rb +11 -0
- data/spec/spec/spec_classes.rb +133 -0
- data/spec/spec/story/builders.rb +46 -0
- data/spec/spec/story/extensions/main_spec.rb +161 -0
- data/spec/spec/story/extensions_spec.rb +14 -0
- data/spec/spec/story/given_scenario_spec.rb +27 -0
- data/spec/spec/story/runner/plain_text_story_runner_spec.rb +90 -0
- data/spec/spec/story/runner/scenario_collector_spec.rb +27 -0
- data/spec/spec/story/runner/scenario_runner_spec.rb +214 -0
- data/spec/spec/story/runner/story_mediator_spec.rb +143 -0
- data/spec/spec/story/runner/story_parser_spec.rb +401 -0
- data/spec/spec/story/runner/story_runner_spec.rb +294 -0
- data/spec/spec/story/runner_spec.rb +93 -0
- data/spec/spec/story/scenario_spec.rb +18 -0
- data/spec/spec/story/step_group_spec.rb +157 -0
- data/spec/spec/story/step_mother_spec.rb +84 -0
- data/spec/spec/story/step_spec.rb +272 -0
- data/spec/spec/story/story_helper.rb +2 -0
- data/spec/spec/story/story_spec.rb +84 -0
- data/spec/spec/story/world_spec.rb +423 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +77 -0
- data/stories/all.rb +5 -0
- data/stories/configuration/before_blocks.story +21 -0
- data/stories/configuration/stories.rb +7 -0
- data/stories/example_groups/autogenerated_docstrings +45 -0
- data/stories/example_groups/example_group_with_should_methods +17 -0
- data/stories/example_groups/nested_groups +17 -0
- data/stories/example_groups/output +25 -0
- data/stories/example_groups/stories.rb +7 -0
- data/stories/helper.rb +6 -0
- data/stories/interop/examples_and_tests_together +30 -0
- data/stories/interop/stories.rb +7 -0
- data/stories/interop/test_case_with_should_methods +17 -0
- data/stories/mock_framework_integration/stories.rb +7 -0
- data/stories/mock_framework_integration/use_flexmock.story +9 -0
- data/stories/pending_stories/README +3 -0
- data/stories/resources/helpers/cmdline.rb +9 -0
- data/stories/resources/helpers/story_helper.rb +16 -0
- data/stories/resources/matchers/smart_match.rb +37 -0
- data/stories/resources/spec/before_blocks_example.rb +32 -0
- data/stories/resources/spec/example_group_with_should_methods.rb +12 -0
- data/stories/resources/spec/simple_spec.rb +8 -0
- data/stories/resources/spec/spec_with_flexmock.rb +18 -0
- data/stories/resources/steps/running_rspec.rb +50 -0
- data/stories/resources/stories/failing_story.rb +15 -0
- data/stories/resources/test/spec_and_test_together.rb +57 -0
- data/stories/resources/test/test_case_with_should_methods.rb +30 -0
- data/stories/stories/multiline_steps.story +23 -0
- data/stories/stories/steps/multiline_steps.rb +13 -0
- data/stories/stories/stories.rb +6 -0
- data/story_server/prototype/javascripts/builder.js +136 -0
- data/story_server/prototype/javascripts/controls.js +972 -0
- data/story_server/prototype/javascripts/dragdrop.js +976 -0
- data/story_server/prototype/javascripts/effects.js +1117 -0
- data/story_server/prototype/javascripts/prototype.js +4140 -0
- data/story_server/prototype/javascripts/rspec.js +149 -0
- data/story_server/prototype/javascripts/scriptaculous.js +58 -0
- data/story_server/prototype/javascripts/slider.js +276 -0
- data/story_server/prototype/javascripts/sound.js +55 -0
- data/story_server/prototype/javascripts/unittest.js +568 -0
- data/story_server/prototype/lib/server.rb +24 -0
- data/story_server/prototype/stories.html +176 -0
- data/story_server/prototype/stylesheets/rspec.css +136 -0
- data/story_server/prototype/stylesheets/test.css +90 -0
- metadata +495 -0
@@ -0,0 +1,71 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Example
|
5
|
+
describe 'Nested Example Groups' do
|
6
|
+
parent = self
|
7
|
+
|
8
|
+
def count
|
9
|
+
@count ||= 0
|
10
|
+
@count = @count + 1
|
11
|
+
@count
|
12
|
+
end
|
13
|
+
|
14
|
+
before(:all) do
|
15
|
+
count.should == 1
|
16
|
+
end
|
17
|
+
|
18
|
+
before(:all) do
|
19
|
+
count.should == 2
|
20
|
+
end
|
21
|
+
|
22
|
+
before(:each) do
|
23
|
+
count.should == 3
|
24
|
+
end
|
25
|
+
|
26
|
+
before(:each) do
|
27
|
+
count.should == 4
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should run before(:all), before(:each), example, after(:each), after(:all) in order" do
|
31
|
+
count.should == 5
|
32
|
+
end
|
33
|
+
|
34
|
+
after(:each) do
|
35
|
+
count.should == 7
|
36
|
+
end
|
37
|
+
|
38
|
+
after(:each) do
|
39
|
+
count.should == 6
|
40
|
+
end
|
41
|
+
|
42
|
+
after(:all) do
|
43
|
+
count.should == 9
|
44
|
+
end
|
45
|
+
|
46
|
+
after(:all) do
|
47
|
+
count.should == 8
|
48
|
+
end
|
49
|
+
|
50
|
+
describe 'nested example group' do
|
51
|
+
self.superclass.should == parent
|
52
|
+
|
53
|
+
it "should run all before and after callbacks" do
|
54
|
+
count.should == 5
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "Nested Example Groups" do
|
60
|
+
describe "description options", :other_options => "other options" do
|
61
|
+
it "should have a spec_path" do
|
62
|
+
self.class.description_options[:spec_path].should match(/#{__FILE__}/)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should pass other options" do
|
66
|
+
self.class.description_options[:other_options].should == "other options"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,145 @@
|
|
1
|
+
module Spec
|
2
|
+
module Example
|
3
|
+
describe Pending do
|
4
|
+
|
5
|
+
it 'should raise an ExamplePendingError if no block is supplied' do
|
6
|
+
lambda {
|
7
|
+
include Pending
|
8
|
+
pending "TODO"
|
9
|
+
}.should raise_error(ExamplePendingError, /TODO/)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should raise an ExamplePendingError if a supplied block fails as expected' do
|
13
|
+
lambda {
|
14
|
+
include Pending
|
15
|
+
pending "TODO" do
|
16
|
+
raise "oops"
|
17
|
+
end
|
18
|
+
}.should raise_error(ExamplePendingError, /TODO/)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should raise an ExamplePendingError if a supplied block fails as expected with a mock' do
|
22
|
+
lambda {
|
23
|
+
include Pending
|
24
|
+
pending "TODO" do
|
25
|
+
m = mock('thing')
|
26
|
+
m.should_receive(:foo)
|
27
|
+
m.rspec_verify
|
28
|
+
end
|
29
|
+
}.should raise_error(ExamplePendingError, /TODO/)
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should raise a PendingExampleFixedError if a supplied block starts working' do
|
33
|
+
lambda {
|
34
|
+
include Pending
|
35
|
+
pending "TODO" do
|
36
|
+
# success!
|
37
|
+
end
|
38
|
+
}.should raise_error(PendingExampleFixedError, /TODO/)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should have the correct file and line number for pending given with a block which fails" do
|
42
|
+
file = __FILE__
|
43
|
+
line_number = __LINE__ + 3
|
44
|
+
begin
|
45
|
+
include Pending
|
46
|
+
pending do
|
47
|
+
raise
|
48
|
+
end
|
49
|
+
rescue => error
|
50
|
+
error.pending_caller.should == "#{file}:#{line_number}"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should have the correct file and line number for pending given with no block" do
|
55
|
+
file = __FILE__
|
56
|
+
line_number = __LINE__ + 3
|
57
|
+
begin
|
58
|
+
include Pending
|
59
|
+
pending("TODO")
|
60
|
+
rescue => error
|
61
|
+
error.pending_caller.should == "#{file}:#{line_number}"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe ExamplePendingError do
|
67
|
+
it "should have the caller (from two calls from initialization)" do
|
68
|
+
two_calls_ago = caller[0]
|
69
|
+
ExamplePendingError.new("a message").pending_caller.should == two_calls_ago
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should keep the trace information from initialization" do
|
73
|
+
two_calls_ago = caller[0]
|
74
|
+
obj = ExamplePendingError.new("a message")
|
75
|
+
obj.pending_caller
|
76
|
+
def another_caller(obj)
|
77
|
+
obj.pending_caller
|
78
|
+
end
|
79
|
+
|
80
|
+
another_caller(obj).should == two_calls_ago
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should have the message provided" do
|
84
|
+
ExamplePendingError.new("a message").message.should == "a message"
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should use a 'ExamplePendingError' as it's default message" do
|
88
|
+
ExamplePendingError.new.message.should == "Spec::Example::ExamplePendingError"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe NotYetImplementedError do
|
93
|
+
def rspec_root
|
94
|
+
File.expand_path(__FILE__.gsub("/spec/spec/example/pending_module_spec.rb", "/lib"))
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should have the root rspec path" do
|
98
|
+
NotYetImplementedError::RSPEC_ROOT_LIB.should == rspec_root
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should always have the error 'Not Yet Implemented'" do
|
102
|
+
NotYetImplementedError.new([]).message.should == "Not Yet Implemented"
|
103
|
+
end
|
104
|
+
|
105
|
+
describe "pending_caller" do
|
106
|
+
it "should select an element out of the backtrace" do
|
107
|
+
error = NotYetImplementedError.new(["foo/bar.rb:18"])
|
108
|
+
|
109
|
+
error.pending_caller.should == "foo/bar.rb:18"
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should actually report the element from the backtrace" do
|
113
|
+
error = NotYetImplementedError.new(["bar.rb:18"])
|
114
|
+
|
115
|
+
error.pending_caller.should == "bar.rb:18"
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should not use an element with the rspec root path" do
|
119
|
+
error = NotYetImplementedError.new(["#{rspec_root}:8"])
|
120
|
+
|
121
|
+
error.pending_caller.should be_nil
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should select the first line in the backtrace which isn't in the rspec root" do
|
125
|
+
error = NotYetImplementedError.new([
|
126
|
+
"#{rspec_root}/foo.rb:2",
|
127
|
+
"#{rspec_root}/foo/bar.rb:18",
|
128
|
+
"path1.rb:22",
|
129
|
+
"path2.rb:33"
|
130
|
+
])
|
131
|
+
|
132
|
+
error.pending_caller.should == "path1.rb:22"
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should cache the caller" do
|
136
|
+
backtrace = mock('backtrace')
|
137
|
+
backtrace.should_receive(:detect).once
|
138
|
+
|
139
|
+
error = NotYetImplementedError.new(backtrace)
|
140
|
+
error.pending_caller.should == error.pending_caller
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Example
|
5
|
+
class Fish
|
6
|
+
def can_swim?(distance_in_yards)
|
7
|
+
distance_in_yards < 1000
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "predicate_matcher[method_on_object] = matcher_method" do
|
12
|
+
predicate_matchers[:swim] = :can_swim?
|
13
|
+
it "should match matcher_method if method_on_object returns true" do
|
14
|
+
swim(100).matches?(Fish.new).should be_true
|
15
|
+
end
|
16
|
+
it "should not match matcher_method if method_on_object returns false" do
|
17
|
+
swim(10000).matches?(Fish.new).should be_false
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,281 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Example
|
5
|
+
describe ExampleGroup, "with :shared => true" do
|
6
|
+
with_sandboxed_options do
|
7
|
+
attr_reader :formatter, :example_group
|
8
|
+
before(:each) do
|
9
|
+
@formatter = Spec::Mocks::Mock.new("formatter", :null_object => true)
|
10
|
+
options.formatters << formatter
|
11
|
+
@example_group = Class.new(ExampleGroup).describe("example_group")
|
12
|
+
class << example_group
|
13
|
+
public :include
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
after(:each) do
|
18
|
+
@formatter.rspec_verify
|
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)
|
52
|
+
end
|
53
|
+
|
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)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should complain when adding a second shared example_group with the same description" do
|
60
|
+
describe "shared example_group", :shared => true do
|
61
|
+
end
|
62
|
+
lambda do
|
63
|
+
describe "shared example_group", :shared => true do
|
64
|
+
end
|
65
|
+
end.should raise_error(ArgumentError)
|
66
|
+
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)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should NOT complain when adding the same shared example_group again (i.e. file gets reloaded)" do
|
75
|
+
lambda do
|
76
|
+
2.times do
|
77
|
+
describe "shared example_group which gets loaded twice", :shared => true do
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end.should_not raise_error(ArgumentError)
|
81
|
+
end
|
82
|
+
|
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(
|
85
|
+
"shared example_group",
|
86
|
+
:shared => true,
|
87
|
+
:spec_path => "/my/spec/a/../shared.rb"
|
88
|
+
)
|
89
|
+
shared_example_group_2 = Class.new(ExampleGroup).describe(
|
90
|
+
"shared example_group",
|
91
|
+
:shared => true,
|
92
|
+
:spec_path => "/my/spec/b/../shared.rb"
|
93
|
+
)
|
94
|
+
|
95
|
+
SharedExampleGroup.add_shared_example_group(shared_example_group_1)
|
96
|
+
SharedExampleGroup.add_shared_example_group(shared_example_group_2)
|
97
|
+
end
|
98
|
+
|
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(
|
101
|
+
"shared example_group",
|
102
|
+
:shared => true,
|
103
|
+
:spec_path => "/my/spec/a/shared.rb"
|
104
|
+
)
|
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
|
+
lambda do
|
113
|
+
SharedExampleGroup.add_shared_example_group(shared_example_group_2)
|
114
|
+
end.should raise_error(ArgumentError, /already exists/)
|
115
|
+
end
|
116
|
+
|
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
|
119
|
+
it("shared example") {}
|
120
|
+
it("shared example 2") {}
|
121
|
+
end
|
122
|
+
|
123
|
+
example_group.it("example") {}
|
124
|
+
example_group.number_of_examples.should == 1
|
125
|
+
example_group.it_should_behave_like("shared example_group")
|
126
|
+
example_group.number_of_examples.should == 3
|
127
|
+
end
|
128
|
+
|
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
|
131
|
+
it("shared example 1") {}
|
132
|
+
end
|
133
|
+
|
134
|
+
shared_example_group_1 = make_shared_example_group("shared example_group 2") do
|
135
|
+
it("shared example 2") {}
|
136
|
+
end
|
137
|
+
|
138
|
+
example_group.it("example") {}
|
139
|
+
example_group.number_of_examples.should == 1
|
140
|
+
example_group.it_should_behave_like("shared example_group 1", "shared example_group 2")
|
141
|
+
example_group.number_of_examples.should == 3
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should add examples to current example_group using include" do
|
145
|
+
shared_example_group = describe "all things", :shared => true do
|
146
|
+
it "should do stuff" do end
|
147
|
+
end
|
148
|
+
|
149
|
+
example_group = describe "one thing" do
|
150
|
+
include shared_example_group
|
151
|
+
end
|
152
|
+
|
153
|
+
example_group.number_of_examples.should == 1
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should add examples to current example_group using it_should_behave_like with a module" do
|
157
|
+
AllThings = describe "all things", :shared => true do
|
158
|
+
it "should do stuff" do end
|
159
|
+
end
|
160
|
+
|
161
|
+
example_group = describe "one thing" do
|
162
|
+
it_should_behave_like AllThings
|
163
|
+
end
|
164
|
+
|
165
|
+
example_group.number_of_examples.should == 1
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should run shared examples" do
|
169
|
+
shared_example_ran = false
|
170
|
+
shared_example_group = make_shared_example_group("shared example_group") do
|
171
|
+
it("shared example") { shared_example_ran = true }
|
172
|
+
end
|
173
|
+
|
174
|
+
example_ran = false
|
175
|
+
|
176
|
+
example_group.it_should_behave_like("shared example_group")
|
177
|
+
example_group.it("example") {example_ran = true}
|
178
|
+
example_group.run
|
179
|
+
example_ran.should be_true
|
180
|
+
shared_example_ran.should be_true
|
181
|
+
end
|
182
|
+
|
183
|
+
it "should run setup and teardown from shared example_group" do
|
184
|
+
shared_setup_ran = false
|
185
|
+
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 }
|
189
|
+
it("shared example") { shared_example_ran = true }
|
190
|
+
end
|
191
|
+
|
192
|
+
example_ran = false
|
193
|
+
|
194
|
+
example_group.it_should_behave_like("shared example_group")
|
195
|
+
example_group.it("example") {example_ran = true}
|
196
|
+
example_group.run
|
197
|
+
example_ran.should be_true
|
198
|
+
shared_setup_ran.should be_true
|
199
|
+
shared_teardown_ran.should be_true
|
200
|
+
end
|
201
|
+
|
202
|
+
it "should run before(:all) and after(:all) only once from shared example_group" do
|
203
|
+
shared_before_all_run_count = 0
|
204
|
+
shared_after_all_run_count = 0
|
205
|
+
shared_example_group = make_shared_example_group("shared example_group") do
|
206
|
+
before(:all) { shared_before_all_run_count += 1}
|
207
|
+
after(:all) { shared_after_all_run_count += 1}
|
208
|
+
it("shared example") { shared_example_ran = true }
|
209
|
+
end
|
210
|
+
|
211
|
+
example_ran = false
|
212
|
+
|
213
|
+
example_group.it_should_behave_like("shared example_group")
|
214
|
+
example_group.it("example") {example_ran = true}
|
215
|
+
example_group.run
|
216
|
+
example_ran.should be_true
|
217
|
+
shared_before_all_run_count.should == 1
|
218
|
+
shared_after_all_run_count.should == 1
|
219
|
+
end
|
220
|
+
|
221
|
+
it "should include modules, included into shared example_group, into current example_group" do
|
222
|
+
@formatter.should_receive(:add_example_group).with(any_args)
|
223
|
+
|
224
|
+
shared_example_group = make_shared_example_group("shared example_group") do
|
225
|
+
it("shared example") { shared_example_ran = true }
|
226
|
+
end
|
227
|
+
|
228
|
+
mod1_method_called = false
|
229
|
+
mod1 = Module.new do
|
230
|
+
define_method :mod1_method do
|
231
|
+
mod1_method_called = true
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
mod2_method_called = false
|
236
|
+
mod2 = Module.new do
|
237
|
+
define_method :mod2_method do
|
238
|
+
mod2_method_called = true
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
shared_example_group.__send__ :include, mod2
|
243
|
+
|
244
|
+
example_group.it_should_behave_like("shared example_group")
|
245
|
+
example_group.include mod1
|
246
|
+
|
247
|
+
example_group.it("test") do
|
248
|
+
mod1_method
|
249
|
+
mod2_method
|
250
|
+
end
|
251
|
+
example_group.run
|
252
|
+
mod1_method_called.should be_true
|
253
|
+
mod2_method_called.should be_true
|
254
|
+
end
|
255
|
+
|
256
|
+
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
|
258
|
+
def a_shared_helper_method
|
259
|
+
"this got defined in a shared example_group"
|
260
|
+
end
|
261
|
+
end
|
262
|
+
example_group.it_should_behave_like("shared example_group xyz")
|
263
|
+
success = false
|
264
|
+
example_group.it("should access a_shared_helper_method") do
|
265
|
+
a_shared_helper_method
|
266
|
+
success = true
|
267
|
+
end
|
268
|
+
example_group.run
|
269
|
+
success.should be_true
|
270
|
+
end
|
271
|
+
|
272
|
+
it "should raise when named shared example_group can not be found" do
|
273
|
+
lambda {
|
274
|
+
example_group.it_should_behave_like("non-existent shared example group")
|
275
|
+
violated
|
276
|
+
}.should raise_error("Shared Example Group 'non-existent shared example group' can not be found")
|
277
|
+
end
|
278
|
+
end
|
279
|
+
end
|
280
|
+
end
|
281
|
+
end
|