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,79 @@
|
|
1
|
+
module Spec
|
2
|
+
module Runner
|
3
|
+
module Formatter
|
4
|
+
# Baseclass for formatters that implements all required methods as no-ops.
|
5
|
+
class BaseFormatter
|
6
|
+
attr_accessor :example_group, :options, :where
|
7
|
+
def initialize(options, where)
|
8
|
+
@options = options
|
9
|
+
@where = where
|
10
|
+
end
|
11
|
+
|
12
|
+
# This method is invoked before any examples are run, right after
|
13
|
+
# they have all been collected. This can be useful for special
|
14
|
+
# formatters that need to provide progress on feedback (graphical ones)
|
15
|
+
#
|
16
|
+
# This method will only be invoked once, and the next one to be invoked
|
17
|
+
# is #add_example_group
|
18
|
+
def start(example_count)
|
19
|
+
end
|
20
|
+
|
21
|
+
# This method is invoked at the beginning of the execution of each example_group.
|
22
|
+
# +example_group+ is the example_group.
|
23
|
+
#
|
24
|
+
# The next method to be invoked after this is #example_failed or #example_finished
|
25
|
+
def add_example_group(example_group)
|
26
|
+
@example_group = example_group
|
27
|
+
end
|
28
|
+
|
29
|
+
# This method is invoked when an +example+ starts.
|
30
|
+
def example_started(example)
|
31
|
+
end
|
32
|
+
|
33
|
+
# This method is invoked when an +example+ passes.
|
34
|
+
def example_passed(example)
|
35
|
+
end
|
36
|
+
|
37
|
+
# This method is invoked when an +example+ fails, i.e. an exception occurred
|
38
|
+
# inside it (such as a failed should or other exception). +counter+ is the
|
39
|
+
# sequence number of the failure (starting at 1) and +failure+ is the associated
|
40
|
+
# Failure object.
|
41
|
+
def example_failed(example, counter, failure)
|
42
|
+
end
|
43
|
+
|
44
|
+
# This method is invoked when an example is not yet implemented (i.e. has not
|
45
|
+
# been provided a block), or when an ExamplePendingError is raised.
|
46
|
+
# +message+ is the message from the ExamplePendingError, if it exists, or the
|
47
|
+
# default value of "Not Yet Implemented"
|
48
|
+
# +pending_caller+ is the file and line number of the spec which
|
49
|
+
# has called the pending method
|
50
|
+
def example_pending(example, message, pending_caller)
|
51
|
+
end
|
52
|
+
|
53
|
+
# This method is invoked after all of the examples have executed. The next method
|
54
|
+
# to be invoked after this one is #dump_failure (once for each failed example),
|
55
|
+
def start_dump
|
56
|
+
end
|
57
|
+
|
58
|
+
# Dumps detailed information about an example failure.
|
59
|
+
# This method is invoked for each failed example after all examples have run. +counter+ is the sequence number
|
60
|
+
# of the associated example. +failure+ is a Failure object, which contains detailed
|
61
|
+
# information about the failure.
|
62
|
+
def dump_failure(counter, failure)
|
63
|
+
end
|
64
|
+
|
65
|
+
# This method is invoked after the dumping of examples and failures.
|
66
|
+
def dump_summary(duration, example_count, failure_count, pending_count)
|
67
|
+
end
|
68
|
+
|
69
|
+
# This gets invoked after the summary if option is set to do so.
|
70
|
+
def dump_pending
|
71
|
+
end
|
72
|
+
|
73
|
+
# This method is invoked at the very end. Allows the formatter to clean up, like closing open streams.
|
74
|
+
def close
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
require 'spec/runner/formatter/base_formatter'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Runner
|
5
|
+
module Formatter
|
6
|
+
# Baseclass for text-based formatters. Can in fact be used for
|
7
|
+
# non-text based ones too - just ignore the +output+ constructor
|
8
|
+
# argument.
|
9
|
+
class BaseTextFormatter < BaseFormatter
|
10
|
+
attr_reader :output, :pending_examples
|
11
|
+
# Creates a new instance that will write to +where+. If +where+ is a
|
12
|
+
# String, output will be written to the File with that name, otherwise
|
13
|
+
# +where+ is exected to be an IO (or an object that responds to #puts and #write).
|
14
|
+
def initialize(options, where)
|
15
|
+
super
|
16
|
+
if where.is_a?(String)
|
17
|
+
@output = File.open(where, 'w')
|
18
|
+
else
|
19
|
+
@output = where
|
20
|
+
end
|
21
|
+
@pending_examples = []
|
22
|
+
end
|
23
|
+
|
24
|
+
def example_pending(example, message, pending_caller)
|
25
|
+
@pending_examples << [example.__full_description, message, pending_caller]
|
26
|
+
end
|
27
|
+
|
28
|
+
def dump_failure(counter, failure)
|
29
|
+
@output.puts
|
30
|
+
@output.puts "#{counter.to_s})"
|
31
|
+
@output.puts colourise("#{failure.header}\n#{failure.exception.message}", failure)
|
32
|
+
@output.puts format_backtrace(failure.exception.backtrace)
|
33
|
+
@output.flush
|
34
|
+
end
|
35
|
+
|
36
|
+
def colourise(s, failure)
|
37
|
+
if(failure.expectation_not_met?)
|
38
|
+
red(s)
|
39
|
+
elsif(failure.pending_fixed?)
|
40
|
+
blue(s)
|
41
|
+
else
|
42
|
+
magenta(s)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def dump_summary(duration, example_count, failure_count, pending_count)
|
47
|
+
return if dry_run?
|
48
|
+
@output.puts
|
49
|
+
@output.puts "Finished in #{duration} seconds"
|
50
|
+
@output.puts
|
51
|
+
|
52
|
+
summary = "#{example_count} example#{'s' unless example_count == 1}, #{failure_count} failure#{'s' unless failure_count == 1}"
|
53
|
+
summary << ", #{pending_count} pending" if pending_count > 0
|
54
|
+
|
55
|
+
if failure_count == 0
|
56
|
+
if pending_count > 0
|
57
|
+
@output.puts yellow(summary)
|
58
|
+
else
|
59
|
+
@output.puts green(summary)
|
60
|
+
end
|
61
|
+
else
|
62
|
+
@output.puts red(summary)
|
63
|
+
end
|
64
|
+
@output.flush
|
65
|
+
end
|
66
|
+
|
67
|
+
def dump_pending
|
68
|
+
unless @pending_examples.empty?
|
69
|
+
@output.puts
|
70
|
+
@output.puts "Pending:"
|
71
|
+
@pending_examples.each do |pending_example|
|
72
|
+
@output.puts "#{pending_example[0]} (#{pending_example[1]})"
|
73
|
+
@output.puts " Called from #{pending_example[2]}"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
@output.flush
|
77
|
+
end
|
78
|
+
|
79
|
+
def close
|
80
|
+
if IO === @output && @output != $stdout
|
81
|
+
@output.close
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def format_backtrace(backtrace)
|
86
|
+
return "" if backtrace.nil?
|
87
|
+
backtrace.map { |line| backtrace_line(line) }.join("\n")
|
88
|
+
end
|
89
|
+
|
90
|
+
protected
|
91
|
+
|
92
|
+
def colour?
|
93
|
+
@options.colour ? true : false
|
94
|
+
end
|
95
|
+
|
96
|
+
def dry_run?
|
97
|
+
@options.dry_run ? true : false
|
98
|
+
end
|
99
|
+
|
100
|
+
def backtrace_line(line)
|
101
|
+
line.sub(/\A([^:]+:\d+)$/, '\\1:')
|
102
|
+
end
|
103
|
+
|
104
|
+
def colour(text, colour_code)
|
105
|
+
return text unless colour? && output_to_tty?
|
106
|
+
"#{colour_code}#{text}\e[0m"
|
107
|
+
end
|
108
|
+
|
109
|
+
def output_to_tty?
|
110
|
+
begin
|
111
|
+
@output.tty? || ENV.has_key?("AUTOTEST")
|
112
|
+
rescue NoMethodError
|
113
|
+
false
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def green(text); colour(text, "\e[32m"); end
|
118
|
+
def red(text); colour(text, "\e[31m"); end
|
119
|
+
def magenta(text); colour(text, "\e[35m"); end
|
120
|
+
def yellow(text); colour(text, "\e[33m"); end
|
121
|
+
def blue(text); colour(text, "\e[34m"); end
|
122
|
+
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec/runner/formatter/base_text_formatter'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Runner
|
5
|
+
module Formatter
|
6
|
+
class FailingExampleGroupsFormatter < BaseTextFormatter
|
7
|
+
def example_failed(example, counter, failure)
|
8
|
+
if @example_group
|
9
|
+
description_parts = @example_group.description_parts.collect do |description|
|
10
|
+
description =~ /(.*) \(druby.*\)$/ ? $1 : description
|
11
|
+
end
|
12
|
+
@output.puts ::Spec::Example::ExampleGroupMethods.description_text(*description_parts)
|
13
|
+
|
14
|
+
@output.flush
|
15
|
+
@example_group = nil
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def dump_failure(counter, failure)
|
20
|
+
end
|
21
|
+
|
22
|
+
def dump_summary(duration, example_count, failure_count, pending_count)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec/runner/formatter/base_text_formatter'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Runner
|
5
|
+
module Formatter
|
6
|
+
class FailingExamplesFormatter < BaseTextFormatter
|
7
|
+
def example_failed(example, counter, failure)
|
8
|
+
@output.puts "#{example_group.description} #{example.description}"
|
9
|
+
@output.flush
|
10
|
+
end
|
11
|
+
|
12
|
+
def dump_failure(counter, failure)
|
13
|
+
end
|
14
|
+
|
15
|
+
def dump_summary(duration, example_count, failure_count, pending_count)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,337 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'spec/runner/formatter/base_text_formatter'
|
3
|
+
|
4
|
+
module Spec
|
5
|
+
module Runner
|
6
|
+
module Formatter
|
7
|
+
class HtmlFormatter < BaseTextFormatter
|
8
|
+
include ERB::Util # for the #h method
|
9
|
+
|
10
|
+
def initialize(options, output)
|
11
|
+
super
|
12
|
+
@example_group_number = 0
|
13
|
+
@example_number = 0
|
14
|
+
end
|
15
|
+
|
16
|
+
def method_missing(sym, *args)
|
17
|
+
# no-op
|
18
|
+
end
|
19
|
+
|
20
|
+
# The number of the currently running example_group
|
21
|
+
def example_group_number
|
22
|
+
@example_group_number
|
23
|
+
end
|
24
|
+
|
25
|
+
# The number of the currently running example (a global counter)
|
26
|
+
def example_number
|
27
|
+
@example_number
|
28
|
+
end
|
29
|
+
|
30
|
+
def start(example_count)
|
31
|
+
@example_count = example_count
|
32
|
+
|
33
|
+
@output.puts html_header
|
34
|
+
@output.puts report_header
|
35
|
+
@output.flush
|
36
|
+
end
|
37
|
+
|
38
|
+
def add_example_group(example_group)
|
39
|
+
super
|
40
|
+
@example_group_red = false
|
41
|
+
@example_group_red = false
|
42
|
+
@example_group_number += 1
|
43
|
+
unless example_group_number == 1
|
44
|
+
@output.puts " </dl>"
|
45
|
+
@output.puts "</div>"
|
46
|
+
end
|
47
|
+
@output.puts "<div class=\"example_group\">"
|
48
|
+
@output.puts " <dl>"
|
49
|
+
@output.puts " <dt id=\"example_group_#{example_group_number}\">#{h(example_group.description)}</dt>"
|
50
|
+
@output.flush
|
51
|
+
end
|
52
|
+
|
53
|
+
def start_dump
|
54
|
+
@output.puts " </dl>"
|
55
|
+
@output.puts "</div>"
|
56
|
+
@output.flush
|
57
|
+
end
|
58
|
+
|
59
|
+
def example_started(example)
|
60
|
+
@example_number += 1
|
61
|
+
end
|
62
|
+
|
63
|
+
def example_passed(example)
|
64
|
+
move_progress
|
65
|
+
@output.puts " <dd class=\"spec passed\"><span class=\"passed_spec_name\">#{h(example.description)}</span></dd>"
|
66
|
+
@output.flush
|
67
|
+
end
|
68
|
+
|
69
|
+
def example_failed(example, counter, failure)
|
70
|
+
extra = extra_failure_content(failure)
|
71
|
+
failure_style = failure.pending_fixed? ? 'pending_fixed' : 'failed'
|
72
|
+
@output.puts " <script type=\"text/javascript\">makeRed('rspec-header');</script>" unless @header_red
|
73
|
+
@header_red = true
|
74
|
+
@output.puts " <script type=\"text/javascript\">makeRed('example_group_#{example_group_number}');</script>" unless @example_group_red
|
75
|
+
@example_group_red = true
|
76
|
+
move_progress
|
77
|
+
@output.puts " <dd class=\"spec #{failure_style}\">"
|
78
|
+
@output.puts " <span class=\"failed_spec_name\">#{h(example.description)}</span>"
|
79
|
+
@output.puts " <div class=\"failure\" id=\"failure_#{counter}\">"
|
80
|
+
@output.puts " <div class=\"message\"><pre>#{h(failure.exception.message)}</pre></div>" unless failure.exception.nil?
|
81
|
+
@output.puts " <div class=\"backtrace\"><pre>#{format_backtrace(failure.exception.backtrace)}</pre></div>" unless failure.exception.nil?
|
82
|
+
@output.puts extra unless extra == ""
|
83
|
+
@output.puts " </div>"
|
84
|
+
@output.puts " </dd>"
|
85
|
+
@output.flush
|
86
|
+
end
|
87
|
+
|
88
|
+
def example_pending(example, message, pending_caller)
|
89
|
+
@output.puts " <script type=\"text/javascript\">makeYellow('rspec-header');</script>" unless @header_red
|
90
|
+
@output.puts " <script type=\"text/javascript\">makeYellow('example_group_#{example_group_number}');</script>" unless @example_group_red
|
91
|
+
move_progress
|
92
|
+
@output.puts " <dd class=\"spec not_implemented\"><span class=\"not_implemented_spec_name\">#{h(example.description)} (PENDING: #{h(message)})</span></dd>"
|
93
|
+
@output.flush
|
94
|
+
end
|
95
|
+
|
96
|
+
# Override this method if you wish to output extra HTML for a failed spec. For example, you
|
97
|
+
# could output links to images or other files produced during the specs.
|
98
|
+
#
|
99
|
+
def extra_failure_content(failure)
|
100
|
+
require 'spec/runner/formatter/snippet_extractor'
|
101
|
+
@snippet_extractor ||= SnippetExtractor.new
|
102
|
+
" <pre class=\"ruby\"><code>#{@snippet_extractor.snippet(failure.exception)}</code></pre>"
|
103
|
+
end
|
104
|
+
|
105
|
+
def move_progress
|
106
|
+
@output.puts " <script type=\"text/javascript\">moveProgressBar('#{percent_done}');</script>"
|
107
|
+
@output.flush
|
108
|
+
end
|
109
|
+
|
110
|
+
def percent_done
|
111
|
+
result = 100.0
|
112
|
+
if @example_count != 0
|
113
|
+
result = ((example_number).to_f / @example_count.to_f * 1000).to_i / 10.0
|
114
|
+
end
|
115
|
+
result
|
116
|
+
end
|
117
|
+
|
118
|
+
def dump_failure(counter, failure)
|
119
|
+
end
|
120
|
+
|
121
|
+
def dump_summary(duration, example_count, failure_count, pending_count)
|
122
|
+
if dry_run?
|
123
|
+
totals = "This was a dry-run"
|
124
|
+
else
|
125
|
+
totals = "#{example_count} example#{'s' unless example_count == 1}, #{failure_count} failure#{'s' unless failure_count == 1}"
|
126
|
+
totals << ", #{pending_count} pending" if pending_count > 0
|
127
|
+
end
|
128
|
+
@output.puts "<script type=\"text/javascript\">document.getElementById('duration').innerHTML = \"Finished in <strong>#{duration} seconds</strong>\";</script>"
|
129
|
+
@output.puts "<script type=\"text/javascript\">document.getElementById('totals').innerHTML = \"#{totals}\";</script>"
|
130
|
+
@output.puts "</div>"
|
131
|
+
@output.puts "</div>"
|
132
|
+
@output.puts "</body>"
|
133
|
+
@output.puts "</html>"
|
134
|
+
@output.flush
|
135
|
+
end
|
136
|
+
|
137
|
+
def html_header
|
138
|
+
<<-EOF
|
139
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
140
|
+
<!DOCTYPE html
|
141
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
142
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
143
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
144
|
+
<head>
|
145
|
+
<title>RSpec results</title>
|
146
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
147
|
+
<meta http-equiv="Expires" content="-1" />
|
148
|
+
<meta http-equiv="Pragma" content="no-cache" />
|
149
|
+
<style type="text/css">
|
150
|
+
body {
|
151
|
+
margin: 0;
|
152
|
+
padding: 0;
|
153
|
+
background: #fff;
|
154
|
+
font-size: 80%;
|
155
|
+
}
|
156
|
+
</style>
|
157
|
+
</head>
|
158
|
+
<body>
|
159
|
+
EOF
|
160
|
+
end
|
161
|
+
|
162
|
+
def report_header
|
163
|
+
<<-EOF
|
164
|
+
<div class="rspec-report">
|
165
|
+
<script type="text/javascript">
|
166
|
+
// <![CDATA[
|
167
|
+
#{global_scripts}
|
168
|
+
// ]]>
|
169
|
+
</script>
|
170
|
+
<style type="text/css">
|
171
|
+
#{global_styles}
|
172
|
+
</style>
|
173
|
+
|
174
|
+
<div id="rspec-header">
|
175
|
+
<h1>RSpec Results</h1>
|
176
|
+
|
177
|
+
<div id="summary">
|
178
|
+
<p id="totals"> </p>
|
179
|
+
<p id="duration"> </p>
|
180
|
+
</div>
|
181
|
+
</div>
|
182
|
+
|
183
|
+
<div class="results">
|
184
|
+
EOF
|
185
|
+
end
|
186
|
+
|
187
|
+
def global_scripts
|
188
|
+
<<-EOF
|
189
|
+
function moveProgressBar(percentDone) {
|
190
|
+
document.getElementById("rspec-header").style.width = percentDone +"%";
|
191
|
+
}
|
192
|
+
function makeRed(element_id) {
|
193
|
+
document.getElementById(element_id).style.background = '#C40D0D';
|
194
|
+
document.getElementById(element_id).style.color = '#FFFFFF';
|
195
|
+
}
|
196
|
+
|
197
|
+
function makeYellow(element_id) {
|
198
|
+
if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
|
199
|
+
{
|
200
|
+
document.getElementById(element_id).style.background = '#FAF834';
|
201
|
+
document.getElementById(element_id).style.color = '#000000';
|
202
|
+
}
|
203
|
+
else
|
204
|
+
{
|
205
|
+
document.getElementById(element_id).style.background = '#FAF834';
|
206
|
+
document.getElementById(element_id).style.color = '#000000';
|
207
|
+
}
|
208
|
+
}
|
209
|
+
EOF
|
210
|
+
end
|
211
|
+
|
212
|
+
def global_styles
|
213
|
+
<<-EOF
|
214
|
+
#rspec-header {
|
215
|
+
background: #65C400; color: #fff;
|
216
|
+
}
|
217
|
+
|
218
|
+
.rspec-report h1 {
|
219
|
+
margin: 0px 10px 0px 10px;
|
220
|
+
padding: 10px;
|
221
|
+
font-family: "Lucida Grande", Helvetica, sans-serif;
|
222
|
+
font-size: 1.8em;
|
223
|
+
}
|
224
|
+
|
225
|
+
#summary {
|
226
|
+
margin: 0; padding: 5px 10px;
|
227
|
+
font-family: "Lucida Grande", Helvetica, sans-serif;
|
228
|
+
text-align: right;
|
229
|
+
position: absolute;
|
230
|
+
top: 0px;
|
231
|
+
right: 0px;
|
232
|
+
}
|
233
|
+
|
234
|
+
#summary p {
|
235
|
+
margin: 0 0 0 2px;
|
236
|
+
}
|
237
|
+
|
238
|
+
#summary #totals {
|
239
|
+
font-size: 1.2em;
|
240
|
+
}
|
241
|
+
|
242
|
+
.example_group {
|
243
|
+
margin: 0 10px 5px;
|
244
|
+
background: #fff;
|
245
|
+
}
|
246
|
+
|
247
|
+
dl {
|
248
|
+
margin: 0; padding: 0 0 5px;
|
249
|
+
font: normal 11px "Lucida Grande", Helvetica, sans-serif;
|
250
|
+
}
|
251
|
+
|
252
|
+
dt {
|
253
|
+
padding: 3px;
|
254
|
+
background: #65C400;
|
255
|
+
color: #fff;
|
256
|
+
font-weight: bold;
|
257
|
+
}
|
258
|
+
|
259
|
+
dd {
|
260
|
+
margin: 5px 0 5px 5px;
|
261
|
+
padding: 3px 3px 3px 18px;
|
262
|
+
}
|
263
|
+
|
264
|
+
dd.spec.passed {
|
265
|
+
border-left: 5px solid #65C400;
|
266
|
+
border-bottom: 1px solid #65C400;
|
267
|
+
background: #DBFFB4; color: #3D7700;
|
268
|
+
}
|
269
|
+
|
270
|
+
dd.spec.failed {
|
271
|
+
border-left: 5px solid #C20000;
|
272
|
+
border-bottom: 1px solid #C20000;
|
273
|
+
color: #C20000; background: #FFFBD3;
|
274
|
+
}
|
275
|
+
|
276
|
+
dd.spec.not_implemented {
|
277
|
+
border-left: 5px solid #FAF834;
|
278
|
+
border-bottom: 1px solid #FAF834;
|
279
|
+
background: #FCFB98; color: #131313;
|
280
|
+
}
|
281
|
+
|
282
|
+
dd.spec.pending_fixed {
|
283
|
+
border-left: 5px solid #0000C2;
|
284
|
+
border-bottom: 1px solid #0000C2;
|
285
|
+
color: #0000C2; background: #D3FBFF;
|
286
|
+
}
|
287
|
+
|
288
|
+
.backtrace {
|
289
|
+
color: #000;
|
290
|
+
font-size: 12px;
|
291
|
+
}
|
292
|
+
|
293
|
+
a {
|
294
|
+
color: #BE5C00;
|
295
|
+
}
|
296
|
+
|
297
|
+
/* Ruby code, style similar to vibrant ink */
|
298
|
+
.ruby {
|
299
|
+
font-size: 12px;
|
300
|
+
font-family: monospace;
|
301
|
+
color: white;
|
302
|
+
background-color: black;
|
303
|
+
padding: 0.1em 0 0.2em 0;
|
304
|
+
}
|
305
|
+
|
306
|
+
.ruby .keyword { color: #FF6600; }
|
307
|
+
.ruby .constant { color: #339999; }
|
308
|
+
.ruby .attribute { color: white; }
|
309
|
+
.ruby .global { color: white; }
|
310
|
+
.ruby .module { color: white; }
|
311
|
+
.ruby .class { color: white; }
|
312
|
+
.ruby .string { color: #66FF00; }
|
313
|
+
.ruby .ident { color: white; }
|
314
|
+
.ruby .method { color: #FFCC00; }
|
315
|
+
.ruby .number { color: white; }
|
316
|
+
.ruby .char { color: white; }
|
317
|
+
.ruby .comment { color: #9933CC; }
|
318
|
+
.ruby .symbol { color: white; }
|
319
|
+
.ruby .regex { color: #44B4CC; }
|
320
|
+
.ruby .punct { color: white; }
|
321
|
+
.ruby .escape { color: white; }
|
322
|
+
.ruby .interp { color: white; }
|
323
|
+
.ruby .expr { color: white; }
|
324
|
+
|
325
|
+
.ruby .offending { background-color: gray; }
|
326
|
+
.ruby .linenum {
|
327
|
+
width: 75px;
|
328
|
+
padding: 0.1em 1em 0.2em 0;
|
329
|
+
color: #000000;
|
330
|
+
background-color: #FFFBD3;
|
331
|
+
}
|
332
|
+
EOF
|
333
|
+
end
|
334
|
+
end
|
335
|
+
end
|
336
|
+
end
|
337
|
+
end
|