mdap 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.DS_Store +0 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.travis.yml +6 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +34 -0
- data/LICENSE.txt +21 -0
- data/README.md +58 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/mdap.rb +95 -0
- data/lib/mdap/version.rb +3 -0
- data/mdap.gemspec +26 -0
- data/vendor/bundle/ruby/2.7.0/bin/htmldiff +29 -0
- data/vendor/bundle/ruby/2.7.0/bin/ldiff +29 -0
- data/vendor/bundle/ruby/2.7.0/bin/rake +27 -0
- data/vendor/bundle/ruby/2.7.0/bin/rspec +27 -0
- data/vendor/bundle/ruby/2.7.0/cache/diff-lcs-1.3.gem +0 -0
- data/vendor/bundle/ruby/2.7.0/cache/rake-12.3.3.gem +0 -0
- data/vendor/bundle/ruby/2.7.0/cache/rspec-3.9.0.gem +0 -0
- data/vendor/bundle/ruby/2.7.0/cache/rspec-core-3.9.1.gem +0 -0
- data/vendor/bundle/ruby/2.7.0/cache/rspec-expectations-3.9.0.gem +0 -0
- data/vendor/bundle/ruby/2.7.0/cache/rspec-mocks-3.9.1.gem +0 -0
- data/vendor/bundle/ruby/2.7.0/cache/rspec-support-3.9.2.gem +0 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/.rspec +1 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/Code-of-Conduct.md +74 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/Contributing.md +83 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/History.md +220 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/License.md +39 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/Manifest.txt +37 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/README.rdoc +84 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/Rakefile +57 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/autotest/discover.rb +1 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/bin/htmldiff +32 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/bin/ldiff +6 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/docs/COPYING.txt +339 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/docs/artistic.txt +127 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/lib/diff-lcs.rb +3 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/lib/diff/lcs.rb +725 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/lib/diff/lcs/array.rb +7 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/lib/diff/lcs/block.rb +37 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/lib/diff/lcs/callbacks.rb +322 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/lib/diff/lcs/change.rb +181 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/lib/diff/lcs/htmldiff.rb +149 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/lib/diff/lcs/hunk.rb +276 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/lib/diff/lcs/internals.rb +307 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/lib/diff/lcs/ldiff.rb +167 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/lib/diff/lcs/string.rb +5 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/spec/change_spec.rb +65 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/spec/diff_spec.rb +47 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/spec/fixtures/ds1.csv +50 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/spec/fixtures/ds2.csv +51 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/spec/hunk_spec.rb +72 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/spec/issues_spec.rb +49 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/spec/lcs_spec.rb +56 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/spec/ldiff_spec.rb +47 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/spec/patch_spec.rb +422 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/spec/sdiff_spec.rb +214 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/spec/spec_helper.rb +321 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/spec/traverse_balanced_spec.rb +310 -0
- data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.3/spec/traverse_sequences_spec.rb +139 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/CONTRIBUTING.rdoc +43 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/Gemfile +3 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/History.rdoc +2344 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/MIT-LICENSE +21 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/README.rdoc +156 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/Rakefile +41 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/azure-pipelines.yml +11 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/bin/bundle +105 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/bin/console +7 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/bin/rake +29 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/bin/rdoc +29 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/bin/rubocop +29 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/bin/setup +6 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/command_line_usage.rdoc +158 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/example/Rakefile1 +38 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/example/Rakefile2 +35 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/example/a.c +6 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/example/b.c +6 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/example/main.c +11 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/glossary.rdoc +42 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/jamis.rb +592 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/proto_rake.rdoc +127 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/rake.1 +156 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/rakefile.rdoc +622 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/rational.rdoc +151 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/exe/rake +27 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake.rb +71 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/application.rb +824 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/backtrace.rb +24 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/clean.rb +78 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/cloneable.rb +17 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/cpu_counter.rb +107 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/default_loader.rb +15 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/dsl_definition.rb +195 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/early_time.rb +22 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/ext/core.rb +26 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/ext/string.rb +176 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/file_creation_task.rb +25 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/file_list.rb +435 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/file_task.rb +54 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/file_utils.rb +137 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/file_utils_ext.rb +145 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/invocation_chain.rb +57 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb +17 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/late_time.rb +18 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/linked_list.rb +112 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/loaders/makefile.rb +54 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/multi_task.rb +14 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/name_space.rb +38 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/packagetask.rb +207 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/phony.rb +16 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/private_reader.rb +21 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/promise.rb +100 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/pseudo_status.rb +30 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/rake_module.rb +67 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/rake_test_loader.rb +27 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/scope.rb +43 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/task.rb +413 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/task_argument_error.rb +8 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/task_arguments.rb +109 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/task_manager.rb +324 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/tasklib.rb +12 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/testtask.rb +224 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/thread_history_display.rb +49 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/thread_pool.rb +163 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/trace_output.rb +23 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/version.rb +10 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/win32.rb +51 -0
- data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/rake.gemspec +42 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-3.9.0/LICENSE.md +27 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-3.9.0/README.md +43 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-3.9.0/lib/rspec.rb +3 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-3.9.0/lib/rspec/version.rb +5 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/.document +5 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/.yardopts +8 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/Changelog.md +2274 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/LICENSE.md +26 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/README.md +384 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/exe/rspec +4 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/autorun.rb +3 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core.rb +186 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/backtrace_formatter.rb +65 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/bisect/coordinator.rb +62 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/bisect/example_minimizer.rb +173 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/bisect/fork_runner.rb +135 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/bisect/server.rb +61 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/bisect/shell_command.rb +126 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/bisect/shell_runner.rb +73 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/bisect/utilities.rb +58 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/configuration.rb +2336 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/configuration_options.rb +233 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/did_you_mean.rb +46 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/drb.rb +113 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/dsl.rb +98 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb +656 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/example_group.rb +889 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/example_status_persister.rb +235 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/filter_manager.rb +231 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/flat_map.rb +20 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters.rb +272 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/base_formatter.rb +70 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/base_text_formatter.rb +75 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/bisect_progress_formatter.rb +157 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/console_codes.rb +68 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/documentation_formatter.rb +102 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/exception_presenter.rb +508 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/failure_list_formatter.rb +23 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/helpers.rb +110 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/html_formatter.rb +153 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/html_printer.rb +414 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/html_snippet_extractor.rb +120 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/json_formatter.rb +102 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/profile_formatter.rb +68 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/progress_formatter.rb +29 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/protocol.rb +182 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/snippet_extractor.rb +134 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/hooks.rb +632 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/invocations.rb +87 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/memoized_helpers.rb +554 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/metadata.rb +498 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/metadata_filter.rb +255 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/null.rb +14 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/rr.rb +31 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/notifications.rb +521 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/option_parser.rb +316 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/ordering.rb +158 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/output_wrapper.rb +29 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/pending.rb +165 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/profiler.rb +34 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/project_initializer.rb +48 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/project_initializer/.rspec +1 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/project_initializer/spec/spec_helper.rb +100 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/rake_task.rb +188 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/reporter.rb +265 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/ruby_project.rb +53 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/runner.rb +204 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/sandbox.rb +37 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/set.rb +54 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/shared_context.rb +55 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/shared_example_group.rb +269 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/shell_escape.rb +49 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/version.rb +9 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/warnings.rb +40 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/world.rb +275 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/.document +5 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/.yardopts +6 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/Changelog.md +1170 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/LICENSE.md +25 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/README.md +320 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations.rb +82 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/configuration.rb +215 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/expectation_target.rb +127 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/fail_with.rb +39 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/failure_aggregator.rb +194 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/handler.rb +170 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/minitest_integration.rb +58 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/syntax.rb +132 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/version.rb +8 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers.rb +1038 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/aliased_matcher.rb +116 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in.rb +52 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/all.rb +86 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/base_matcher.rb +193 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be.rb +288 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_between.rb +77 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_instance_of.rb +26 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_kind_of.rb +20 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_within.rb +72 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/change.rb +428 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/compound.rb +276 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/contain_exactly.rb +302 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/cover.rb +24 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/eq.rb +40 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/eql.rb +34 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/equal.rb +81 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/exist.rb +90 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/has.rb +103 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/include.rb +149 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/match.rb +106 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/operators.rb +128 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/output.rb +200 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/raise_error.rb +230 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/respond_to.rb +174 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/satisfy.rb +60 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/yield.rb +432 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/composable.rb +171 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/dsl.rb +534 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/english_phrasing.rb +58 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +82 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/fail_matchers.rb +42 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/generated_descriptions.rb +41 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/matcher_delegator.rb +35 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/matcher_protocol.rb +99 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/.document +5 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/.yardopts +6 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/Changelog.md +1133 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/LICENSE.md +25 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/README.md +463 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks.rb +130 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance.rb +11 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/chain.rb +111 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/expect_chain_chain.rb +31 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/expectation_chain.rb +50 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/proxy.rb +116 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/recorder.rb +294 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/stub_chain.rb +51 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/stub_chain_chain.rb +23 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/argument_list_matcher.rb +100 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/argument_matchers.rb +322 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/configuration.rb +212 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/error_generator.rb +369 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/example_methods.rb +434 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/instance_method_stasher.rb +146 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/marshal_extension.rb +41 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/have_received.rb +134 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/receive.rb +132 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/message_chain.rb +87 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/message_expectation.rb +751 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/method_double.rb +287 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/method_reference.rb +202 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/minitest_integration.rb +68 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/mutate_const.rb +339 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/object_reference.rb +149 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/order_group.rb +81 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/proxy.rb +503 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/space.rb +238 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/standalone.rb +3 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/syntax.rb +325 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/targets.rb +124 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/test_double.rb +171 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/verifying_double.rb +129 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/verifying_message_expectation.rb +54 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/verifying_proxy.rb +220 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/version.rb +9 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/Changelog.md +292 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/LICENSE.md +23 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/README.md +40 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support.rb +149 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/caller_filter.rb +83 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/comparable_version.rb +46 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/differ.rb +215 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/directory_maker.rb +63 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/encoded_string.rb +161 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/fuzzy_matcher.rb +48 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/hunk_generator.rb +47 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/matcher_definition.rb +42 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/method_signature_verifier.rb +438 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/mutex.rb +73 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/object_formatter.rb +275 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/recursive_const_methods.rb +76 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/reentrant_mutex.rb +53 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/ruby_features.rb +185 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/source.rb +75 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/source/location.rb +21 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/source/node.rb +110 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/source/token.rb +87 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/spec.rb +81 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/formatting_support.rb +9 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/in_sub_process.rb +69 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/library_wide_checks.rb +150 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/shell_out.rb +89 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/stderr_splitter.rb +67 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/string_matcher.rb +46 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/version.rb +7 -0
- data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/warnings.rb +39 -0
- data/vendor/bundle/ruby/2.7.0/specifications/diff-lcs-1.3.gemspec +51 -0
- data/vendor/bundle/ruby/2.7.0/specifications/rake-12.3.3.gemspec +43 -0
- data/vendor/bundle/ruby/2.7.0/specifications/rspec-3.9.0.gemspec +39 -0
- data/vendor/bundle/ruby/2.7.0/specifications/rspec-core-3.9.1.gemspec +53 -0
- data/vendor/bundle/ruby/2.7.0/specifications/rspec-expectations-3.9.0.gemspec +44 -0
- data/vendor/bundle/ruby/2.7.0/specifications/rspec-mocks-3.9.1.gemspec +44 -0
- data/vendor/bundle/ruby/2.7.0/specifications/rspec-support-3.9.2.gemspec +36 -0
- metadata +403 -0
@@ -0,0 +1,656 @@
|
|
1
|
+
module RSpec
|
2
|
+
module Core
|
3
|
+
# Wrapper for an instance of a subclass of {ExampleGroup}. An instance of
|
4
|
+
# `RSpec::Core::Example` is returned by example definition methods
|
5
|
+
# such as {ExampleGroup.it it} and is yielded to the {ExampleGroup.it it},
|
6
|
+
# {Hooks#before before}, {Hooks#after after}, {Hooks#around around},
|
7
|
+
# {MemoizedHelpers::ClassMethods#let let} and
|
8
|
+
# {MemoizedHelpers::ClassMethods#subject subject} blocks.
|
9
|
+
#
|
10
|
+
# This allows us to provide rich metadata about each individual
|
11
|
+
# example without adding tons of methods directly to the ExampleGroup
|
12
|
+
# that users may inadvertently redefine.
|
13
|
+
#
|
14
|
+
# Useful for configuring logging and/or taking some action based
|
15
|
+
# on the state of an example's metadata.
|
16
|
+
#
|
17
|
+
# @example
|
18
|
+
#
|
19
|
+
# RSpec.configure do |config|
|
20
|
+
# config.before do |example|
|
21
|
+
# log example.description
|
22
|
+
# end
|
23
|
+
#
|
24
|
+
# config.after do |example|
|
25
|
+
# log example.description
|
26
|
+
# end
|
27
|
+
#
|
28
|
+
# config.around do |example|
|
29
|
+
# log example.description
|
30
|
+
# example.run
|
31
|
+
# end
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# shared_examples "auditable" do
|
35
|
+
# it "does something" do
|
36
|
+
# log "#{example.full_description}: #{auditable.inspect}"
|
37
|
+
# auditable.should do_something
|
38
|
+
# end
|
39
|
+
# end
|
40
|
+
#
|
41
|
+
# @see ExampleGroup
|
42
|
+
# @note Example blocks are evaluated in the context of an instance
|
43
|
+
# of an `ExampleGroup`, not in the context of an instance of `Example`.
|
44
|
+
class Example
|
45
|
+
# @private
|
46
|
+
#
|
47
|
+
# Used to define methods that delegate to this example's metadata.
|
48
|
+
def self.delegate_to_metadata(key)
|
49
|
+
define_method(key) { @metadata[key] }
|
50
|
+
end
|
51
|
+
|
52
|
+
# @return [ExecutionResult] represents the result of running this example.
|
53
|
+
delegate_to_metadata :execution_result
|
54
|
+
# @return [String] the relative path to the file where this example was
|
55
|
+
# defined.
|
56
|
+
delegate_to_metadata :file_path
|
57
|
+
# @return [String] the full description (including the docstrings of
|
58
|
+
# all parent example groups).
|
59
|
+
delegate_to_metadata :full_description
|
60
|
+
# @return [String] the exact source location of this example in a form
|
61
|
+
# like `./path/to/spec.rb:17`
|
62
|
+
delegate_to_metadata :location
|
63
|
+
# @return [Boolean] flag that indicates that the example is not expected
|
64
|
+
# to pass. It will be run and will either have a pending result (if a
|
65
|
+
# failure occurs) or a failed result (if no failure occurs).
|
66
|
+
delegate_to_metadata :pending
|
67
|
+
# @return [Boolean] flag that will cause the example to not run.
|
68
|
+
# The {ExecutionResult} status will be `:pending`.
|
69
|
+
delegate_to_metadata :skip
|
70
|
+
|
71
|
+
# Returns the string submitted to `example` or its aliases (e.g.
|
72
|
+
# `specify`, `it`, etc). If no string is submitted (e.g.
|
73
|
+
# `it { is_expected.to do_something }`) it returns the message generated
|
74
|
+
# by the matcher if there is one, otherwise returns a message including
|
75
|
+
# the location of the example.
|
76
|
+
def description
|
77
|
+
description = if metadata[:description].to_s.empty?
|
78
|
+
location_description
|
79
|
+
else
|
80
|
+
metadata[:description]
|
81
|
+
end
|
82
|
+
|
83
|
+
RSpec.configuration.format_docstrings_block.call(description)
|
84
|
+
end
|
85
|
+
|
86
|
+
# Returns a description of the example that always includes the location.
|
87
|
+
def inspect_output
|
88
|
+
inspect_output = "\"#{description}\""
|
89
|
+
unless metadata[:description].to_s.empty?
|
90
|
+
inspect_output += " (#{location})"
|
91
|
+
end
|
92
|
+
inspect_output
|
93
|
+
end
|
94
|
+
|
95
|
+
# Returns the location-based argument that can be passed to the `rspec` command to rerun this example.
|
96
|
+
def location_rerun_argument
|
97
|
+
@location_rerun_argument ||= begin
|
98
|
+
loaded_spec_files = RSpec.configuration.loaded_spec_files
|
99
|
+
|
100
|
+
Metadata.ascending(metadata) do |meta|
|
101
|
+
return meta[:location] if loaded_spec_files.include?(meta[:absolute_file_path])
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
# Returns the location-based argument that can be passed to the `rspec` command to rerun this example.
|
107
|
+
#
|
108
|
+
# @deprecated Use {#location_rerun_argument} instead.
|
109
|
+
# @note If there are multiple examples identified by this location, they will use {#id}
|
110
|
+
# to rerun instead, but this method will still return the location (that's why it is deprecated!).
|
111
|
+
def rerun_argument
|
112
|
+
location_rerun_argument
|
113
|
+
end
|
114
|
+
|
115
|
+
# @return [String] the unique id of this example. Pass
|
116
|
+
# this at the command line to re-run this exact example.
|
117
|
+
def id
|
118
|
+
@id ||= Metadata.id_from(metadata)
|
119
|
+
end
|
120
|
+
|
121
|
+
# @private
|
122
|
+
def self.parse_id(id)
|
123
|
+
# http://rubular.com/r/OMZSAPcAfn
|
124
|
+
id.match(/\A(.*?)(?:\[([\d\s:,]+)\])?\z/).captures
|
125
|
+
end
|
126
|
+
|
127
|
+
# Duplicates the example and overrides metadata with the provided
|
128
|
+
# hash.
|
129
|
+
#
|
130
|
+
# @param metadata_overrides [Hash] the hash to override the example metadata
|
131
|
+
# @return [Example] a duplicate of the example with modified metadata
|
132
|
+
def duplicate_with(metadata_overrides={})
|
133
|
+
new_metadata = metadata.clone.merge(metadata_overrides)
|
134
|
+
|
135
|
+
RSpec::Core::Metadata::RESERVED_KEYS.each do |reserved_key|
|
136
|
+
new_metadata.delete reserved_key
|
137
|
+
end
|
138
|
+
|
139
|
+
# don't clone the example group because the new example
|
140
|
+
# must belong to the same example group (not a clone).
|
141
|
+
#
|
142
|
+
# block is nil in new_metadata so we have to get it from metadata.
|
143
|
+
Example.new(example_group, description.clone,
|
144
|
+
new_metadata, metadata[:block])
|
145
|
+
end
|
146
|
+
|
147
|
+
# @private
|
148
|
+
def update_inherited_metadata(updates)
|
149
|
+
metadata.update(updates) do |_key, existing_example_value, _new_inherited_value|
|
150
|
+
existing_example_value
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
# @attr_reader
|
155
|
+
#
|
156
|
+
# Returns the first exception raised in the context of running this
|
157
|
+
# example (nil if no exception is raised).
|
158
|
+
attr_reader :exception
|
159
|
+
|
160
|
+
# @attr_reader
|
161
|
+
#
|
162
|
+
# Returns the metadata object associated with this example.
|
163
|
+
attr_reader :metadata
|
164
|
+
|
165
|
+
# @attr_reader
|
166
|
+
# @private
|
167
|
+
#
|
168
|
+
# Returns the example_group_instance that provides the context for
|
169
|
+
# running this example.
|
170
|
+
attr_reader :example_group_instance
|
171
|
+
|
172
|
+
# @attr
|
173
|
+
# @private
|
174
|
+
attr_accessor :clock
|
175
|
+
|
176
|
+
# Creates a new instance of Example.
|
177
|
+
# @param example_group_class [Class] the subclass of ExampleGroup in which
|
178
|
+
# this Example is declared
|
179
|
+
# @param description [String] the String passed to the `it` method (or
|
180
|
+
# alias)
|
181
|
+
# @param user_metadata [Hash] additional args passed to `it` to be used as
|
182
|
+
# metadata
|
183
|
+
# @param example_block [Proc] the block of code that represents the
|
184
|
+
# example
|
185
|
+
# @api private
|
186
|
+
def initialize(example_group_class, description, user_metadata, example_block=nil)
|
187
|
+
@example_group_class = example_group_class
|
188
|
+
@example_block = example_block
|
189
|
+
|
190
|
+
# Register the example with the group before creating the metadata hash.
|
191
|
+
# This is necessary since creating the metadata hash triggers
|
192
|
+
# `when_first_matching_example_defined` callbacks, in which users can
|
193
|
+
# load RSpec support code which defines hooks. For that to work, the
|
194
|
+
# examples and example groups must be registered at the time the
|
195
|
+
# support code is called or be defined afterwards.
|
196
|
+
# Begin defined beforehand but registered afterwards causes hooks to
|
197
|
+
# not be applied where they should.
|
198
|
+
example_group_class.examples << self
|
199
|
+
|
200
|
+
@metadata = Metadata::ExampleHash.create(
|
201
|
+
@example_group_class.metadata, user_metadata,
|
202
|
+
example_group_class.method(:next_runnable_index_for),
|
203
|
+
description, example_block
|
204
|
+
)
|
205
|
+
|
206
|
+
config = RSpec.configuration
|
207
|
+
config.apply_derived_metadata_to(@metadata)
|
208
|
+
|
209
|
+
# This should perhaps be done in `Metadata::ExampleHash.create`,
|
210
|
+
# but the logic there has no knowledge of `RSpec.world` and we
|
211
|
+
# want to keep it that way. It's easier to just assign it here.
|
212
|
+
@metadata[:last_run_status] = config.last_run_statuses[id]
|
213
|
+
|
214
|
+
@example_group_instance = @exception = nil
|
215
|
+
@clock = RSpec::Core::Time
|
216
|
+
@reporter = RSpec::Core::NullReporter
|
217
|
+
end
|
218
|
+
|
219
|
+
# Provide a human-readable representation of this class
|
220
|
+
def inspect
|
221
|
+
"#<#{self.class.name} #{description.inspect}>"
|
222
|
+
end
|
223
|
+
alias to_s inspect
|
224
|
+
|
225
|
+
# @return [RSpec::Core::Reporter] the current reporter for the example
|
226
|
+
attr_reader :reporter
|
227
|
+
|
228
|
+
# Returns the example group class that provides the context for running
|
229
|
+
# this example.
|
230
|
+
def example_group
|
231
|
+
@example_group_class
|
232
|
+
end
|
233
|
+
|
234
|
+
alias_method :pending?, :pending
|
235
|
+
alias_method :skipped?, :skip
|
236
|
+
|
237
|
+
# @api private
|
238
|
+
# instance_execs the block passed to the constructor in the context of
|
239
|
+
# the instance of {ExampleGroup}.
|
240
|
+
# @param example_group_instance the instance of an ExampleGroup subclass
|
241
|
+
def run(example_group_instance, reporter)
|
242
|
+
@example_group_instance = example_group_instance
|
243
|
+
@reporter = reporter
|
244
|
+
RSpec.configuration.configure_example(self, hooks)
|
245
|
+
RSpec.current_example = self
|
246
|
+
|
247
|
+
start(reporter)
|
248
|
+
Pending.mark_pending!(self, pending) if pending?
|
249
|
+
|
250
|
+
begin
|
251
|
+
if skipped?
|
252
|
+
Pending.mark_pending! self, skip
|
253
|
+
elsif !RSpec.configuration.dry_run?
|
254
|
+
with_around_and_singleton_context_hooks do
|
255
|
+
begin
|
256
|
+
run_before_example
|
257
|
+
@example_group_instance.instance_exec(self, &@example_block)
|
258
|
+
|
259
|
+
if pending?
|
260
|
+
Pending.mark_fixed! self
|
261
|
+
|
262
|
+
raise Pending::PendingExampleFixedError,
|
263
|
+
'Expected example to fail since it is pending, but it passed.',
|
264
|
+
[location]
|
265
|
+
end
|
266
|
+
rescue Pending::SkipDeclaredInExample => _
|
267
|
+
# The "=> _" is normally useless but on JRuby it is a workaround
|
268
|
+
# for a bug that prevents us from getting backtraces:
|
269
|
+
# https://github.com/jruby/jruby/issues/4467
|
270
|
+
#
|
271
|
+
# no-op, required metadata has already been set by the `skip`
|
272
|
+
# method.
|
273
|
+
rescue AllExceptionsExcludingDangerousOnesOnRubiesThatAllowIt => e
|
274
|
+
set_exception(e)
|
275
|
+
ensure
|
276
|
+
run_after_example
|
277
|
+
end
|
278
|
+
end
|
279
|
+
end
|
280
|
+
rescue Support::AllExceptionsExceptOnesWeMustNotRescue => e
|
281
|
+
set_exception(e)
|
282
|
+
ensure
|
283
|
+
@example_group_instance = nil # if you love something... let it go
|
284
|
+
end
|
285
|
+
|
286
|
+
finish(reporter)
|
287
|
+
ensure
|
288
|
+
execution_result.ensure_timing_set(clock)
|
289
|
+
RSpec.current_example = nil
|
290
|
+
end
|
291
|
+
|
292
|
+
if RSpec::Support::Ruby.jruby? || RUBY_VERSION.to_f < 1.9
|
293
|
+
# :nocov:
|
294
|
+
# For some reason, rescuing `Support::AllExceptionsExceptOnesWeMustNotRescue`
|
295
|
+
# in place of `Exception` above can cause the exit status to be the wrong
|
296
|
+
# thing. I have no idea why. See:
|
297
|
+
# https://github.com/rspec/rspec-core/pull/2063#discussion_r38284978
|
298
|
+
# @private
|
299
|
+
AllExceptionsExcludingDangerousOnesOnRubiesThatAllowIt = Exception
|
300
|
+
# :nocov:
|
301
|
+
else
|
302
|
+
# @private
|
303
|
+
AllExceptionsExcludingDangerousOnesOnRubiesThatAllowIt = Support::AllExceptionsExceptOnesWeMustNotRescue
|
304
|
+
end
|
305
|
+
|
306
|
+
# Wraps both a `Proc` and an {Example} for use in {Hooks#around
|
307
|
+
# around} hooks. In around hooks we need to yield this special
|
308
|
+
# kind of object (rather than the raw {Example}) because when
|
309
|
+
# there are multiple `around` hooks we have to wrap them recursively.
|
310
|
+
#
|
311
|
+
# @example
|
312
|
+
#
|
313
|
+
# RSpec.configure do |c|
|
314
|
+
# c.around do |ex| # Procsy which wraps the example
|
315
|
+
# if ex.metadata[:key] == :some_value && some_global_condition
|
316
|
+
# raise "some message"
|
317
|
+
# end
|
318
|
+
# ex.run # run delegates to ex.call.
|
319
|
+
# end
|
320
|
+
# end
|
321
|
+
#
|
322
|
+
# @note This class also exposes the instance methods of {Example},
|
323
|
+
# proxying them through to the wrapped {Example} instance.
|
324
|
+
class Procsy
|
325
|
+
# The {Example} instance.
|
326
|
+
attr_reader :example
|
327
|
+
|
328
|
+
Example.public_instance_methods(false).each do |name|
|
329
|
+
name_sym = name.to_sym
|
330
|
+
next if name_sym == :run || name_sym == :inspect || name_sym == :to_s
|
331
|
+
|
332
|
+
define_method(name) { |*a, &b| @example.__send__(name, *a, &b) }
|
333
|
+
end
|
334
|
+
|
335
|
+
Proc.public_instance_methods(false).each do |name|
|
336
|
+
name_sym = name.to_sym
|
337
|
+
next if name_sym == :call || name_sym == :inspect || name_sym == :to_s || name_sym == :to_proc
|
338
|
+
|
339
|
+
define_method(name) { |*a, &b| @proc.__send__(name, *a, &b) }
|
340
|
+
end
|
341
|
+
|
342
|
+
# Calls the proc and notes that the example has been executed.
|
343
|
+
def call(*args, &block)
|
344
|
+
@executed = true
|
345
|
+
@proc.call(*args, &block)
|
346
|
+
end
|
347
|
+
alias run call
|
348
|
+
|
349
|
+
# Provides a wrapped proc that will update our `executed?` state when
|
350
|
+
# executed.
|
351
|
+
def to_proc
|
352
|
+
method(:call).to_proc
|
353
|
+
end
|
354
|
+
|
355
|
+
def initialize(example, &block)
|
356
|
+
@example = example
|
357
|
+
@proc = block
|
358
|
+
@executed = false
|
359
|
+
end
|
360
|
+
|
361
|
+
# @private
|
362
|
+
def wrap(&block)
|
363
|
+
self.class.new(example, &block)
|
364
|
+
end
|
365
|
+
|
366
|
+
# Indicates whether or not the around hook has executed the example.
|
367
|
+
def executed?
|
368
|
+
@executed
|
369
|
+
end
|
370
|
+
|
371
|
+
# @private
|
372
|
+
def inspect
|
373
|
+
@example.inspect.gsub('Example', 'ExampleProcsy')
|
374
|
+
end
|
375
|
+
end
|
376
|
+
|
377
|
+
# @private
|
378
|
+
#
|
379
|
+
# The exception that will be displayed to the user -- either the failure of
|
380
|
+
# the example or the `pending_exception` if the example is pending.
|
381
|
+
def display_exception
|
382
|
+
@exception || execution_result.pending_exception
|
383
|
+
end
|
384
|
+
|
385
|
+
# @private
|
386
|
+
#
|
387
|
+
# Assigns the exception that will be displayed to the user -- either the failure of
|
388
|
+
# the example or the `pending_exception` if the example is pending.
|
389
|
+
def display_exception=(ex)
|
390
|
+
if pending? && !(Pending::PendingExampleFixedError === ex)
|
391
|
+
@exception = nil
|
392
|
+
execution_result.pending_fixed = false
|
393
|
+
execution_result.pending_exception = ex
|
394
|
+
else
|
395
|
+
@exception = ex
|
396
|
+
end
|
397
|
+
end
|
398
|
+
|
399
|
+
# rubocop:disable Naming/AccessorMethodName
|
400
|
+
|
401
|
+
# @private
|
402
|
+
#
|
403
|
+
# Used internally to set an exception in an after hook, which
|
404
|
+
# captures the exception but doesn't raise it.
|
405
|
+
def set_exception(exception)
|
406
|
+
return self.display_exception = exception unless display_exception
|
407
|
+
|
408
|
+
unless RSpec::Core::MultipleExceptionError === display_exception
|
409
|
+
self.display_exception = RSpec::Core::MultipleExceptionError.new(display_exception)
|
410
|
+
end
|
411
|
+
|
412
|
+
display_exception.add exception
|
413
|
+
end
|
414
|
+
|
415
|
+
# @private
|
416
|
+
#
|
417
|
+
# Used to set the exception when `aggregate_failures` fails.
|
418
|
+
def set_aggregate_failures_exception(exception)
|
419
|
+
return set_exception(exception) unless display_exception
|
420
|
+
|
421
|
+
exception = RSpec::Core::MultipleExceptionError::InterfaceTag.for(exception)
|
422
|
+
exception.add display_exception
|
423
|
+
self.display_exception = exception
|
424
|
+
end
|
425
|
+
|
426
|
+
# rubocop:enable Naming/AccessorMethodName
|
427
|
+
|
428
|
+
# @private
|
429
|
+
#
|
430
|
+
# Used internally to set an exception and fail without actually executing
|
431
|
+
# the example when an exception is raised in before(:context).
|
432
|
+
def fail_with_exception(reporter, exception)
|
433
|
+
start(reporter)
|
434
|
+
set_exception(exception)
|
435
|
+
finish(reporter)
|
436
|
+
end
|
437
|
+
|
438
|
+
# @private
|
439
|
+
#
|
440
|
+
# Used internally to skip without actually executing the example when
|
441
|
+
# skip is used in before(:context).
|
442
|
+
def skip_with_exception(reporter, exception)
|
443
|
+
start(reporter)
|
444
|
+
Pending.mark_skipped! self, exception.argument
|
445
|
+
finish(reporter)
|
446
|
+
end
|
447
|
+
|
448
|
+
# @private
|
449
|
+
def instance_exec(*args, &block)
|
450
|
+
@example_group_instance.instance_exec(*args, &block)
|
451
|
+
end
|
452
|
+
|
453
|
+
private
|
454
|
+
|
455
|
+
def hooks
|
456
|
+
example_group_instance.singleton_class.hooks
|
457
|
+
end
|
458
|
+
|
459
|
+
def with_around_example_hooks
|
460
|
+
hooks.run(:around, :example, self) { yield }
|
461
|
+
rescue Support::AllExceptionsExceptOnesWeMustNotRescue => e
|
462
|
+
set_exception(e)
|
463
|
+
end
|
464
|
+
|
465
|
+
def start(reporter)
|
466
|
+
reporter.example_started(self)
|
467
|
+
execution_result.started_at = clock.now
|
468
|
+
end
|
469
|
+
|
470
|
+
def finish(reporter)
|
471
|
+
pending_message = execution_result.pending_message
|
472
|
+
|
473
|
+
if @exception
|
474
|
+
execution_result.exception = @exception
|
475
|
+
record_finished :failed, reporter
|
476
|
+
reporter.example_failed self
|
477
|
+
false
|
478
|
+
elsif pending_message
|
479
|
+
execution_result.pending_message = pending_message
|
480
|
+
record_finished :pending, reporter
|
481
|
+
reporter.example_pending self
|
482
|
+
true
|
483
|
+
else
|
484
|
+
record_finished :passed, reporter
|
485
|
+
reporter.example_passed self
|
486
|
+
true
|
487
|
+
end
|
488
|
+
end
|
489
|
+
|
490
|
+
def record_finished(status, reporter)
|
491
|
+
execution_result.record_finished(status, clock.now)
|
492
|
+
reporter.example_finished(self)
|
493
|
+
end
|
494
|
+
|
495
|
+
def run_before_example
|
496
|
+
@example_group_instance.setup_mocks_for_rspec
|
497
|
+
hooks.run(:before, :example, self)
|
498
|
+
end
|
499
|
+
|
500
|
+
def with_around_and_singleton_context_hooks
|
501
|
+
singleton_context_hooks_host = example_group_instance.singleton_class
|
502
|
+
singleton_context_hooks_host.run_before_context_hooks(example_group_instance)
|
503
|
+
with_around_example_hooks { yield }
|
504
|
+
ensure
|
505
|
+
singleton_context_hooks_host.run_after_context_hooks(example_group_instance)
|
506
|
+
end
|
507
|
+
|
508
|
+
def run_after_example
|
509
|
+
assign_generated_description if defined?(::RSpec::Matchers)
|
510
|
+
hooks.run(:after, :example, self)
|
511
|
+
verify_mocks
|
512
|
+
ensure
|
513
|
+
@example_group_instance.teardown_mocks_for_rspec
|
514
|
+
end
|
515
|
+
|
516
|
+
def verify_mocks
|
517
|
+
@example_group_instance.verify_mocks_for_rspec if mocks_need_verification?
|
518
|
+
rescue Support::AllExceptionsExceptOnesWeMustNotRescue => e
|
519
|
+
set_exception(e)
|
520
|
+
end
|
521
|
+
|
522
|
+
def mocks_need_verification?
|
523
|
+
exception.nil? || execution_result.pending_fixed?
|
524
|
+
end
|
525
|
+
|
526
|
+
def assign_generated_description
|
527
|
+
if metadata[:description].empty? && (description = generate_description)
|
528
|
+
metadata[:description] = description
|
529
|
+
metadata[:full_description] += description
|
530
|
+
end
|
531
|
+
ensure
|
532
|
+
RSpec::Matchers.clear_generated_description
|
533
|
+
end
|
534
|
+
|
535
|
+
def generate_description
|
536
|
+
RSpec::Matchers.generated_description
|
537
|
+
rescue Support::AllExceptionsExceptOnesWeMustNotRescue => e
|
538
|
+
location_description + " (Got an error when generating description " \
|
539
|
+
"from matcher: #{e.class}: #{e.message} -- #{e.backtrace.first})"
|
540
|
+
end
|
541
|
+
|
542
|
+
def location_description
|
543
|
+
"example at #{location}"
|
544
|
+
end
|
545
|
+
|
546
|
+
# Represents the result of executing an example.
|
547
|
+
# Behaves like a hash for backwards compatibility.
|
548
|
+
class ExecutionResult
|
549
|
+
include HashImitatable
|
550
|
+
|
551
|
+
# @return [Symbol] `:passed`, `:failed` or `:pending`.
|
552
|
+
attr_accessor :status
|
553
|
+
|
554
|
+
# @return [Exception, nil] The failure, if there was one.
|
555
|
+
attr_accessor :exception
|
556
|
+
|
557
|
+
# @return [Time] When the example started.
|
558
|
+
attr_accessor :started_at
|
559
|
+
|
560
|
+
# @return [Time] When the example finished.
|
561
|
+
attr_accessor :finished_at
|
562
|
+
|
563
|
+
# @return [Float] How long the example took in seconds.
|
564
|
+
attr_accessor :run_time
|
565
|
+
|
566
|
+
# @return [String, nil] The reason the example was pending,
|
567
|
+
# or nil if the example was not pending.
|
568
|
+
attr_accessor :pending_message
|
569
|
+
|
570
|
+
# @return [Exception, nil] The exception triggered while
|
571
|
+
# executing the pending example. If no exception was triggered
|
572
|
+
# it would no longer get a status of `:pending` unless it was
|
573
|
+
# tagged with `:skip`.
|
574
|
+
attr_accessor :pending_exception
|
575
|
+
|
576
|
+
# @return [Boolean] For examples tagged with `:pending`,
|
577
|
+
# this indicates whether or not it now passes.
|
578
|
+
attr_accessor :pending_fixed
|
579
|
+
|
580
|
+
alias pending_fixed? pending_fixed
|
581
|
+
|
582
|
+
# @return [Boolean] Indicates if the example was completely skipped
|
583
|
+
# (typically done via `:skip` metadata or the `skip` method). Skipped examples
|
584
|
+
# will have a `:pending` result. A `:pending` result can also come from examples
|
585
|
+
# that were marked as `:pending`, which causes them to be run, and produces a
|
586
|
+
# `:failed` result if the example passes.
|
587
|
+
def example_skipped?
|
588
|
+
status == :pending && !pending_exception
|
589
|
+
end
|
590
|
+
|
591
|
+
# @api private
|
592
|
+
# Records the finished status of the example.
|
593
|
+
def record_finished(status, finished_at)
|
594
|
+
self.status = status
|
595
|
+
calculate_run_time(finished_at)
|
596
|
+
end
|
597
|
+
|
598
|
+
# @api private
|
599
|
+
# Populates finished_at and run_time if it has not yet been set
|
600
|
+
def ensure_timing_set(clock)
|
601
|
+
calculate_run_time(clock.now) unless finished_at
|
602
|
+
end
|
603
|
+
|
604
|
+
private
|
605
|
+
|
606
|
+
def calculate_run_time(finished_at)
|
607
|
+
self.finished_at = finished_at
|
608
|
+
self.run_time = (finished_at - started_at).to_f
|
609
|
+
end
|
610
|
+
|
611
|
+
# For backwards compatibility we present `status` as a string
|
612
|
+
# when presenting the legacy hash interface.
|
613
|
+
def hash_for_delegation
|
614
|
+
super.tap do |hash|
|
615
|
+
hash[:status] &&= status.to_s
|
616
|
+
end
|
617
|
+
end
|
618
|
+
|
619
|
+
def set_value(name, value)
|
620
|
+
value &&= value.to_sym if name == :status
|
621
|
+
super(name, value)
|
622
|
+
end
|
623
|
+
|
624
|
+
def get_value(name)
|
625
|
+
if name == :status
|
626
|
+
status.to_s if status
|
627
|
+
else
|
628
|
+
super
|
629
|
+
end
|
630
|
+
end
|
631
|
+
|
632
|
+
def issue_deprecation(_method_name, *_args)
|
633
|
+
RSpec.deprecate("Treating `metadata[:execution_result]` as a hash",
|
634
|
+
:replacement => "the attributes methods to access the data")
|
635
|
+
end
|
636
|
+
end
|
637
|
+
end
|
638
|
+
|
639
|
+
# @private
|
640
|
+
# Provides an execution context for before/after :suite hooks.
|
641
|
+
class SuiteHookContext < Example
|
642
|
+
def initialize(hook_description, reporter)
|
643
|
+
super(AnonymousExampleGroup, hook_description, {})
|
644
|
+
@example_group_instance = AnonymousExampleGroup.new
|
645
|
+
@reporter = reporter
|
646
|
+
end
|
647
|
+
|
648
|
+
# rubocop:disable Naming/AccessorMethodName
|
649
|
+
def set_exception(exception)
|
650
|
+
reporter.notify_non_example_exception(exception, "An error occurred in #{description}.")
|
651
|
+
RSpec.world.wants_to_quit = true
|
652
|
+
end
|
653
|
+
# rubocop:enable Naming/AccessorMethodName
|
654
|
+
end
|
655
|
+
end
|
656
|
+
end
|