pad_character 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/.rspec +3 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +35 -0
- data/LICENSE.txt +21 -0
- data/README.md +46 -0
- data/Rakefile +8 -0
- data/lib/pad_character/format_pad_character.rb +6 -0
- data/lib/pad_character/version.rb +5 -0
- data/lib/pad_character.rb +9 -0
- data/pad_character.gemspec +39 -0
- data/sig/pad_character.rbs +4 -0
- data/vendor/bundle/ruby/2.6.0/bin/htmldiff +29 -0
- data/vendor/bundle/ruby/2.6.0/bin/ldiff +29 -0
- data/vendor/bundle/ruby/2.6.0/bin/rake +29 -0
- data/vendor/bundle/ruby/2.6.0/bin/rspec +29 -0
- data/vendor/bundle/ruby/2.6.0/cache/diff-lcs-1.5.0.gem +0 -0
- data/vendor/bundle/ruby/2.6.0/cache/rake-13.0.6.gem +0 -0
- data/vendor/bundle/ruby/2.6.0/cache/rspec-3.12.0.gem +0 -0
- data/vendor/bundle/ruby/2.6.0/cache/rspec-core-3.12.0.gem +0 -0
- data/vendor/bundle/ruby/2.6.0/cache/rspec-expectations-3.12.0.gem +0 -0
- data/vendor/bundle/ruby/2.6.0/cache/rspec-mocks-3.12.0.gem +0 -0
- data/vendor/bundle/ruby/2.6.0/cache/rspec-support-3.12.0.gem +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/.rspec +1 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/Code-of-Conduct.md +74 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/Contributing.md +119 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/History.md +400 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/License.md +39 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/Manifest.txt +59 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/README.rdoc +84 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/Rakefile +121 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/bin/htmldiff +35 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/bin/ldiff +9 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/docs/COPYING.txt +339 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/docs/artistic.txt +127 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/array.rb +7 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/backports.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/block.rb +37 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/callbacks.rb +325 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/change.rb +174 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/htmldiff.rb +150 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/hunk.rb +358 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/internals.rb +308 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/ldiff.rb +171 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/string.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs.rb +739 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff-lcs.rb +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/change_spec.rb +89 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/diff_spec.rb +51 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/aX +1 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/bXaX +1 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ds1.csv +50 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ds2.csv +51 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff +4 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff-c +7 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff-e +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff-f +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff-u +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef +4 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef-c +15 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef-e +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef-f +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef-u +9 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef2 +7 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef2-c +20 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef2-d +7 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef2-e +7 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef2-f +7 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef2-u +16 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/new-chef +4 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/new-chef2 +17 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/old-chef +4 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/old-chef2 +14 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/hunk_spec.rb +83 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/issues_spec.rb +154 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/lcs_spec.rb +56 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/ldiff_spec.rb +87 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/patch_spec.rb +416 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/sdiff_spec.rb +214 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/spec_helper.rb +374 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/traverse_balanced_spec.rb +310 -0
- data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/traverse_sequences_spec.rb +137 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/History.rdoc +2403 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/MIT-LICENSE +21 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/README.rdoc +155 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/command_line_usage.rdoc +158 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/example/Rakefile1 +38 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/example/Rakefile2 +35 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/example/a.c +6 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/example/b.c +6 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/example/main.c +11 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/glossary.rdoc +42 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/jamis.rb +592 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/proto_rake.rdoc +127 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/rake.1 +156 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/rakefile.rdoc +622 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/rational.rdoc +151 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/exe/rake +27 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/application.rb +831 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/backtrace.rb +24 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/clean.rb +78 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/cloneable.rb +17 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/cpu_counter.rb +107 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/default_loader.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/dsl_definition.rb +195 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/early_time.rb +22 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/ext/core.rb +26 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/ext/string.rb +176 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/file_creation_task.rb +25 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/file_list.rb +435 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/file_task.rb +54 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/file_utils.rb +134 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/file_utils_ext.rb +134 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/invocation_chain.rb +57 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/invocation_exception_mixin.rb +17 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/late_time.rb +18 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/linked_list.rb +112 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/loaders/makefile.rb +54 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/multi_task.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/name_space.rb +38 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/packagetask.rb +222 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/phony.rb +16 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/private_reader.rb +21 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/promise.rb +100 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/pseudo_status.rb +30 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/rake_module.rb +67 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/rake_test_loader.rb +27 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/scope.rb +43 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/task.rb +434 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/task_argument_error.rb +8 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/task_arguments.rb +109 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/task_manager.rb +331 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/tasklib.rb +12 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/testtask.rb +189 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/thread_history_display.rb +49 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/thread_pool.rb +163 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/trace_output.rb +23 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/version.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/win32.rb +51 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake.rb +71 -0
- data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/rake.gemspec +100 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-3.12.0/LICENSE.md +27 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-3.12.0/README.md +47 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-3.12.0/lib/rspec/version.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-3.12.0/lib/rspec.rb +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/.document +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/.yardopts +8 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/Changelog.md +2360 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/LICENSE.md +26 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/README.md +384 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/exe/rspec +4 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/autorun.rb +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/backtrace_formatter.rb +65 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/bisect/coordinator.rb +62 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/bisect/example_minimizer.rb +173 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/bisect/fork_runner.rb +138 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/bisect/server.rb +61 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/bisect/shell_command.rb +126 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/bisect/shell_runner.rb +73 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/bisect/utilities.rb +69 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/configuration.rb +2385 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/configuration_options.rb +233 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/did_you_mean.rb +46 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/drb.rb +120 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/dsl.rb +98 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/example.rb +666 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/example_group.rb +905 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/example_status_persister.rb +235 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/filter_manager.rb +231 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/flat_map.rb +20 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/base_formatter.rb +70 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/base_text_formatter.rb +75 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/bisect_progress_formatter.rb +157 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/console_codes.rb +76 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/documentation_formatter.rb +102 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/exception_presenter.rb +525 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/failure_list_formatter.rb +23 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/helpers.rb +118 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/html_formatter.rb +153 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/html_printer.rb +412 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/html_snippet_extractor.rb +120 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/json_formatter.rb +102 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/profile_formatter.rb +68 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/progress_formatter.rb +29 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/protocol.rb +182 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/snippet_extractor.rb +134 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters.rb +279 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/hooks.rb +646 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/invocations.rb +87 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/memoized_helpers.rb +580 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/metadata.rb +498 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/metadata_filter.rb +255 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/mocking_adapters/null.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/mocking_adapters/rr.rb +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/notifications.rb +521 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/option_parser.rb +323 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/ordering.rb +169 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/output_wrapper.rb +29 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/pending.rb +157 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/profiler.rb +34 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/project_initializer/.rspec +1 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/project_initializer/spec/spec_helper.rb +98 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/project_initializer.rb +48 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/rake_task.rb +188 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb +265 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/ruby_project.rb +53 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/runner.rb +212 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/sandbox.rb +37 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/set.rb +54 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/shared_context.rb +55 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/shared_example_group.rb +271 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/shell_escape.rb +49 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/version.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/warnings.rb +40 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/world.rb +287 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core.rb +212 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/.document +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/.yardopts +6 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/Changelog.md +1285 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/LICENSE.md +25 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/README.md +320 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/configuration.rb +230 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/expectation_target.rb +163 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/fail_with.rb +39 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/failure_aggregator.rb +212 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/handler.rb +182 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/minitest_integration.rb +58 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/syntax.rb +132 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/version.rb +8 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations.rb +82 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/aliased_matcher.rb +116 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/all.rb +86 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/base_matcher.rb +198 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/be.rb +191 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/be_between.rb +77 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/be_instance_of.rb +26 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/be_kind_of.rb +20 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/be_within.rb +72 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/change.rb +450 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/compound.rb +290 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/contain_exactly.rb +310 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/count_expectation.rb +169 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/cover.rb +24 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/eq.rb +40 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/eql.rb +34 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/equal.rb +81 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/exist.rb +90 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/has.rb +167 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/include.rb +206 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/match.rb +106 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/operators.rb +128 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/output.rb +207 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/raise_error.rb +271 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/respond_to.rb +200 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/satisfy.rb +60 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/throw_symbol.rb +138 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/yield.rb +375 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in.rb +53 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/composable.rb +171 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/dsl.rb +544 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/english_phrasing.rb +58 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +82 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/fail_matchers.rb +42 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/generated_descriptions.rb +41 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/matcher_delegator.rb +35 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/matcher_protocol.rb +105 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers.rb +1044 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/.document +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/.yardopts +6 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/Changelog.md +1212 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/LICENSE.md +25 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/README.md +463 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/chain.rb +111 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/expect_chain_chain.rb +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/expectation_chain.rb +50 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/proxy.rb +116 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/recorder.rb +295 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/stub_chain.rb +51 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/stub_chain_chain.rb +23 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/argument_list_matcher.rb +115 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/argument_matchers.rb +322 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/configuration.rb +212 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/error_generator.rb +380 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/example_methods.rb +434 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/instance_method_stasher.rb +146 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/marshal_extension.rb +41 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/matchers/have_received.rb +134 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/matchers/receive.rb +133 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/message_chain.rb +87 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/message_expectation.rb +820 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/method_double.rb +291 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/method_reference.rb +214 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/minitest_integration.rb +68 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/mutate_const.rb +339 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/object_reference.rb +149 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/order_group.rb +81 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/proxy.rb +525 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/space.rb +238 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/standalone.rb +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/syntax.rb +325 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/targets.rb +124 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/test_double.rb +171 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/verifying_double.rb +121 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/verifying_message_expectation.rb +55 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/verifying_proxy.rb +220 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/version.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks.rb +133 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/Changelog.md +364 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/LICENSE.md +23 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/README.md +40 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/caller_filter.rb +83 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/comparable_version.rb +46 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/differ.rb +215 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/directory_maker.rb +63 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/encoded_string.rb +161 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/fuzzy_matcher.rb +48 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/hunk_generator.rb +47 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/matcher_definition.rb +42 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/method_signature_verifier.rb +438 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/mutex.rb +73 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/object_formatter.rb +275 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/recursive_const_methods.rb +76 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/reentrant_mutex.rb +78 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/ruby_features.rb +198 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/source/location.rb +21 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/source/node.rb +110 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/source/token.rb +94 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/source.rb +85 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/deprecation_helpers.rb +48 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/diff_helpers.rb +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/formatting_support.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/in_sub_process.rb +67 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/library_wide_checks.rb +150 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/shell_out.rb +105 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/stderr_splitter.rb +75 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/string_matcher.rb +45 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec.rb +82 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/version.rb +7 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/warnings.rb +39 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/with_keywords_when_needed.rb +33 -0
- data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support.rb +154 -0
- data/vendor/bundle/ruby/2.6.0/specifications/diff-lcs-1.5.0.gemspec +50 -0
- data/vendor/bundle/ruby/2.6.0/specifications/rake-13.0.6.gemspec +26 -0
- data/vendor/bundle/ruby/2.6.0/specifications/rspec-3.12.0.gemspec +39 -0
- data/vendor/bundle/ruby/2.6.0/specifications/rspec-core-3.12.0.gemspec +53 -0
- data/vendor/bundle/ruby/2.6.0/specifications/rspec-expectations-3.12.0.gemspec +44 -0
- data/vendor/bundle/ruby/2.6.0/specifications/rspec-mocks-3.12.0.gemspec +44 -0
- data/vendor/bundle/ruby/2.6.0/specifications/rspec-support-3.12.0.gemspec +36 -0
- metadata +419 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
module RSpec
|
|
2
|
+
module Mocks
|
|
3
|
+
# Implements the methods needed for a pure test double. RSpec::Mocks::Double
|
|
4
|
+
# includes this module, and it is provided for cases where you want a
|
|
5
|
+
# pure test double without subclassing RSpec::Mocks::Double.
|
|
6
|
+
module TestDouble
|
|
7
|
+
# Creates a new test double with a `name` (that will be used in error
|
|
8
|
+
# messages only)
|
|
9
|
+
def initialize(name=nil, stubs={})
|
|
10
|
+
@__expired = false
|
|
11
|
+
if Hash === name && stubs.empty?
|
|
12
|
+
stubs = name
|
|
13
|
+
@name = nil
|
|
14
|
+
else
|
|
15
|
+
@name = name
|
|
16
|
+
end
|
|
17
|
+
assign_stubs(stubs)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Tells the object to respond to all messages. If specific stub values
|
|
21
|
+
# are declared, they'll work as expected. If not, the receiver is
|
|
22
|
+
# returned.
|
|
23
|
+
def as_null_object
|
|
24
|
+
__mock_proxy.as_null_object
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Returns true if this object has received `as_null_object`
|
|
28
|
+
def null_object?
|
|
29
|
+
__mock_proxy.null_object?
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# This allows for comparing the mock to other objects that proxy such as
|
|
33
|
+
# ActiveRecords belongs_to proxy objects. By making the other object run
|
|
34
|
+
# the comparison, we're sure the call gets delegated to the proxy
|
|
35
|
+
# target.
|
|
36
|
+
def ==(other)
|
|
37
|
+
other == __mock_proxy
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# @private
|
|
41
|
+
def inspect
|
|
42
|
+
TestDoubleFormatter.format(self)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# @private
|
|
46
|
+
def to_s
|
|
47
|
+
inspect.tr('<', '[').tr('>', ']')
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# @private
|
|
51
|
+
def respond_to?(message, incl_private=false)
|
|
52
|
+
__mock_proxy.null_object? ? true : super
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# @private
|
|
56
|
+
def __build_mock_proxy_unless_expired(order_group)
|
|
57
|
+
__raise_expired_error || __build_mock_proxy(order_group)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# @private
|
|
61
|
+
def __disallow_further_usage!
|
|
62
|
+
@__expired = true
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Override for default freeze implementation to prevent freezing of test
|
|
66
|
+
# doubles.
|
|
67
|
+
def freeze
|
|
68
|
+
RSpec.warn_with("WARNING: you attempted to freeze a test double. This is explicitly a no-op as freezing doubles can lead to undesired behaviour when resetting tests.")
|
|
69
|
+
self
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
private
|
|
73
|
+
|
|
74
|
+
def method_missing(message, *args, &block)
|
|
75
|
+
proxy = __mock_proxy
|
|
76
|
+
proxy.record_message_received(message, *args, &block)
|
|
77
|
+
|
|
78
|
+
if proxy.null_object?
|
|
79
|
+
case message
|
|
80
|
+
when :to_int then return 0
|
|
81
|
+
when :to_a, :to_ary then return nil
|
|
82
|
+
when :to_str then return to_s
|
|
83
|
+
else return self
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Defined private and protected methods will still trigger `method_missing`
|
|
88
|
+
# when called publicly. We want ruby's method visibility error to get raised,
|
|
89
|
+
# so we simply delegate to `super` in that case.
|
|
90
|
+
# ...well, we would delegate to `super`, but there's a JRuby
|
|
91
|
+
# bug, so we raise our own visibility error instead:
|
|
92
|
+
# https://github.com/jruby/jruby/issues/1398
|
|
93
|
+
visibility = proxy.visibility_for(message)
|
|
94
|
+
if visibility == :private || visibility == :protected
|
|
95
|
+
ErrorGenerator.new(self).raise_non_public_error(
|
|
96
|
+
message, visibility
|
|
97
|
+
)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Required wrapping doubles in an Array on Ruby 1.9.2
|
|
101
|
+
raise NoMethodError if [:to_a, :to_ary].include? message
|
|
102
|
+
proxy.raise_unexpected_message_error(message, args)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def assign_stubs(stubs)
|
|
106
|
+
stubs.each_pair do |message, response|
|
|
107
|
+
__mock_proxy.add_simple_stub(message, response)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def __mock_proxy
|
|
112
|
+
::RSpec::Mocks.space.proxy_for(self)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def __build_mock_proxy(order_group)
|
|
116
|
+
TestDoubleProxy.new(self, order_group)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def __raise_expired_error
|
|
120
|
+
return false unless @__expired
|
|
121
|
+
ErrorGenerator.new(self).raise_expired_test_double_error
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def initialize_copy(other)
|
|
125
|
+
as_null_object if other.null_object?
|
|
126
|
+
super
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
# A generic test double object. `double`, `instance_double` and friends
|
|
131
|
+
# return an instance of this.
|
|
132
|
+
class Double
|
|
133
|
+
include TestDouble
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# @private
|
|
137
|
+
module TestDoubleFormatter
|
|
138
|
+
def self.format(dbl, unwrap=false)
|
|
139
|
+
format = "#{type_desc(dbl)}#{verified_module_desc(dbl)} #{name_desc(dbl)}"
|
|
140
|
+
return format if unwrap
|
|
141
|
+
"#<#{format}>"
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
class << self
|
|
145
|
+
private
|
|
146
|
+
|
|
147
|
+
def type_desc(dbl)
|
|
148
|
+
case dbl
|
|
149
|
+
when InstanceVerifyingDouble then "InstanceDouble"
|
|
150
|
+
when ClassVerifyingDouble then "ClassDouble"
|
|
151
|
+
when ObjectVerifyingDouble then "ObjectDouble"
|
|
152
|
+
else "Double"
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
# @private
|
|
157
|
+
IVAR_GET = Object.instance_method(:instance_variable_get)
|
|
158
|
+
|
|
159
|
+
def verified_module_desc(dbl)
|
|
160
|
+
return nil unless VerifyingDouble === dbl
|
|
161
|
+
"(#{IVAR_GET.bind(dbl).call(:@doubled_module).description})"
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def name_desc(dbl)
|
|
165
|
+
return "(anonymous)" unless (name = IVAR_GET.bind(dbl).call(:@name))
|
|
166
|
+
name.inspect
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
RSpec::Support.require_rspec_mocks 'verifying_proxy'
|
|
2
|
+
|
|
3
|
+
module RSpec
|
|
4
|
+
module Mocks
|
|
5
|
+
# @private
|
|
6
|
+
module VerifyingDouble
|
|
7
|
+
def respond_to?(message, include_private=false)
|
|
8
|
+
return super unless null_object?
|
|
9
|
+
|
|
10
|
+
method_ref = __mock_proxy.method_reference[message]
|
|
11
|
+
|
|
12
|
+
case method_ref.visibility
|
|
13
|
+
when :public then true
|
|
14
|
+
when :private then include_private
|
|
15
|
+
when :protected then include_private || RUBY_VERSION.to_f < 2.0
|
|
16
|
+
else !method_ref.unimplemented?
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def method_missing(message, *args, &block)
|
|
21
|
+
# Null object conditional is an optimization. If not a null object,
|
|
22
|
+
# validity of method expectations will have been checked at definition
|
|
23
|
+
# time.
|
|
24
|
+
if null_object?
|
|
25
|
+
if @__sending_message == message
|
|
26
|
+
__mock_proxy.ensure_implemented(message)
|
|
27
|
+
else
|
|
28
|
+
__mock_proxy.ensure_publicly_implemented(message, self)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
__mock_proxy.validate_arguments!(message, args)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
super
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Redefining `__send__` causes ruby to issue a warning.
|
|
38
|
+
old, $VERBOSE = $VERBOSE, nil
|
|
39
|
+
def __send__(name, *args, &block)
|
|
40
|
+
@__sending_message = name
|
|
41
|
+
super
|
|
42
|
+
ensure
|
|
43
|
+
@__sending_message = nil
|
|
44
|
+
end
|
|
45
|
+
$VERBOSE = old
|
|
46
|
+
|
|
47
|
+
def send(name, *args, &block)
|
|
48
|
+
__send__(name, *args, &block)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def initialize(doubled_module, *args)
|
|
52
|
+
@doubled_module = doubled_module
|
|
53
|
+
|
|
54
|
+
possible_name = args.first
|
|
55
|
+
name = if String === possible_name || Symbol === possible_name
|
|
56
|
+
args.shift
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
super(name, *args)
|
|
60
|
+
@__sending_message = nil
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# A mock providing a custom proxy that can verify the validity of any
|
|
65
|
+
# method stubs or expectations against the public instance methods of the
|
|
66
|
+
# given class.
|
|
67
|
+
#
|
|
68
|
+
# @private
|
|
69
|
+
class InstanceVerifyingDouble
|
|
70
|
+
include TestDouble
|
|
71
|
+
include VerifyingDouble
|
|
72
|
+
|
|
73
|
+
def __build_mock_proxy(order_group)
|
|
74
|
+
VerifyingProxy.new(self, order_group,
|
|
75
|
+
@doubled_module,
|
|
76
|
+
InstanceMethodReference
|
|
77
|
+
)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# An awkward module necessary because we cannot otherwise have
|
|
82
|
+
# ClassVerifyingDouble inherit from Module and still share these methods.
|
|
83
|
+
#
|
|
84
|
+
# @private
|
|
85
|
+
module ObjectVerifyingDoubleMethods
|
|
86
|
+
include TestDouble
|
|
87
|
+
include VerifyingDouble
|
|
88
|
+
|
|
89
|
+
def as_stubbed_const(options={})
|
|
90
|
+
ConstantMutator.stub(@doubled_module.const_to_replace, self, options)
|
|
91
|
+
self
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
private
|
|
95
|
+
|
|
96
|
+
def __build_mock_proxy(order_group)
|
|
97
|
+
VerifyingProxy.new(self, order_group,
|
|
98
|
+
@doubled_module,
|
|
99
|
+
ObjectMethodReference
|
|
100
|
+
)
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Similar to an InstanceVerifyingDouble, except that it verifies against
|
|
105
|
+
# public methods of the given object.
|
|
106
|
+
#
|
|
107
|
+
# @private
|
|
108
|
+
class ObjectVerifyingDouble
|
|
109
|
+
include ObjectVerifyingDoubleMethods
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Effectively the same as an ObjectVerifyingDouble (since a class is a type
|
|
113
|
+
# of object), except with Module in the inheritance chain so that
|
|
114
|
+
# transferring nested constants to work.
|
|
115
|
+
#
|
|
116
|
+
# @private
|
|
117
|
+
class ClassVerifyingDouble < Module
|
|
118
|
+
include ObjectVerifyingDoubleMethods
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
RSpec::Support.require_rspec_support 'method_signature_verifier'
|
|
2
|
+
|
|
3
|
+
module RSpec
|
|
4
|
+
module Mocks
|
|
5
|
+
# A message expectation that knows about the real implementation of the
|
|
6
|
+
# message being expected, so that it can verify that any expectations
|
|
7
|
+
# have the valid arguments.
|
|
8
|
+
# @api private
|
|
9
|
+
class VerifyingMessageExpectation < MessageExpectation
|
|
10
|
+
# A level of indirection is used here rather than just passing in the
|
|
11
|
+
# method itself, since method look up is expensive and we only want to
|
|
12
|
+
# do it if actually needed.
|
|
13
|
+
#
|
|
14
|
+
# Conceptually the method reference makes more sense as a constructor
|
|
15
|
+
# argument since it should be immutable, but it is significantly more
|
|
16
|
+
# straight forward to build the object in pieces so for now it stays as
|
|
17
|
+
# an accessor.
|
|
18
|
+
attr_accessor :method_reference
|
|
19
|
+
|
|
20
|
+
def initialize(*args)
|
|
21
|
+
super
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# @private
|
|
25
|
+
def with(*args, &block)
|
|
26
|
+
super(*args, &block).tap do
|
|
27
|
+
validate_expected_arguments! do |signature|
|
|
28
|
+
example_call_site_args = [:an_arg] * signature.min_non_kw_args
|
|
29
|
+
example_call_site_args << :kw_args_hash if signature.required_kw_args.any?
|
|
30
|
+
@argument_list_matcher.resolve_expected_args_based_on(example_call_site_args)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
ruby2_keywords(:with) if respond_to?(:ruby2_keywords, true)
|
|
35
|
+
|
|
36
|
+
private
|
|
37
|
+
|
|
38
|
+
def validate_expected_arguments!
|
|
39
|
+
return if method_reference.nil?
|
|
40
|
+
|
|
41
|
+
method_reference.with_signature do |signature|
|
|
42
|
+
args = yield signature
|
|
43
|
+
verifier = Support::LooseSignatureVerifier.new(signature, args)
|
|
44
|
+
|
|
45
|
+
unless verifier.valid?
|
|
46
|
+
# Fail fast is required, otherwise the message expectation will fail
|
|
47
|
+
# as well ("expected method not called") and clobber this one.
|
|
48
|
+
@failed_fast = true
|
|
49
|
+
@error_generator.raise_invalid_arguments_error(verifier)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
RSpec::Support.require_rspec_mocks 'verifying_message_expectation'
|
|
2
|
+
RSpec::Support.require_rspec_mocks 'method_reference'
|
|
3
|
+
|
|
4
|
+
module RSpec
|
|
5
|
+
module Mocks
|
|
6
|
+
# @private
|
|
7
|
+
class CallbackInvocationStrategy
|
|
8
|
+
def call(doubled_module)
|
|
9
|
+
RSpec::Mocks.configuration.verifying_double_callbacks.each do |block|
|
|
10
|
+
block.call doubled_module
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# @private
|
|
16
|
+
class NoCallbackInvocationStrategy
|
|
17
|
+
def call(_doubled_module)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @private
|
|
22
|
+
module VerifyingProxyMethods
|
|
23
|
+
def add_stub(method_name, opts={}, &implementation)
|
|
24
|
+
ensure_implemented(method_name)
|
|
25
|
+
super
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def add_simple_stub(method_name, *args)
|
|
29
|
+
ensure_implemented(method_name)
|
|
30
|
+
super
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def add_message_expectation(method_name, opts={}, &block)
|
|
34
|
+
ensure_implemented(method_name)
|
|
35
|
+
super
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def ensure_implemented(method_name)
|
|
39
|
+
return unless method_reference[method_name].unimplemented?
|
|
40
|
+
|
|
41
|
+
@error_generator.raise_unimplemented_error(
|
|
42
|
+
@doubled_module,
|
|
43
|
+
method_name,
|
|
44
|
+
@object
|
|
45
|
+
)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def ensure_publicly_implemented(method_name, _object)
|
|
49
|
+
ensure_implemented(method_name)
|
|
50
|
+
visibility = method_reference[method_name].visibility
|
|
51
|
+
|
|
52
|
+
return if visibility == :public
|
|
53
|
+
@error_generator.raise_non_public_error(method_name, visibility)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# A verifying proxy mostly acts like a normal proxy, except that it
|
|
58
|
+
# contains extra logic to try and determine the validity of any expectation
|
|
59
|
+
# set on it. This includes whether or not methods have been defined and the
|
|
60
|
+
# validatiy of arguments on method calls.
|
|
61
|
+
#
|
|
62
|
+
# In all other ways this behaves like a normal proxy. It only adds the
|
|
63
|
+
# verification behaviour to specific methods then delegates to the parent
|
|
64
|
+
# implementation.
|
|
65
|
+
#
|
|
66
|
+
# These checks are only activated if the doubled class has already been
|
|
67
|
+
# loaded, otherwise they are disabled. This allows for testing in
|
|
68
|
+
# isolation.
|
|
69
|
+
#
|
|
70
|
+
# @private
|
|
71
|
+
class VerifyingProxy < TestDoubleProxy
|
|
72
|
+
include VerifyingProxyMethods
|
|
73
|
+
|
|
74
|
+
def initialize(object, order_group, doubled_module, method_reference_class)
|
|
75
|
+
super(object, order_group)
|
|
76
|
+
@object = object
|
|
77
|
+
@doubled_module = doubled_module
|
|
78
|
+
@method_reference_class = method_reference_class
|
|
79
|
+
|
|
80
|
+
# A custom method double is required to pass through a way to lookup
|
|
81
|
+
# methods to determine their parameters. This is only relevant if the doubled
|
|
82
|
+
# class is loaded.
|
|
83
|
+
@method_doubles = Hash.new do |h, k|
|
|
84
|
+
h[k] = VerifyingMethodDouble.new(@object, k, self, method_reference[k])
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def method_reference
|
|
89
|
+
@method_reference ||= Hash.new do |h, k|
|
|
90
|
+
h[k] = @method_reference_class.for(@doubled_module, k)
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def visibility_for(method_name)
|
|
95
|
+
method_reference[method_name].visibility
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def validate_arguments!(method_name, args)
|
|
99
|
+
@method_doubles[method_name].validate_arguments!(args)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# @private
|
|
104
|
+
DEFAULT_CALLBACK_INVOCATION_STRATEGY = CallbackInvocationStrategy.new
|
|
105
|
+
|
|
106
|
+
# @private
|
|
107
|
+
class VerifyingPartialDoubleProxy < PartialDoubleProxy
|
|
108
|
+
include VerifyingProxyMethods
|
|
109
|
+
|
|
110
|
+
def initialize(object, expectation_ordering, optional_callback_invocation_strategy=DEFAULT_CALLBACK_INVOCATION_STRATEGY)
|
|
111
|
+
super(object, expectation_ordering)
|
|
112
|
+
@doubled_module = DirectObjectReference.new(object)
|
|
113
|
+
|
|
114
|
+
# A custom method double is required to pass through a way to lookup
|
|
115
|
+
# methods to determine their parameters.
|
|
116
|
+
@method_doubles = Hash.new do |h, k|
|
|
117
|
+
h[k] = VerifyingExistingMethodDouble.for(object, k, self)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
optional_callback_invocation_strategy.call(@doubled_module)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def ensure_implemented(_method_name)
|
|
124
|
+
return if Mocks.configuration.temporarily_suppress_partial_double_verification
|
|
125
|
+
super
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def method_reference
|
|
129
|
+
@method_doubles
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# @private
|
|
134
|
+
class VerifyingPartialClassDoubleProxy < VerifyingPartialDoubleProxy
|
|
135
|
+
include PartialClassDoubleProxyMethods
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# @private
|
|
139
|
+
class VerifyingMethodDouble < MethodDouble
|
|
140
|
+
def initialize(object, method_name, proxy, method_reference)
|
|
141
|
+
super(object, method_name, proxy)
|
|
142
|
+
@method_reference = method_reference
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def message_expectation_class
|
|
146
|
+
VerifyingMessageExpectation
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def add_expectation(*args, &block)
|
|
150
|
+
# explict params necessary for 1.8.7 see #626
|
|
151
|
+
super(*args, &block).tap { |x| x.method_reference = @method_reference }
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def add_stub(*args, &block)
|
|
155
|
+
# explict params necessary for 1.8.7 see #626
|
|
156
|
+
super(*args, &block).tap { |x| x.method_reference = @method_reference }
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def proxy_method_invoked(obj, *args, &block)
|
|
160
|
+
validate_arguments!(args)
|
|
161
|
+
super
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def validate_arguments!(actual_args)
|
|
165
|
+
@method_reference.with_signature do |signature|
|
|
166
|
+
verifier = Support::StrictSignatureVerifier.new(signature, actual_args)
|
|
167
|
+
raise ArgumentError, verifier.error_message unless verifier.valid?
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# A VerifyingMethodDouble fetches the method to verify against from the
|
|
173
|
+
# original object, using a MethodReference. This works for pure doubles,
|
|
174
|
+
# but when the original object is itself the one being modified we need to
|
|
175
|
+
# collapse the reference and the method double into a single object so that
|
|
176
|
+
# we can access the original pristine method definition.
|
|
177
|
+
#
|
|
178
|
+
# @private
|
|
179
|
+
class VerifyingExistingMethodDouble < VerifyingMethodDouble
|
|
180
|
+
def initialize(object, method_name, proxy)
|
|
181
|
+
super(object, method_name, proxy, self)
|
|
182
|
+
|
|
183
|
+
@valid_method = object.respond_to?(method_name, true)
|
|
184
|
+
|
|
185
|
+
# Trigger an eager find of the original method since if we find it any
|
|
186
|
+
# later we end up getting a stubbed method with incorrect arity.
|
|
187
|
+
save_original_implementation_callable!
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def with_signature
|
|
191
|
+
yield Support::MethodSignature.new(original_implementation_callable)
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def unimplemented?
|
|
195
|
+
!@valid_method
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def self.for(object, method_name, proxy)
|
|
199
|
+
if ClassNewMethodReference.applies_to?(method_name) { object }
|
|
200
|
+
VerifyingExistingClassNewMethodDouble
|
|
201
|
+
elsif Mocks.configuration.temporarily_suppress_partial_double_verification
|
|
202
|
+
MethodDouble
|
|
203
|
+
else
|
|
204
|
+
self
|
|
205
|
+
end.new(object, method_name, proxy)
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
# Used in place of a `VerifyingExistingMethodDouble` for the specific case
|
|
210
|
+
# of mocking or stubbing a `new` method on a class. In this case, we substitute
|
|
211
|
+
# the method signature from `#initialize` since new's signature is just `*args`.
|
|
212
|
+
#
|
|
213
|
+
# @private
|
|
214
|
+
class VerifyingExistingClassNewMethodDouble < VerifyingExistingMethodDouble
|
|
215
|
+
def with_signature
|
|
216
|
+
yield Support::MethodSignature.new(object.instance_method(:initialize))
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
end
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
require 'rspec/support'
|
|
2
|
+
RSpec::Support.require_rspec_support 'caller_filter'
|
|
3
|
+
RSpec::Support.require_rspec_support 'warnings'
|
|
4
|
+
RSpec::Support.require_rspec_support 'ruby_features'
|
|
5
|
+
|
|
6
|
+
RSpec::Support.define_optimized_require_for_rspec(:mocks) { |f| require_relative f }
|
|
7
|
+
|
|
8
|
+
%w[
|
|
9
|
+
instance_method_stasher
|
|
10
|
+
method_double
|
|
11
|
+
argument_matchers
|
|
12
|
+
example_methods
|
|
13
|
+
proxy
|
|
14
|
+
test_double
|
|
15
|
+
argument_list_matcher
|
|
16
|
+
message_expectation
|
|
17
|
+
order_group
|
|
18
|
+
error_generator
|
|
19
|
+
space
|
|
20
|
+
mutate_const
|
|
21
|
+
targets
|
|
22
|
+
syntax
|
|
23
|
+
configuration
|
|
24
|
+
verifying_double
|
|
25
|
+
version
|
|
26
|
+
].each { |name| RSpec::Support.require_rspec_mocks name }
|
|
27
|
+
|
|
28
|
+
# Share the top-level RSpec namespace, because we are a core supported
|
|
29
|
+
# extension.
|
|
30
|
+
module RSpec
|
|
31
|
+
# Contains top-level utility methods. While this contains a few
|
|
32
|
+
# public methods, these are not generally meant to be called from
|
|
33
|
+
# a test or example. They exist primarily for integration with
|
|
34
|
+
# test frameworks (such as rspec-core).
|
|
35
|
+
module Mocks
|
|
36
|
+
# Performs per-test/example setup. This should be called before
|
|
37
|
+
# an test or example begins.
|
|
38
|
+
def self.setup
|
|
39
|
+
@space_stack << (@space = space.new_scope)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Verifies any message expectations that were set during the
|
|
43
|
+
# test or example. This should be called at the end of an example.
|
|
44
|
+
def self.verify
|
|
45
|
+
space.verify_all
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Cleans up all test double state (including any methods that were
|
|
49
|
+
# redefined on partial doubles). This _must_ be called after
|
|
50
|
+
# each example, even if an error was raised during the example.
|
|
51
|
+
def self.teardown
|
|
52
|
+
space.reset_all
|
|
53
|
+
@space_stack.pop
|
|
54
|
+
@space = @space_stack.last || @root_space
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Adds an allowance (stub) on `subject`
|
|
58
|
+
#
|
|
59
|
+
# @param subject the subject to which the message will be added
|
|
60
|
+
# @param message a symbol, representing the message that will be
|
|
61
|
+
# added.
|
|
62
|
+
# @param opts a hash of options, :expected_from is used to set the
|
|
63
|
+
# original call site
|
|
64
|
+
# @yield an optional implementation for the allowance
|
|
65
|
+
#
|
|
66
|
+
# @example Defines the implementation of `foo` on `bar`, using the passed block
|
|
67
|
+
# x = 0
|
|
68
|
+
# RSpec::Mocks.allow_message(bar, :foo) { x += 1 }
|
|
69
|
+
def self.allow_message(subject, message, opts={}, &block)
|
|
70
|
+
space.proxy_for(subject).add_stub(message, opts, &block)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Sets a message expectation on `subject`.
|
|
74
|
+
# @param subject the subject on which the message will be expected
|
|
75
|
+
# @param message a symbol, representing the message that will be
|
|
76
|
+
# expected.
|
|
77
|
+
# @param opts a hash of options, :expected_from is used to set the
|
|
78
|
+
# original call site
|
|
79
|
+
# @yield an optional implementation for the expectation
|
|
80
|
+
#
|
|
81
|
+
# @example Expect the message `foo` to receive `bar`, then call it
|
|
82
|
+
# RSpec::Mocks.expect_message(bar, :foo)
|
|
83
|
+
# bar.foo
|
|
84
|
+
def self.expect_message(subject, message, opts={}, &block)
|
|
85
|
+
space.proxy_for(subject).add_message_expectation(message, opts, &block)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Call the passed block and verify mocks after it has executed. This allows
|
|
89
|
+
# mock usage in arbitrary places, such as a `before(:all)` hook.
|
|
90
|
+
#
|
|
91
|
+
# @return [Object] the return value from the block
|
|
92
|
+
def self.with_temporary_scope
|
|
93
|
+
setup
|
|
94
|
+
|
|
95
|
+
begin
|
|
96
|
+
result = yield
|
|
97
|
+
verify
|
|
98
|
+
result
|
|
99
|
+
ensure
|
|
100
|
+
teardown
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
class << self
|
|
105
|
+
# @private
|
|
106
|
+
attr_reader :space
|
|
107
|
+
end
|
|
108
|
+
@space_stack = []
|
|
109
|
+
@root_space = @space = RSpec::Mocks::RootSpace.new
|
|
110
|
+
|
|
111
|
+
# @private
|
|
112
|
+
IGNORED_BACKTRACE_LINE = 'this backtrace line is ignored'
|
|
113
|
+
|
|
114
|
+
# To speed up boot time a bit, delay loading optional or rarely
|
|
115
|
+
# used features until their first use.
|
|
116
|
+
autoload :AnyInstance, "rspec/mocks/any_instance"
|
|
117
|
+
autoload :ExpectChain, "rspec/mocks/message_chain"
|
|
118
|
+
autoload :StubChain, "rspec/mocks/message_chain"
|
|
119
|
+
autoload :MarshalExtension, "rspec/mocks/marshal_extension"
|
|
120
|
+
|
|
121
|
+
# Namespace for mock-related matchers.
|
|
122
|
+
module Matchers
|
|
123
|
+
# @private
|
|
124
|
+
# just a "tag" for rspec-mock matchers detection
|
|
125
|
+
module Matcher; end
|
|
126
|
+
|
|
127
|
+
autoload :HaveReceived, "rspec/mocks/matchers/have_received"
|
|
128
|
+
autoload :Receive, "rspec/mocks/matchers/receive"
|
|
129
|
+
autoload :ReceiveMessageChain, "rspec/mocks/matchers/receive_message_chain"
|
|
130
|
+
autoload :ReceiveMessages, "rspec/mocks/matchers/receive_messages"
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|