fucknumber 0.1.3
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/.gitignore +12 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/README.md +36 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/fucknumber.gemspec +29 -0
- data/lib/fucknumber.rb +12 -0
- data/lib/fucknumber/version.rb +3 -0
- data/vendor/bundle/bin/htmldiff +24 -0
- data/vendor/bundle/bin/ldiff +24 -0
- data/vendor/bundle/bin/rake +22 -0
- data/vendor/bundle/bin/rspec +22 -0
- data/vendor/bundle/build_info/diff-lcs-1.3.info +1 -0
- data/vendor/bundle/build_info/rake-10.5.0.info +1 -0
- data/vendor/bundle/build_info/rspec-3.5.0.info +1 -0
- data/vendor/bundle/build_info/rspec-core-3.5.4.info +1 -0
- data/vendor/bundle/build_info/rspec-expectations-3.5.0.info +1 -0
- data/vendor/bundle/build_info/rspec-mocks-3.5.0.info +1 -0
- data/vendor/bundle/build_info/rspec-support-3.5.0.info +1 -0
- data/vendor/bundle/cache/diff-lcs-1.3.gem +0 -0
- data/vendor/bundle/cache/rake-10.5.0.gem +0 -0
- data/vendor/bundle/cache/rspec-3.5.0.gem +0 -0
- data/vendor/bundle/cache/rspec-core-3.5.4.gem +0 -0
- data/vendor/bundle/cache/rspec-expectations-3.5.0.gem +0 -0
- data/vendor/bundle/cache/rspec-mocks-3.5.0.gem +0 -0
- data/vendor/bundle/cache/rspec-support-3.5.0.gem +0 -0
- data/vendor/bundle/gems/diff-lcs-1.3/.rspec +1 -0
- data/vendor/bundle/gems/diff-lcs-1.3/Code-of-Conduct.md +74 -0
- data/vendor/bundle/gems/diff-lcs-1.3/Contributing.md +83 -0
- data/vendor/bundle/gems/diff-lcs-1.3/History.md +220 -0
- data/vendor/bundle/gems/diff-lcs-1.3/License.md +39 -0
- data/vendor/bundle/gems/diff-lcs-1.3/Manifest.txt +37 -0
- data/vendor/bundle/gems/diff-lcs-1.3/README.rdoc +84 -0
- data/vendor/bundle/gems/diff-lcs-1.3/Rakefile +57 -0
- data/vendor/bundle/gems/diff-lcs-1.3/autotest/discover.rb +1 -0
- data/vendor/bundle/gems/diff-lcs-1.3/bin/htmldiff +32 -0
- data/vendor/bundle/gems/diff-lcs-1.3/bin/ldiff +6 -0
- data/vendor/bundle/gems/diff-lcs-1.3/docs/COPYING.txt +339 -0
- data/vendor/bundle/gems/diff-lcs-1.3/docs/artistic.txt +127 -0
- data/vendor/bundle/gems/diff-lcs-1.3/lib/diff-lcs.rb +3 -0
- data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs.rb +725 -0
- data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/array.rb +7 -0
- data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/block.rb +37 -0
- data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/callbacks.rb +322 -0
- data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/change.rb +181 -0
- data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/htmldiff.rb +149 -0
- data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/hunk.rb +276 -0
- data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/internals.rb +307 -0
- data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/ldiff.rb +167 -0
- data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/string.rb +5 -0
- data/vendor/bundle/gems/diff-lcs-1.3/spec/change_spec.rb +65 -0
- data/vendor/bundle/gems/diff-lcs-1.3/spec/diff_spec.rb +47 -0
- data/vendor/bundle/gems/diff-lcs-1.3/spec/fixtures/ds1.csv +50 -0
- data/vendor/bundle/gems/diff-lcs-1.3/spec/fixtures/ds2.csv +51 -0
- data/vendor/bundle/gems/diff-lcs-1.3/spec/hunk_spec.rb +72 -0
- data/vendor/bundle/gems/diff-lcs-1.3/spec/issues_spec.rb +49 -0
- data/vendor/bundle/gems/diff-lcs-1.3/spec/lcs_spec.rb +56 -0
- data/vendor/bundle/gems/diff-lcs-1.3/spec/ldiff_spec.rb +47 -0
- data/vendor/bundle/gems/diff-lcs-1.3/spec/patch_spec.rb +422 -0
- data/vendor/bundle/gems/diff-lcs-1.3/spec/sdiff_spec.rb +214 -0
- data/vendor/bundle/gems/diff-lcs-1.3/spec/spec_helper.rb +321 -0
- data/vendor/bundle/gems/diff-lcs-1.3/spec/traverse_balanced_spec.rb +310 -0
- data/vendor/bundle/gems/diff-lcs-1.3/spec/traverse_sequences_spec.rb +139 -0
- data/vendor/bundle/gems/rake-10.5.0/.autotest +7 -0
- data/vendor/bundle/gems/rake-10.5.0/.rubocop.yml +27 -0
- data/vendor/bundle/gems/rake-10.5.0/.togglerc +7 -0
- data/vendor/bundle/gems/rake-10.5.0/CONTRIBUTING.rdoc +38 -0
- data/vendor/bundle/gems/rake-10.5.0/History.rdoc +659 -0
- data/vendor/bundle/gems/rake-10.5.0/MIT-LICENSE +21 -0
- data/vendor/bundle/gems/rake-10.5.0/Manifest.txt +166 -0
- data/vendor/bundle/gems/rake-10.5.0/README.rdoc +139 -0
- data/vendor/bundle/gems/rake-10.5.0/Rakefile +81 -0
- data/vendor/bundle/gems/rake-10.5.0/bin/rake +33 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/command_line_usage.rdoc +158 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/example/Rakefile1 +38 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/example/Rakefile2 +35 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/example/a.c +6 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/example/b.c +6 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/example/main.c +11 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/glossary.rdoc +42 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/jamis.rb +591 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/proto_rake.rdoc +127 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/rake.1 +141 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/rakefile.rdoc +624 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/rational.rdoc +151 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.4.14.rdoc +23 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.4.15.rdoc +35 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.5.0.rdoc +53 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.5.3.rdoc +78 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.5.4.rdoc +46 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.6.0.rdoc +141 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.7.0.rdoc +119 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.7.1.rdoc +59 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.7.2.rdoc +121 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.7.3.rdoc +47 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.8.0.rdoc +114 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.8.2.rdoc +165 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.8.3.rdoc +112 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.8.4.rdoc +147 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.8.5.rdoc +53 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.8.6.rdoc +37 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.8.7.rdoc +55 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.9.0.rdoc +112 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.9.1.rdoc +52 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.9.2.rdoc +49 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.9.3.rdoc +102 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.9.4.rdoc +60 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.9.5.rdoc +55 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.9.6.rdoc +64 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-10.0.0.rdoc +178 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-10.0.1.rdoc +58 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-10.0.2.rdoc +53 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-10.0.3.rdoc +191 -0
- data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-10.1.0.rdoc +61 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake.rb +79 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/alt_system.rb +110 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/application.rb +790 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/backtrace.rb +23 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/clean.rb +76 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/cloneable.rb +16 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/contrib/.document +1 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/contrib/compositepublisher.rb +21 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/contrib/ftptools.rb +137 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/contrib/publisher.rb +81 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/contrib/rubyforgepublisher.rb +18 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/contrib/sshpublisher.rb +61 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/contrib/sys.rb +4 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/cpu_counter.rb +125 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/default_loader.rb +14 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/dsl_definition.rb +201 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/early_time.rb +21 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/ext/core.rb +25 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/ext/module.rb +2 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/ext/pathname.rb +25 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/ext/string.rb +175 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/ext/time.rb +18 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/file_creation_task.rb +24 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/file_list.rb +428 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/file_task.rb +46 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/file_utils.rb +128 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/file_utils_ext.rb +144 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/gempackagetask.rb +4 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/invocation_chain.rb +56 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/invocation_exception_mixin.rb +16 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/late_time.rb +17 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/linked_list.rb +103 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/loaders/makefile.rb +53 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/multi_task.rb +13 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/name_space.rb +38 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/packagetask.rb +199 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/pathmap.rb +3 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/phony.rb +15 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/private_reader.rb +20 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/promise.rb +99 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/pseudo_status.rb +29 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/rake_module.rb +38 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/rake_test_loader.rb +22 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/rdoctask.rb +4 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/ruby182_test_unit_fix.rb +29 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/runtest.rb +27 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/scope.rb +42 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/task.rb +383 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/task_argument_error.rb +7 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/task_arguments.rb +98 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/task_manager.rb +307 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/tasklib.rb +24 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/testtask.rb +213 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/thread_history_display.rb +48 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/thread_pool.rb +164 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/trace_output.rb +22 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/version.rb +7 -0
- data/vendor/bundle/gems/rake-10.5.0/lib/rake/win32.rb +56 -0
- data/vendor/bundle/gems/rake-10.5.0/rakelib/publish.rake +20 -0
- data/vendor/bundle/gems/rake-10.5.0/rakelib/test_times.rake +25 -0
- data/vendor/bundle/gems/rake-10.5.0/test/file_creation.rb +34 -0
- data/vendor/bundle/gems/rake-10.5.0/test/helper.rb +129 -0
- data/vendor/bundle/gems/rake-10.5.0/test/support/rakefile_definitions.rb +478 -0
- data/vendor/bundle/gems/rake-10.5.0/test/support/ruby_runner.rb +34 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_private_reader.rb +42 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake.rb +40 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_application.rb +643 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_application_options.rb +468 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_backtrace.rb +119 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_clean.rb +61 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_cpu_counter.rb +68 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_definitions.rb +84 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_directory_task.rb +76 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_dsl.rb +40 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_early_time.rb +31 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_extension.rb +59 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_file_creation_task.rb +56 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_file_list.rb +670 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_file_list_path_map.rb +8 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_file_task.rb +197 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_file_utils.rb +314 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_ftp_file.rb +74 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_functional.rb +482 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_invocation_chain.rb +64 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_late_time.rb +18 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_linked_list.rb +84 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_makefile_loader.rb +46 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_multi_task.rb +64 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_name_space.rb +57 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_package_task.rb +79 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_path_map.rb +168 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_path_map_explode.rb +34 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_path_map_partial.rb +18 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_pathname_extensions.rb +15 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_pseudo_status.rb +21 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_rake_test_loader.rb +20 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_reduce_compat.rb +26 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_require.rb +40 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_rules.rb +388 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_scope.rb +44 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_task.rb +393 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_task_argument_parsing.rb +119 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_task_arguments.rb +127 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_task_lib.rb +9 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_task_manager.rb +178 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_task_manager_argument_resolution.rb +19 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_task_with_arguments.rb +172 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_test_task.rb +146 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_thread_pool.rb +145 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_top_level_functions.rb +71 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_rake_win32.rb +72 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_thread_history_display.rb +101 -0
- data/vendor/bundle/gems/rake-10.5.0/test/test_trace_output.rb +52 -0
- data/vendor/bundle/gems/rspec-3.5.0/LICENSE.md +27 -0
- data/vendor/bundle/gems/rspec-3.5.0/README.md +39 -0
- data/vendor/bundle/gems/rspec-3.5.0/lib/rspec.rb +3 -0
- data/vendor/bundle/gems/rspec-3.5.0/lib/rspec/version.rb +5 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/.document +5 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/.yardopts +8 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/Changelog.md +2102 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/LICENSE.md +26 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/README.md +384 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/exe/rspec +4 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/autorun.rb +3 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core.rb +185 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/backtrace_formatter.rb +65 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/bisect/coordinator.rb +66 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/bisect/example_minimizer.rb +169 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/bisect/runner.rb +169 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/bisect/server.rb +65 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb +2100 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/configuration_options.rb +194 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/drb.rb +111 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/dsl.rb +98 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/example.rb +649 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb +879 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/example_status_persister.rb +235 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/filter_manager.rb +231 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/flat_map.rb +20 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters.rb +255 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/base_formatter.rb +70 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/base_text_formatter.rb +77 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/bisect_formatter.rb +69 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/bisect_progress_formatter.rb +144 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/console_codes.rb +65 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/documentation_formatter.rb +69 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/exception_presenter.rb +491 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/helpers.rb +110 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/html_formatter.rb +151 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/html_printer.rb +414 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/html_snippet_extractor.rb +116 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/json_formatter.rb +96 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/profile_formatter.rb +68 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/progress_formatter.rb +28 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/protocol.rb +181 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/snippet_extractor.rb +136 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb +624 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/invocations.rb +67 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/memoized_helpers.rb +532 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/metadata.rb +499 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/metadata_filter.rb +243 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/mocking_adapters/null.rb +14 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/mocking_adapters/rr.rb +31 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/notifications.rb +498 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/option_parser.rb +289 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/ordering.rb +158 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/pending.rb +165 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/profiler.rb +32 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/project_initializer.rb +48 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/project_initializer/.rspec +2 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/project_initializer/spec/spec_helper.rb +103 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/rake_task.rb +168 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/reporter.rb +248 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/ruby_project.rb +53 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb +188 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/sandbox.rb +37 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/set.rb +49 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/shared_context.rb +55 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/shared_example_group.rb +247 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/shell_escape.rb +49 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/source.rb +86 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/source/location.rb +13 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/source/node.rb +93 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/source/syntax_highlighter.rb +71 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/source/token.rb +87 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/version.rb +9 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/warnings.rb +40 -0
- data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/world.rb +256 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/.document +5 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/.yardopts +6 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/Changelog.md +1034 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/LICENSE.md +25 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/README.md +303 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations.rb +81 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/configuration.rb +201 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/expectation_target.rb +127 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/fail_with.rb +31 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/failure_aggregator.rb +194 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/handler.rb +170 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/minitest_integration.rb +58 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/syntax.rb +132 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/version.rb +8 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers.rb +1038 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/aliased_matcher.rb +116 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in.rb +52 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/all.rb +85 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/base_matcher.rb +181 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/be.rb +288 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/be_between.rb +77 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/be_instance_of.rb +22 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/be_kind_of.rb +16 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/be_within.rb +72 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/change.rb +354 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/compound.rb +272 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/contain_exactly.rb +286 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/cover.rb +24 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/eq.rb +40 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/eql.rb +34 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/equal.rb +81 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/exist.rb +86 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/has.rb +103 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/include.rb +143 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/match.rb +106 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/operators.rb +128 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/output.rb +200 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/raise_error.rb +230 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/respond_to.rb +165 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/satisfy.rb +37 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/yield.rb +419 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/composable.rb +185 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/dsl.rb +466 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/english_phrasing.rb +58 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +73 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/fail_matchers.rb +42 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/generated_descriptions.rb +42 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/matcher_delegator.rb +35 -0
- data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/matcher_protocol.rb +99 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/.document +5 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/.yardopts +6 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/Changelog.md +1043 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/LICENSE.md +25 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/README.md +445 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks.rb +130 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance.rb +11 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/chain.rb +110 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/expect_chain_chain.rb +35 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/expectation_chain.rb +48 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/proxy.rb +116 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/recorder.rb +289 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/stub_chain.rb +47 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/stub_chain_chain.rb +28 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/argument_list_matcher.rb +100 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/argument_matchers.rb +320 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/configuration.rb +205 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/error_generator.rb +369 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/example_methods.rb +422 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/instance_method_stasher.rb +135 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/marshal_extension.rb +41 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/have_received.rb +130 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/receive.rb +132 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/message_chain.rb +87 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/message_expectation.rb +740 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/method_double.rb +287 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/method_reference.rb +202 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/minitest_integration.rb +68 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/mutate_const.rb +335 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/object_reference.rb +149 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/order_group.rb +81 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/proxy.rb +489 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/space.rb +238 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/standalone.rb +3 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/syntax.rb +325 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/targets.rb +124 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/test_double.rb +170 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/verifying_double.rb +129 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/verifying_message_expectation.rb +54 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/verifying_proxy.rb +213 -0
- data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/version.rb +9 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/Changelog.md +192 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/LICENSE.md +23 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/README.md +40 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support.rb +139 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/caller_filter.rb +83 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/comparable_version.rb +46 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/differ.rb +215 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/directory_maker.rb +63 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/encoded_string.rb +165 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/fuzzy_matcher.rb +48 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/hunk_generator.rb +47 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/matcher_definition.rb +42 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/method_signature_verifier.rb +392 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/mutex.rb +73 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/object_formatter.rb +249 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/recursive_const_methods.rb +76 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/reentrant_mutex.rb +53 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/ruby_features.rb +149 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec.rb +81 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/formatting_support.rb +9 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/in_sub_process.rb +52 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/library_wide_checks.rb +150 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/shell_out.rb +82 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/stderr_splitter.rb +63 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/string_matcher.rb +46 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/version.rb +7 -0
- data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/warnings.rb +39 -0
- data/vendor/bundle/specifications/diff-lcs-1.3.gemspec +61 -0
- data/vendor/bundle/specifications/rake-10.5.0.gemspec +43 -0
- data/vendor/bundle/specifications/rspec-3.5.0.gemspec +42 -0
- data/vendor/bundle/specifications/rspec-core-3.5.4.gemspec +62 -0
- data/vendor/bundle/specifications/rspec-expectations-3.5.0.gemspec +50 -0
- data/vendor/bundle/specifications/rspec-mocks-3.5.0.gemspec +50 -0
- data/vendor/bundle/specifications/rspec-support-3.5.0.gemspec +41 -0
- metadata +534 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
module RSpec
|
|
2
|
+
module Mocks
|
|
3
|
+
# Provides configuration options for rspec-mocks.
|
|
4
|
+
class Configuration
|
|
5
|
+
def initialize
|
|
6
|
+
@allow_message_expectations_on_nil = nil
|
|
7
|
+
@yield_receiver_to_any_instance_implementation_blocks = true
|
|
8
|
+
@verify_doubled_constant_names = false
|
|
9
|
+
@transfer_nested_constants = false
|
|
10
|
+
@verify_partial_doubles = false
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Sets whether RSpec will warn, ignore, or fail a test when
|
|
14
|
+
# expectations are set on nil.
|
|
15
|
+
# By default, when this flag is not set, warning messages are issued when
|
|
16
|
+
# expectations are set on nil. This is to prevent false-positives and to
|
|
17
|
+
# catch potential bugs early on.
|
|
18
|
+
# When set to `true`, warning messages are suppressed.
|
|
19
|
+
# When set to `false`, it will raise an error.
|
|
20
|
+
#
|
|
21
|
+
# @example
|
|
22
|
+
# RSpec.configure do |config|
|
|
23
|
+
# config.mock_with :rspec do |mocks|
|
|
24
|
+
# mocks.allow_message_expectations_on_nil = false
|
|
25
|
+
# end
|
|
26
|
+
# end
|
|
27
|
+
attr_accessor :allow_message_expectations_on_nil
|
|
28
|
+
|
|
29
|
+
def yield_receiver_to_any_instance_implementation_blocks?
|
|
30
|
+
@yield_receiver_to_any_instance_implementation_blocks
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Sets whether or not RSpec will yield the receiving instance of a
|
|
34
|
+
# message to blocks that are used for any_instance stub implementations.
|
|
35
|
+
# When set, the first yielded argument will be the receiving instance.
|
|
36
|
+
# Defaults to `true`.
|
|
37
|
+
#
|
|
38
|
+
# @example
|
|
39
|
+
# RSpec.configure do |rspec|
|
|
40
|
+
# rspec.mock_with :rspec do |mocks|
|
|
41
|
+
# mocks.yield_receiver_to_any_instance_implementation_blocks = false
|
|
42
|
+
# end
|
|
43
|
+
# end
|
|
44
|
+
attr_writer :yield_receiver_to_any_instance_implementation_blocks
|
|
45
|
+
|
|
46
|
+
# Adds `stub` and `should_receive` to the given
|
|
47
|
+
# modules or classes. This is usually only necessary
|
|
48
|
+
# if you application uses some proxy classes that
|
|
49
|
+
# "strip themselves down" to a bare minimum set of
|
|
50
|
+
# methods and remove `stub` and `should_receive` in
|
|
51
|
+
# the process.
|
|
52
|
+
#
|
|
53
|
+
# @example
|
|
54
|
+
# RSpec.configure do |rspec|
|
|
55
|
+
# rspec.mock_with :rspec do |mocks|
|
|
56
|
+
# mocks.add_stub_and_should_receive_to Delegator
|
|
57
|
+
# end
|
|
58
|
+
# end
|
|
59
|
+
#
|
|
60
|
+
def add_stub_and_should_receive_to(*modules)
|
|
61
|
+
modules.each do |mod|
|
|
62
|
+
Syntax.enable_should(mod)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Provides the ability to set either `expect`,
|
|
67
|
+
# `should` or both syntaxes. RSpec uses `expect`
|
|
68
|
+
# syntax by default. This is needed if you want to
|
|
69
|
+
# explicitly enable `should` syntax and/or explicitly
|
|
70
|
+
# disable `expect` syntax.
|
|
71
|
+
#
|
|
72
|
+
# @example
|
|
73
|
+
# RSpec.configure do |rspec|
|
|
74
|
+
# rspec.mock_with :rspec do |mocks|
|
|
75
|
+
# mocks.syntax = [:expect, :should]
|
|
76
|
+
# end
|
|
77
|
+
# end
|
|
78
|
+
#
|
|
79
|
+
def syntax=(*values)
|
|
80
|
+
syntaxes = values.flatten
|
|
81
|
+
if syntaxes.include?(:expect)
|
|
82
|
+
Syntax.enable_expect
|
|
83
|
+
else
|
|
84
|
+
Syntax.disable_expect
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
if syntaxes.include?(:should)
|
|
88
|
+
Syntax.enable_should
|
|
89
|
+
else
|
|
90
|
+
Syntax.disable_should
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# Returns an array with a list of syntaxes
|
|
95
|
+
# that are enabled.
|
|
96
|
+
#
|
|
97
|
+
# @example
|
|
98
|
+
# unless RSpec::Mocks.configuration.syntax.include?(:expect)
|
|
99
|
+
# raise "this RSpec extension gem requires the rspec-mocks `:expect` syntax"
|
|
100
|
+
# end
|
|
101
|
+
#
|
|
102
|
+
def syntax
|
|
103
|
+
syntaxes = []
|
|
104
|
+
syntaxes << :should if Syntax.should_enabled?
|
|
105
|
+
syntaxes << :expect if Syntax.expect_enabled?
|
|
106
|
+
syntaxes
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def verify_doubled_constant_names?
|
|
110
|
+
!!@verify_doubled_constant_names
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# When this is set to true, an error will be raised when
|
|
114
|
+
# `instance_double` or `class_double` is given the name of an undefined
|
|
115
|
+
# constant. You probably only want to set this when running your entire
|
|
116
|
+
# test suite, with all production code loaded. Setting this for an
|
|
117
|
+
# isolated unit test will prevent you from being able to isolate it!
|
|
118
|
+
attr_writer :verify_doubled_constant_names
|
|
119
|
+
|
|
120
|
+
# Provides a way to perform customisations when verifying doubles.
|
|
121
|
+
#
|
|
122
|
+
# @example
|
|
123
|
+
# RSpec::Mocks.configuration.before_verifying_doubles do |ref|
|
|
124
|
+
# ref.some_method!
|
|
125
|
+
# end
|
|
126
|
+
def before_verifying_doubles(&block)
|
|
127
|
+
verifying_double_callbacks << block
|
|
128
|
+
end
|
|
129
|
+
alias :when_declaring_verifying_double :before_verifying_doubles
|
|
130
|
+
|
|
131
|
+
# @api private
|
|
132
|
+
# Returns an array of blocks to call when verifying doubles
|
|
133
|
+
def verifying_double_callbacks
|
|
134
|
+
@verifying_double_callbacks ||= []
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def transfer_nested_constants?
|
|
138
|
+
!!@transfer_nested_constants
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# Sets the default for the `transfer_nested_constants` option when
|
|
142
|
+
# stubbing constants.
|
|
143
|
+
attr_writer :transfer_nested_constants
|
|
144
|
+
|
|
145
|
+
# When set to true, partial mocks will be verified the same as object
|
|
146
|
+
# doubles. Any stubs will have their arguments checked against the original
|
|
147
|
+
# method, and methods that do not exist cannot be stubbed.
|
|
148
|
+
def verify_partial_doubles=(val)
|
|
149
|
+
@verify_partial_doubles = !!val
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def verify_partial_doubles?
|
|
153
|
+
@verify_partial_doubles
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
if ::RSpec.respond_to?(:configuration)
|
|
157
|
+
def color?
|
|
158
|
+
::RSpec.configuration.color_enabled?
|
|
159
|
+
end
|
|
160
|
+
else
|
|
161
|
+
# Indicates whether or not diffs should be colored.
|
|
162
|
+
# Delegates to rspec-core's color option if rspec-core
|
|
163
|
+
# is loaded; otherwise you can set it here.
|
|
164
|
+
attr_writer :color
|
|
165
|
+
|
|
166
|
+
# Indicates whether or not diffs should be colored.
|
|
167
|
+
# Delegates to rspec-core's color option if rspec-core
|
|
168
|
+
# is loaded; otherwise you can set it here.
|
|
169
|
+
def color?
|
|
170
|
+
@color
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
# Monkey-patch `Marshal.dump` to enable dumping of mocked or stubbed
|
|
175
|
+
# objects. By default this will not work since RSpec mocks works by
|
|
176
|
+
# adding singleton methods that cannot be serialized. This patch removes
|
|
177
|
+
# these singleton methods before serialization. Setting to falsey removes
|
|
178
|
+
# the patch.
|
|
179
|
+
#
|
|
180
|
+
# This method is idempotent.
|
|
181
|
+
def patch_marshal_to_support_partial_doubles=(val)
|
|
182
|
+
if val
|
|
183
|
+
RSpec::Mocks::MarshalExtension.patch!
|
|
184
|
+
else
|
|
185
|
+
RSpec::Mocks::MarshalExtension.unpatch!
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
# @api private
|
|
190
|
+
# Resets the configured syntax to the default.
|
|
191
|
+
def reset_syntaxes_to_default
|
|
192
|
+
self.syntax = [:should, :expect]
|
|
193
|
+
RSpec::Mocks::Syntax.warn_about_should!
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
# Mocks specific configuration, as distinct from `RSpec.configuration`
|
|
198
|
+
# which is core RSpec configuration.
|
|
199
|
+
def self.configuration
|
|
200
|
+
@configuration ||= Configuration.new
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
configuration.reset_syntaxes_to_default
|
|
204
|
+
end
|
|
205
|
+
end
|
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
RSpec::Support.require_rspec_support "object_formatter"
|
|
2
|
+
|
|
3
|
+
module RSpec
|
|
4
|
+
module Mocks
|
|
5
|
+
# Raised when a message expectation is not satisfied.
|
|
6
|
+
MockExpectationError = Class.new(Exception)
|
|
7
|
+
|
|
8
|
+
# Raised when a test double is used after it has been torn
|
|
9
|
+
# down (typically at the end of an rspec-core example).
|
|
10
|
+
ExpiredTestDoubleError = Class.new(MockExpectationError)
|
|
11
|
+
|
|
12
|
+
# Raised when doubles or partial doubles are used outside of the per-test lifecycle.
|
|
13
|
+
OutsideOfExampleError = Class.new(StandardError)
|
|
14
|
+
|
|
15
|
+
# Raised when an expectation customization method (e.g. `with`,
|
|
16
|
+
# `and_return`) is called on a message expectation which has already been
|
|
17
|
+
# invoked.
|
|
18
|
+
MockExpectationAlreadyInvokedError = Class.new(Exception)
|
|
19
|
+
|
|
20
|
+
# Raised for situations that RSpec cannot support due to mutations made
|
|
21
|
+
# externally on arguments that RSpec is holding onto to use for later
|
|
22
|
+
# comparisons.
|
|
23
|
+
#
|
|
24
|
+
# @deprecated We no longer raise this error but the constant remains until
|
|
25
|
+
# RSpec 4 for SemVer reasons.
|
|
26
|
+
CannotSupportArgMutationsError = Class.new(StandardError)
|
|
27
|
+
|
|
28
|
+
# @private
|
|
29
|
+
UnsupportedMatcherError = Class.new(StandardError)
|
|
30
|
+
# @private
|
|
31
|
+
NegationUnsupportedError = Class.new(StandardError)
|
|
32
|
+
# @private
|
|
33
|
+
VerifyingDoubleNotDefinedError = Class.new(StandardError)
|
|
34
|
+
|
|
35
|
+
# @private
|
|
36
|
+
class ErrorGenerator
|
|
37
|
+
attr_writer :opts
|
|
38
|
+
|
|
39
|
+
def initialize(target=nil)
|
|
40
|
+
@target = target
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @private
|
|
44
|
+
def opts
|
|
45
|
+
@opts ||= {}
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# @private
|
|
49
|
+
def raise_unexpected_message_error(message, args)
|
|
50
|
+
__raise "#{intro} received unexpected message :#{message} with #{format_args(args)}"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# @private
|
|
54
|
+
def raise_unexpected_message_args_error(expectation, args_for_multiple_calls, source_id=nil)
|
|
55
|
+
__raise error_message(expectation, args_for_multiple_calls), nil, source_id
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# @private
|
|
59
|
+
def raise_missing_default_stub_error(expectation, args_for_multiple_calls)
|
|
60
|
+
message = error_message(expectation, args_for_multiple_calls)
|
|
61
|
+
message << "\n Please stub a default value first if message might be received with other args as well. \n"
|
|
62
|
+
|
|
63
|
+
__raise message
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# @private
|
|
67
|
+
def raise_similar_message_args_error(expectation, args_for_multiple_calls, backtrace_line=nil)
|
|
68
|
+
__raise error_message(expectation, args_for_multiple_calls), backtrace_line
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def default_error_message(expectation, expected_args, actual_args)
|
|
72
|
+
"#{intro} received #{expectation.message.inspect} #{unexpected_arguments_message(expected_args, actual_args)}"
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# rubocop:disable Style/ParameterLists
|
|
76
|
+
# @private
|
|
77
|
+
def raise_expectation_error(message, expected_received_count, argument_list_matcher,
|
|
78
|
+
actual_received_count, expectation_count_type, args,
|
|
79
|
+
backtrace_line=nil, source_id=nil)
|
|
80
|
+
expected_part = expected_part_of_expectation_error(expected_received_count, expectation_count_type, argument_list_matcher)
|
|
81
|
+
received_part = received_part_of_expectation_error(actual_received_count, args)
|
|
82
|
+
__raise "(#{intro(:unwrapped)}).#{message}#{format_args(args)}\n #{expected_part}\n #{received_part}", backtrace_line, source_id
|
|
83
|
+
end
|
|
84
|
+
# rubocop:enable Style/ParameterLists
|
|
85
|
+
|
|
86
|
+
# @private
|
|
87
|
+
def raise_unimplemented_error(doubled_module, method_name, object)
|
|
88
|
+
message = case object
|
|
89
|
+
when InstanceVerifyingDouble
|
|
90
|
+
"the %s class does not implement the instance method: %s" <<
|
|
91
|
+
if ObjectMethodReference.for(doubled_module, method_name).implemented?
|
|
92
|
+
". Perhaps you meant to use `class_double` instead?"
|
|
93
|
+
else
|
|
94
|
+
""
|
|
95
|
+
end
|
|
96
|
+
when ClassVerifyingDouble
|
|
97
|
+
"the %s class does not implement the class method: %s" <<
|
|
98
|
+
if InstanceMethodReference.for(doubled_module, method_name).implemented?
|
|
99
|
+
". Perhaps you meant to use `instance_double` instead?"
|
|
100
|
+
else
|
|
101
|
+
""
|
|
102
|
+
end
|
|
103
|
+
else
|
|
104
|
+
"%s does not implement: %s"
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
__raise message % [doubled_module.description, method_name]
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# @private
|
|
111
|
+
def raise_non_public_error(method_name, visibility)
|
|
112
|
+
raise NoMethodError, "%s method `%s' called on %s" % [
|
|
113
|
+
visibility, method_name, intro
|
|
114
|
+
]
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# @private
|
|
118
|
+
def raise_invalid_arguments_error(verifier)
|
|
119
|
+
__raise verifier.error_message
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# @private
|
|
123
|
+
def raise_expired_test_double_error
|
|
124
|
+
raise ExpiredTestDoubleError,
|
|
125
|
+
"#{intro} was originally created in one example but has leaked into " \
|
|
126
|
+
"another example and can no longer be used. rspec-mocks' doubles are " \
|
|
127
|
+
"designed to only last for one example, and you need to create a new " \
|
|
128
|
+
"one in each example you wish to use it for."
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# @private
|
|
132
|
+
def describe_expectation(verb, message, expected_received_count, _actual_received_count, args)
|
|
133
|
+
"#{verb} #{message}#{format_args(args)} #{count_message(expected_received_count)}"
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# @private
|
|
137
|
+
def raise_out_of_order_error(message)
|
|
138
|
+
__raise "#{intro} received :#{message} out of order"
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# @private
|
|
142
|
+
def raise_missing_block_error(args_to_yield)
|
|
143
|
+
__raise "#{intro} asked to yield |#{arg_list(args_to_yield)}| but no block was passed"
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# @private
|
|
147
|
+
def raise_wrong_arity_error(args_to_yield, signature)
|
|
148
|
+
__raise "#{intro} yielded |#{arg_list(args_to_yield)}| to block with #{signature.description}"
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# @private
|
|
152
|
+
def raise_only_valid_on_a_partial_double(method)
|
|
153
|
+
__raise "#{intro} is a pure test double. `#{method}` is only " \
|
|
154
|
+
"available on a partial double."
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
# @private
|
|
158
|
+
def raise_expectation_on_unstubbed_method(method)
|
|
159
|
+
__raise "#{intro} expected to have received #{method}, but that " \
|
|
160
|
+
"object is not a spy or method has not been stubbed."
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# @private
|
|
164
|
+
def raise_expectation_on_mocked_method(method)
|
|
165
|
+
__raise "#{intro} expected to have received #{method}, but that " \
|
|
166
|
+
"method has been mocked instead of stubbed or spied."
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
# @private
|
|
170
|
+
def raise_double_negation_error(wrapped_expression)
|
|
171
|
+
__raise "Isn't life confusing enough? You've already set a " \
|
|
172
|
+
"negative message expectation and now you are trying to " \
|
|
173
|
+
"negate it again with `never`. What does an expression like " \
|
|
174
|
+
"`#{wrapped_expression}.not_to receive(:msg).never` even mean?"
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# @private
|
|
178
|
+
def raise_verifying_double_not_defined_error(ref)
|
|
179
|
+
notify(VerifyingDoubleNotDefinedError.new(
|
|
180
|
+
"#{ref.description.inspect} is not a defined constant. " \
|
|
181
|
+
"Perhaps you misspelt it? " \
|
|
182
|
+
"Disable check with `verify_doubled_constant_names` configuration option."
|
|
183
|
+
))
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
# @private
|
|
187
|
+
def raise_have_received_disallowed(type, reason)
|
|
188
|
+
__raise "Using #{type}(...) with the `have_received` " \
|
|
189
|
+
"matcher is not supported#{reason}."
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
# @private
|
|
193
|
+
def raise_cant_constrain_count_for_negated_have_received_error(count_constraint)
|
|
194
|
+
__raise "can't use #{count_constraint} when negative"
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
# @private
|
|
198
|
+
def raise_method_not_stubbed_error(method_name)
|
|
199
|
+
__raise "The method `#{method_name}` was not stubbed or was already unstubbed"
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
# @private
|
|
203
|
+
def raise_already_invoked_error(message, calling_customization)
|
|
204
|
+
error_message = "The message expectation for #{intro}.#{message} has already been invoked " \
|
|
205
|
+
"and cannot be modified further (e.g. using `#{calling_customization}`). All message expectation " \
|
|
206
|
+
"customizations must be applied before it is used for the first time."
|
|
207
|
+
|
|
208
|
+
notify MockExpectationAlreadyInvokedError.new(error_message)
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
def raise_expectation_on_nil_error(method_name)
|
|
212
|
+
__raise expectation_on_nil_message(method_name)
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def expectation_on_nil_message(method_name)
|
|
216
|
+
"An expectation of `:#{method_name}` was set on `nil`. " \
|
|
217
|
+
"To allow expectations on `nil` and suppress this message, set `config.allow_message_expectations_on_nil` to `true`. " \
|
|
218
|
+
"To disallow expectations on `nil`, set `config.allow_message_expectations_on_nil` to `false`"
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
# @private
|
|
222
|
+
def intro(unwrapped=false)
|
|
223
|
+
case @target
|
|
224
|
+
when TestDouble then TestDoubleFormatter.format(@target, unwrapped)
|
|
225
|
+
when Class then
|
|
226
|
+
formatted = "#{@target.inspect} (class)"
|
|
227
|
+
return formatted if unwrapped
|
|
228
|
+
"#<#{formatted}>"
|
|
229
|
+
when NilClass then "nil"
|
|
230
|
+
else @target.inspect
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
# @private
|
|
235
|
+
def method_call_args_description(args, generic_prefix=" with arguments: ", matcher_prefix=" with ")
|
|
236
|
+
case args.first
|
|
237
|
+
when ArgumentMatchers::AnyArgsMatcher then "#{matcher_prefix}any arguments"
|
|
238
|
+
when ArgumentMatchers::NoArgsMatcher then "#{matcher_prefix}no arguments"
|
|
239
|
+
else
|
|
240
|
+
if yield
|
|
241
|
+
"#{generic_prefix}#{format_args(args)}"
|
|
242
|
+
else
|
|
243
|
+
""
|
|
244
|
+
end
|
|
245
|
+
end
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
private
|
|
249
|
+
|
|
250
|
+
def received_part_of_expectation_error(actual_received_count, args)
|
|
251
|
+
"received: #{count_message(actual_received_count)}" +
|
|
252
|
+
method_call_args_description(args) do
|
|
253
|
+
actual_received_count > 0 && args.length > 0
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
def expected_part_of_expectation_error(expected_received_count, expectation_count_type, argument_list_matcher)
|
|
258
|
+
"expected: #{count_message(expected_received_count, expectation_count_type)}" +
|
|
259
|
+
method_call_args_description(argument_list_matcher.expected_args) do
|
|
260
|
+
argument_list_matcher.expected_args.length > 0
|
|
261
|
+
end
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
def unexpected_arguments_message(expected_args_string, actual_args_string)
|
|
265
|
+
"with unexpected arguments\n expected: #{expected_args_string}\n got: #{actual_args_string}"
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
def error_message(expectation, args_for_multiple_calls)
|
|
269
|
+
expected_args = format_args(expectation.expected_args)
|
|
270
|
+
actual_args = format_received_args(args_for_multiple_calls)
|
|
271
|
+
message = default_error_message(expectation, expected_args, actual_args)
|
|
272
|
+
|
|
273
|
+
if args_for_multiple_calls.one?
|
|
274
|
+
diff = diff_message(expectation.expected_args, args_for_multiple_calls.first)
|
|
275
|
+
message << "\nDiff:#{diff}" unless diff.strip.empty?
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
message
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
def diff_message(expected_args, actual_args)
|
|
282
|
+
formatted_expected_args = expected_args.map do |x|
|
|
283
|
+
RSpec::Support.rspec_description_for_object(x)
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
formatted_expected_args, actual_args = unpack_string_args(formatted_expected_args, actual_args)
|
|
287
|
+
|
|
288
|
+
differ.diff(actual_args, formatted_expected_args)
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
def unpack_string_args(formatted_expected_args, actual_args)
|
|
292
|
+
if [formatted_expected_args, actual_args].all? { |x| list_of_exactly_one_string?(x) }
|
|
293
|
+
[formatted_expected_args.first, actual_args.first]
|
|
294
|
+
else
|
|
295
|
+
[formatted_expected_args, actual_args]
|
|
296
|
+
end
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
def list_of_exactly_one_string?(args)
|
|
300
|
+
Array === args && args.count == 1 && String === args.first
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
def differ
|
|
304
|
+
RSpec::Support::Differ.new(:color => RSpec::Mocks.configuration.color?)
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
def __raise(message, backtrace_line=nil, source_id=nil)
|
|
308
|
+
message = opts[:message] unless opts[:message].nil?
|
|
309
|
+
exception = RSpec::Mocks::MockExpectationError.new(message)
|
|
310
|
+
prepend_to_backtrace(exception, backtrace_line) if backtrace_line
|
|
311
|
+
notify exception, :source_id => source_id
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
if RSpec::Support::Ruby.jruby?
|
|
315
|
+
def prepend_to_backtrace(exception, line)
|
|
316
|
+
raise exception
|
|
317
|
+
rescue RSpec::Mocks::MockExpectationError => with_backtrace
|
|
318
|
+
with_backtrace.backtrace.unshift(line)
|
|
319
|
+
end
|
|
320
|
+
else
|
|
321
|
+
def prepend_to_backtrace(exception, line)
|
|
322
|
+
exception.set_backtrace(caller.unshift line)
|
|
323
|
+
end
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
def notify(*args)
|
|
327
|
+
RSpec::Support.notify_failure(*args)
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
def format_args(args)
|
|
331
|
+
return "(no args)" if args.empty?
|
|
332
|
+
"(#{arg_list(args)})"
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
def arg_list(args)
|
|
336
|
+
args.map { |arg| RSpec::Support::ObjectFormatter.format(arg) }.join(", ")
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
def format_received_args(args_for_multiple_calls)
|
|
340
|
+
grouped_args(args_for_multiple_calls).map do |args_for_one_call, index|
|
|
341
|
+
"#{format_args(args_for_one_call)}#{group_count(index, args_for_multiple_calls)}"
|
|
342
|
+
end.join("\n ")
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
def count_message(count, expectation_count_type=nil)
|
|
346
|
+
return "at least #{times(count.abs)}" if count < 0 || expectation_count_type == :at_least
|
|
347
|
+
return "at most #{times(count)}" if expectation_count_type == :at_most
|
|
348
|
+
times(count)
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
def times(count)
|
|
352
|
+
"#{count} time#{count == 1 ? '' : 's'}"
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
def grouped_args(args)
|
|
356
|
+
Hash[args.group_by { |x| x }.map { |k, v| [k, v.count] }]
|
|
357
|
+
end
|
|
358
|
+
|
|
359
|
+
def group_count(index, args)
|
|
360
|
+
" (#{times(index)})" if args.size > 1 || index > 1
|
|
361
|
+
end
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
# @private
|
|
365
|
+
def self.error_generator
|
|
366
|
+
@error_generator ||= ErrorGenerator.new
|
|
367
|
+
end
|
|
368
|
+
end
|
|
369
|
+
end
|