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.
Files changed (374) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.ruby-version +1 -0
  4. data/CHANGELOG.md +5 -0
  5. data/CODE_OF_CONDUCT.md +84 -0
  6. data/Gemfile +10 -0
  7. data/Gemfile.lock +35 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +46 -0
  10. data/Rakefile +8 -0
  11. data/lib/pad_character/format_pad_character.rb +6 -0
  12. data/lib/pad_character/version.rb +5 -0
  13. data/lib/pad_character.rb +9 -0
  14. data/pad_character.gemspec +39 -0
  15. data/sig/pad_character.rbs +4 -0
  16. data/vendor/bundle/ruby/2.6.0/bin/htmldiff +29 -0
  17. data/vendor/bundle/ruby/2.6.0/bin/ldiff +29 -0
  18. data/vendor/bundle/ruby/2.6.0/bin/rake +29 -0
  19. data/vendor/bundle/ruby/2.6.0/bin/rspec +29 -0
  20. data/vendor/bundle/ruby/2.6.0/cache/diff-lcs-1.5.0.gem +0 -0
  21. data/vendor/bundle/ruby/2.6.0/cache/rake-13.0.6.gem +0 -0
  22. data/vendor/bundle/ruby/2.6.0/cache/rspec-3.12.0.gem +0 -0
  23. data/vendor/bundle/ruby/2.6.0/cache/rspec-core-3.12.0.gem +0 -0
  24. data/vendor/bundle/ruby/2.6.0/cache/rspec-expectations-3.12.0.gem +0 -0
  25. data/vendor/bundle/ruby/2.6.0/cache/rspec-mocks-3.12.0.gem +0 -0
  26. data/vendor/bundle/ruby/2.6.0/cache/rspec-support-3.12.0.gem +0 -0
  27. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/.rspec +1 -0
  28. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/Code-of-Conduct.md +74 -0
  29. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/Contributing.md +119 -0
  30. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/History.md +400 -0
  31. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/License.md +39 -0
  32. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/Manifest.txt +59 -0
  33. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/README.rdoc +84 -0
  34. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/Rakefile +121 -0
  35. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/bin/htmldiff +35 -0
  36. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/bin/ldiff +9 -0
  37. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/docs/COPYING.txt +339 -0
  38. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/docs/artistic.txt +127 -0
  39. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/array.rb +7 -0
  40. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/backports.rb +9 -0
  41. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/block.rb +37 -0
  42. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/callbacks.rb +325 -0
  43. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/change.rb +174 -0
  44. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/htmldiff.rb +150 -0
  45. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/hunk.rb +358 -0
  46. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/internals.rb +308 -0
  47. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/ldiff.rb +171 -0
  48. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs/string.rb +5 -0
  49. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff/lcs.rb +739 -0
  50. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib/diff-lcs.rb +3 -0
  51. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/change_spec.rb +89 -0
  52. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/diff_spec.rb +51 -0
  53. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/aX +1 -0
  54. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/bXaX +1 -0
  55. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ds1.csv +50 -0
  56. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ds2.csv +51 -0
  57. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff +4 -0
  58. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff-c +7 -0
  59. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff-e +3 -0
  60. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff-f +3 -0
  61. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff-u +5 -0
  62. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef +4 -0
  63. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef-c +15 -0
  64. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef-e +3 -0
  65. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef-f +3 -0
  66. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef-u +9 -0
  67. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef2 +7 -0
  68. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef2-c +20 -0
  69. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef2-d +7 -0
  70. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef2-e +7 -0
  71. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef2-f +7 -0
  72. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/ldiff/output.diff.chef2-u +16 -0
  73. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/new-chef +4 -0
  74. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/new-chef2 +17 -0
  75. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/old-chef +4 -0
  76. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/fixtures/old-chef2 +14 -0
  77. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/hunk_spec.rb +83 -0
  78. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/issues_spec.rb +154 -0
  79. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/lcs_spec.rb +56 -0
  80. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/ldiff_spec.rb +87 -0
  81. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/patch_spec.rb +416 -0
  82. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/sdiff_spec.rb +214 -0
  83. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/spec_helper.rb +374 -0
  84. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/traverse_balanced_spec.rb +310 -0
  85. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/spec/traverse_sequences_spec.rb +137 -0
  86. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/History.rdoc +2403 -0
  87. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/MIT-LICENSE +21 -0
  88. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/README.rdoc +155 -0
  89. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/command_line_usage.rdoc +158 -0
  90. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/example/Rakefile1 +38 -0
  91. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/example/Rakefile2 +35 -0
  92. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/example/a.c +6 -0
  93. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/example/b.c +6 -0
  94. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/example/main.c +11 -0
  95. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/glossary.rdoc +42 -0
  96. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/jamis.rb +592 -0
  97. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/proto_rake.rdoc +127 -0
  98. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/rake.1 +156 -0
  99. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/rakefile.rdoc +622 -0
  100. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/doc/rational.rdoc +151 -0
  101. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/exe/rake +27 -0
  102. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/application.rb +831 -0
  103. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/backtrace.rb +24 -0
  104. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/clean.rb +78 -0
  105. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/cloneable.rb +17 -0
  106. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/cpu_counter.rb +107 -0
  107. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/default_loader.rb +15 -0
  108. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/dsl_definition.rb +195 -0
  109. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/early_time.rb +22 -0
  110. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/ext/core.rb +26 -0
  111. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/ext/string.rb +176 -0
  112. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/file_creation_task.rb +25 -0
  113. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/file_list.rb +435 -0
  114. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/file_task.rb +54 -0
  115. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/file_utils.rb +134 -0
  116. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/file_utils_ext.rb +134 -0
  117. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/invocation_chain.rb +57 -0
  118. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/invocation_exception_mixin.rb +17 -0
  119. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/late_time.rb +18 -0
  120. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/linked_list.rb +112 -0
  121. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/loaders/makefile.rb +54 -0
  122. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/multi_task.rb +14 -0
  123. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/name_space.rb +38 -0
  124. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/packagetask.rb +222 -0
  125. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/phony.rb +16 -0
  126. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/private_reader.rb +21 -0
  127. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/promise.rb +100 -0
  128. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/pseudo_status.rb +30 -0
  129. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/rake_module.rb +67 -0
  130. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/rake_test_loader.rb +27 -0
  131. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/rule_recursion_overflow_error.rb +20 -0
  132. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/scope.rb +43 -0
  133. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/task.rb +434 -0
  134. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/task_argument_error.rb +8 -0
  135. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/task_arguments.rb +109 -0
  136. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/task_manager.rb +331 -0
  137. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/tasklib.rb +12 -0
  138. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/testtask.rb +189 -0
  139. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/thread_history_display.rb +49 -0
  140. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/thread_pool.rb +163 -0
  141. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/trace_output.rb +23 -0
  142. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/version.rb +10 -0
  143. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake/win32.rb +51 -0
  144. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/lib/rake.rb +71 -0
  145. data/vendor/bundle/ruby/2.6.0/gems/rake-13.0.6/rake.gemspec +100 -0
  146. data/vendor/bundle/ruby/2.6.0/gems/rspec-3.12.0/LICENSE.md +27 -0
  147. data/vendor/bundle/ruby/2.6.0/gems/rspec-3.12.0/README.md +47 -0
  148. data/vendor/bundle/ruby/2.6.0/gems/rspec-3.12.0/lib/rspec/version.rb +5 -0
  149. data/vendor/bundle/ruby/2.6.0/gems/rspec-3.12.0/lib/rspec.rb +3 -0
  150. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/.document +5 -0
  151. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/.yardopts +8 -0
  152. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/Changelog.md +2360 -0
  153. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/LICENSE.md +26 -0
  154. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/README.md +384 -0
  155. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/exe/rspec +4 -0
  156. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/autorun.rb +3 -0
  157. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/backtrace_formatter.rb +65 -0
  158. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/bisect/coordinator.rb +62 -0
  159. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/bisect/example_minimizer.rb +173 -0
  160. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/bisect/fork_runner.rb +138 -0
  161. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/bisect/server.rb +61 -0
  162. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/bisect/shell_command.rb +126 -0
  163. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/bisect/shell_runner.rb +73 -0
  164. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/bisect/utilities.rb +69 -0
  165. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/configuration.rb +2385 -0
  166. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/configuration_options.rb +233 -0
  167. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/did_you_mean.rb +46 -0
  168. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/drb.rb +120 -0
  169. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/dsl.rb +98 -0
  170. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/example.rb +666 -0
  171. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/example_group.rb +905 -0
  172. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/example_status_persister.rb +235 -0
  173. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/filter_manager.rb +231 -0
  174. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/flat_map.rb +20 -0
  175. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
  176. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/base_formatter.rb +70 -0
  177. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/base_text_formatter.rb +75 -0
  178. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
  179. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/bisect_progress_formatter.rb +157 -0
  180. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/console_codes.rb +76 -0
  181. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
  182. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/documentation_formatter.rb +102 -0
  183. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/exception_presenter.rb +525 -0
  184. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/failure_list_formatter.rb +23 -0
  185. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
  186. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/helpers.rb +118 -0
  187. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/html_formatter.rb +153 -0
  188. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/html_printer.rb +412 -0
  189. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/html_snippet_extractor.rb +120 -0
  190. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/json_formatter.rb +102 -0
  191. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/profile_formatter.rb +68 -0
  192. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/progress_formatter.rb +29 -0
  193. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/protocol.rb +182 -0
  194. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/snippet_extractor.rb +134 -0
  195. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
  196. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/formatters.rb +279 -0
  197. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/hooks.rb +646 -0
  198. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/invocations.rb +87 -0
  199. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/memoized_helpers.rb +580 -0
  200. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/metadata.rb +498 -0
  201. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/metadata_filter.rb +255 -0
  202. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
  203. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
  204. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
  205. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/mocking_adapters/null.rb +14 -0
  206. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/mocking_adapters/rr.rb +31 -0
  207. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
  208. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/notifications.rb +521 -0
  209. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/option_parser.rb +323 -0
  210. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/ordering.rb +169 -0
  211. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/output_wrapper.rb +29 -0
  212. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/pending.rb +157 -0
  213. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/profiler.rb +34 -0
  214. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/project_initializer/.rspec +1 -0
  215. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/project_initializer/spec/spec_helper.rb +98 -0
  216. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/project_initializer.rb +48 -0
  217. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/rake_task.rb +188 -0
  218. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb +265 -0
  219. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/ruby_project.rb +53 -0
  220. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/runner.rb +212 -0
  221. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/sandbox.rb +37 -0
  222. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/set.rb +54 -0
  223. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/shared_context.rb +55 -0
  224. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/shared_example_group.rb +271 -0
  225. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/shell_escape.rb +49 -0
  226. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
  227. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/version.rb +9 -0
  228. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/warnings.rb +40 -0
  229. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core/world.rb +287 -0
  230. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.0/lib/rspec/core.rb +212 -0
  231. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/.document +5 -0
  232. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/.yardopts +6 -0
  233. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/Changelog.md +1285 -0
  234. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/LICENSE.md +25 -0
  235. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/README.md +320 -0
  236. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
  237. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/configuration.rb +230 -0
  238. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/expectation_target.rb +163 -0
  239. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/fail_with.rb +39 -0
  240. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/failure_aggregator.rb +212 -0
  241. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/handler.rb +182 -0
  242. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/minitest_integration.rb +58 -0
  243. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/syntax.rb +132 -0
  244. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations/version.rb +8 -0
  245. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/expectations.rb +82 -0
  246. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/aliased_matcher.rb +116 -0
  247. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/all.rb +86 -0
  248. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/base_matcher.rb +198 -0
  249. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/be.rb +191 -0
  250. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/be_between.rb +77 -0
  251. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/be_instance_of.rb +26 -0
  252. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/be_kind_of.rb +20 -0
  253. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/be_within.rb +72 -0
  254. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/change.rb +450 -0
  255. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/compound.rb +290 -0
  256. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/contain_exactly.rb +310 -0
  257. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/count_expectation.rb +169 -0
  258. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/cover.rb +24 -0
  259. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/eq.rb +40 -0
  260. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/eql.rb +34 -0
  261. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/equal.rb +81 -0
  262. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/exist.rb +90 -0
  263. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/has.rb +167 -0
  264. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  265. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/include.rb +206 -0
  266. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/match.rb +106 -0
  267. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/operators.rb +128 -0
  268. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/output.rb +207 -0
  269. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/raise_error.rb +271 -0
  270. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/respond_to.rb +200 -0
  271. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/satisfy.rb +60 -0
  272. 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
  273. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/throw_symbol.rb +138 -0
  274. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in/yield.rb +375 -0
  275. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/built_in.rb +53 -0
  276. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/composable.rb +171 -0
  277. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/dsl.rb +544 -0
  278. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/english_phrasing.rb +58 -0
  279. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +82 -0
  280. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/fail_matchers.rb +42 -0
  281. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/generated_descriptions.rb +41 -0
  282. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/matcher_delegator.rb +35 -0
  283. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers/matcher_protocol.rb +105 -0
  284. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.0/lib/rspec/matchers.rb +1044 -0
  285. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/.document +5 -0
  286. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/.yardopts +6 -0
  287. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/Changelog.md +1212 -0
  288. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/LICENSE.md +25 -0
  289. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/README.md +463 -0
  290. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/chain.rb +111 -0
  291. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
  292. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/expect_chain_chain.rb +31 -0
  293. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/expectation_chain.rb +50 -0
  294. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
  295. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/proxy.rb +116 -0
  296. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/recorder.rb +295 -0
  297. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/stub_chain.rb +51 -0
  298. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance/stub_chain_chain.rb +23 -0
  299. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/any_instance.rb +11 -0
  300. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/argument_list_matcher.rb +115 -0
  301. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/argument_matchers.rb +322 -0
  302. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/configuration.rb +212 -0
  303. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/error_generator.rb +380 -0
  304. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/example_methods.rb +434 -0
  305. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/instance_method_stasher.rb +146 -0
  306. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/marshal_extension.rb +41 -0
  307. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
  308. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/matchers/have_received.rb +134 -0
  309. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/matchers/receive.rb +133 -0
  310. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
  311. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
  312. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/message_chain.rb +87 -0
  313. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/message_expectation.rb +820 -0
  314. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/method_double.rb +291 -0
  315. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/method_reference.rb +214 -0
  316. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/minitest_integration.rb +68 -0
  317. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/mutate_const.rb +339 -0
  318. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/object_reference.rb +149 -0
  319. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/order_group.rb +81 -0
  320. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/proxy.rb +525 -0
  321. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/space.rb +238 -0
  322. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/standalone.rb +3 -0
  323. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/syntax.rb +325 -0
  324. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/targets.rb +124 -0
  325. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/test_double.rb +171 -0
  326. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/verifying_double.rb +121 -0
  327. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/verifying_message_expectation.rb +55 -0
  328. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/verifying_proxy.rb +220 -0
  329. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks/version.rb +9 -0
  330. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.0/lib/rspec/mocks.rb +133 -0
  331. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/Changelog.md +364 -0
  332. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/LICENSE.md +23 -0
  333. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/README.md +40 -0
  334. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/caller_filter.rb +83 -0
  335. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/comparable_version.rb +46 -0
  336. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/differ.rb +215 -0
  337. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/directory_maker.rb +63 -0
  338. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/encoded_string.rb +161 -0
  339. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/fuzzy_matcher.rb +48 -0
  340. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/hunk_generator.rb +47 -0
  341. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/matcher_definition.rb +42 -0
  342. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/method_signature_verifier.rb +438 -0
  343. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/mutex.rb +73 -0
  344. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/object_formatter.rb +275 -0
  345. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/recursive_const_methods.rb +76 -0
  346. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/reentrant_mutex.rb +78 -0
  347. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/ruby_features.rb +198 -0
  348. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/source/location.rb +21 -0
  349. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/source/node.rb +110 -0
  350. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/source/token.rb +94 -0
  351. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/source.rb +85 -0
  352. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/deprecation_helpers.rb +48 -0
  353. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/diff_helpers.rb +31 -0
  354. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/formatting_support.rb +9 -0
  355. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/in_sub_process.rb +67 -0
  356. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/library_wide_checks.rb +150 -0
  357. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/shell_out.rb +105 -0
  358. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/stderr_splitter.rb +75 -0
  359. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/string_matcher.rb +45 -0
  360. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
  361. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
  362. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/spec.rb +82 -0
  363. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/version.rb +7 -0
  364. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/warnings.rb +39 -0
  365. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support/with_keywords_when_needed.rb +33 -0
  366. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.0/lib/rspec/support.rb +154 -0
  367. data/vendor/bundle/ruby/2.6.0/specifications/diff-lcs-1.5.0.gemspec +50 -0
  368. data/vendor/bundle/ruby/2.6.0/specifications/rake-13.0.6.gemspec +26 -0
  369. data/vendor/bundle/ruby/2.6.0/specifications/rspec-3.12.0.gemspec +39 -0
  370. data/vendor/bundle/ruby/2.6.0/specifications/rspec-core-3.12.0.gemspec +53 -0
  371. data/vendor/bundle/ruby/2.6.0/specifications/rspec-expectations-3.12.0.gemspec +44 -0
  372. data/vendor/bundle/ruby/2.6.0/specifications/rspec-mocks-3.12.0.gemspec +44 -0
  373. data/vendor/bundle/ruby/2.6.0/specifications/rspec-support-3.12.0.gemspec +36 -0
  374. metadata +419 -0
@@ -0,0 +1,905 @@
1
+ RSpec::Support.require_rspec_support 'recursive_const_methods'
2
+
3
+ module RSpec
4
+ module Core
5
+ # rubocop:disable Metrics/ClassLength
6
+
7
+ # ExampleGroup and {Example} are the main structural elements of
8
+ # rspec-core. Consider this example:
9
+ #
10
+ # RSpec.describe Thing do
11
+ # it "does something" do
12
+ # end
13
+ # end
14
+ #
15
+ # The object returned by `describe Thing` is a subclass of ExampleGroup.
16
+ # The object returned by `it "does something"` is an instance of Example,
17
+ # which serves as a wrapper for an instance of the ExampleGroup in which it
18
+ # is declared.
19
+ #
20
+ # Example group bodies (e.g. `describe` or `context` blocks) are evaluated
21
+ # in the context of a new subclass of ExampleGroup. Individual examples are
22
+ # evaluated in the context of an instance of the specific ExampleGroup
23
+ # subclass to which they belong.
24
+ #
25
+ # Besides the class methods defined here, there are other interesting macros
26
+ # defined in {Hooks}, {MemoizedHelpers::ClassMethods} and
27
+ # {SharedExampleGroup}. There are additional instance methods available to
28
+ # your examples defined in {MemoizedHelpers} and {Pending}.
29
+ class ExampleGroup
30
+ extend Hooks
31
+
32
+ include MemoizedHelpers
33
+ extend MemoizedHelpers::ClassMethods
34
+ include Pending
35
+ extend SharedExampleGroup
36
+
37
+ # Define a singleton method for the singleton class (remove the method if
38
+ # it's already been defined).
39
+ # @private
40
+ def self.idempotently_define_singleton_method(name, &definition)
41
+ (class << self; self; end).module_exec do
42
+ remove_method(name) if method_defined?(name) && instance_method(name).owner == self
43
+ define_method(name, &definition)
44
+ end
45
+ end
46
+
47
+ # @!group Metadata
48
+
49
+ # The [Metadata](Metadata) object associated with this group.
50
+ # @see Metadata
51
+ def self.metadata
52
+ @metadata ||= nil
53
+ end
54
+
55
+ # Temporarily replace the provided metadata.
56
+ # Intended primarily to allow an example group's singleton class
57
+ # to return the metadata of the example that it exists for. This
58
+ # is necessary for shared example group inclusion to work properly
59
+ # with singleton example groups.
60
+ # @private
61
+ def self.with_replaced_metadata(meta)
62
+ orig_metadata = metadata
63
+ @metadata = meta
64
+ yield
65
+ ensure
66
+ @metadata = orig_metadata
67
+ end
68
+
69
+ # @private
70
+ # @return [Metadata] belonging to the parent of a nested {ExampleGroup}
71
+ def self.superclass_metadata
72
+ @superclass_metadata ||= superclass.respond_to?(:metadata) ? superclass.metadata : nil
73
+ end
74
+
75
+ # @private
76
+ def self.delegate_to_metadata(*names)
77
+ names.each do |name|
78
+ idempotently_define_singleton_method(name) { metadata.fetch(name) }
79
+ end
80
+ end
81
+
82
+ delegate_to_metadata :described_class, :file_path, :location
83
+
84
+ # @return [String] the current example group description
85
+ def self.description
86
+ description = metadata[:description]
87
+ RSpec.configuration.format_docstrings_block.call(description)
88
+ end
89
+
90
+ # Returns the class or module passed to the `describe` method (or alias).
91
+ # Returns nil if the subject is not a class or module.
92
+ # @example
93
+ # RSpec.describe Thing do
94
+ # it "does something" do
95
+ # described_class == Thing
96
+ # end
97
+ # end
98
+ #
99
+ def described_class
100
+ self.class.described_class
101
+ end
102
+
103
+ # @!endgroup
104
+
105
+ # @!group Defining Examples
106
+
107
+ # @private
108
+ # @macro [attach] define_example_method
109
+ # @!scope class
110
+ # @method $1
111
+ # @overload $1
112
+ # @overload $1(&example_implementation)
113
+ # @param example_implementation [Block] The implementation of the example.
114
+ # @overload $1(doc_string, *metadata)
115
+ # @param doc_string [String] The example's doc string.
116
+ # @param metadata [Array<Symbol>, Hash] Metadata for the example.
117
+ # Symbols will be transformed into hash entries with `true` values.
118
+ # @overload $1(doc_string, *metadata, &example_implementation)
119
+ # @param doc_string [String] The example's doc string.
120
+ # @param metadata [Array<Symbol>, Hash] Metadata for the example.
121
+ # Symbols will be transformed into hash entries with `true` values.
122
+ # @param example_implementation [Block] The implementation of the example.
123
+ # @yield [Example] the example object
124
+ # @example
125
+ # $1 do
126
+ # end
127
+ #
128
+ # $1 "does something" do
129
+ # end
130
+ #
131
+ # $1 "does something", :slow, :uses_js do
132
+ # end
133
+ #
134
+ # $1 "does something", :with => 'additional metadata' do
135
+ # end
136
+ #
137
+ # $1 "does something" do |ex|
138
+ # # ex is the Example object that contains metadata about the example
139
+ # end
140
+ #
141
+ # @example
142
+ # $1 "does something", :slow, :load_factor => 100 do
143
+ # end
144
+ #
145
+ def self.define_example_method(name, extra_options={})
146
+ idempotently_define_singleton_method(name) do |*all_args, &block|
147
+ desc, *args = *all_args
148
+
149
+ options = Metadata.build_hash_from(args)
150
+ options.update(:skip => RSpec::Core::Pending::NOT_YET_IMPLEMENTED) unless block
151
+ options.update(extra_options)
152
+
153
+ RSpec::Core::Example.new(self, desc, options, block)
154
+ end
155
+ end
156
+
157
+ # Defines an example within a group.
158
+ define_example_method :example
159
+ # Defines an example within a group.
160
+ # This is the primary API to define a code example.
161
+ define_example_method :it
162
+ # Defines an example within a group.
163
+ # Useful for when your docstring does not read well off of `it`.
164
+ # @example
165
+ # RSpec.describe MyClass do
166
+ # specify "#do_something is deprecated" do
167
+ # # ...
168
+ # end
169
+ # end
170
+ define_example_method :specify
171
+
172
+ # Shortcut to define an example with `:focus => true`.
173
+ # @see example
174
+ define_example_method :focus, :focus => true
175
+ # Shortcut to define an example with `:focus => true`.
176
+ # @see example
177
+ define_example_method :fexample, :focus => true
178
+ # Shortcut to define an example with `:focus => true`.
179
+ # @see example
180
+ define_example_method :fit, :focus => true
181
+ # Shortcut to define an example with `:focus => true`.
182
+ # @see example
183
+ define_example_method :fspecify, :focus => true
184
+ # Shortcut to define an example with `:skip => 'Temporarily skipped with xexample'`.
185
+ # @see example
186
+ define_example_method :xexample, :skip => 'Temporarily skipped with xexample'
187
+ # Shortcut to define an example with `:skip => 'Temporarily skipped with xit'`.
188
+ # @see example
189
+ define_example_method :xit, :skip => 'Temporarily skipped with xit'
190
+ # Shortcut to define an example with `:skip => 'Temporarily skipped with xspecify'`.
191
+ # @see example
192
+ define_example_method :xspecify, :skip => 'Temporarily skipped with xspecify'
193
+ # Shortcut to define an example with `:skip => true`
194
+ # @see example
195
+ define_example_method :skip, :skip => true
196
+ # Shortcut to define an example with `:pending => true`
197
+ # @see example
198
+ define_example_method :pending, :pending => true
199
+
200
+ # @!endgroup
201
+
202
+ # @!group Defining Example Groups
203
+
204
+ # @private
205
+ # @macro [attach] define_example_group_method
206
+ # @!scope class
207
+ # @overload $1
208
+ # @overload $1(&example_group_definition)
209
+ # @param example_group_definition [Block] The definition of the example group.
210
+ # @overload $1(doc_string, *metadata, &example_implementation)
211
+ # @param doc_string [String] The group's doc string.
212
+ # @param metadata [Array<Symbol>, Hash] Metadata for the group.
213
+ # Symbols will be transformed into hash entries with `true` values.
214
+ # @param example_group_definition [Block] The definition of the example group.
215
+ #
216
+ # Generates a subclass of this example group which inherits
217
+ # everything except the examples themselves.
218
+ #
219
+ # @example
220
+ #
221
+ # RSpec.describe "something" do # << This describe method is defined in
222
+ # # << RSpec::Core::DSL, included in the
223
+ # # << global namespace (optional)
224
+ # before do
225
+ # do_something_before
226
+ # end
227
+ #
228
+ # before(:example, :clean_env) do
229
+ # env.clear!
230
+ # end
231
+ #
232
+ # let(:thing) { Thing.new }
233
+ #
234
+ # $1 "attribute (of something)" do
235
+ # # examples in the group get the before hook
236
+ # # declared above, and can access `thing`
237
+ # end
238
+ #
239
+ # $1 "needs additional setup", :clean_env, :implementation => JSON do
240
+ # # specifies that hooks with matching metadata
241
+ # # should be be run additionally
242
+ # end
243
+ # end
244
+ #
245
+ # @see DSL#describe
246
+ def self.define_example_group_method(name, metadata={})
247
+ idempotently_define_singleton_method(name) do |*args, &example_group_block|
248
+ thread_data = RSpec::Support.thread_local_data
249
+ top_level = self == ExampleGroup
250
+
251
+ registration_collection =
252
+ if top_level
253
+ if thread_data[:in_example_group]
254
+ raise "Creating an isolated context from within a context is " \
255
+ "not allowed. Change `RSpec.#{name}` to `#{name}` or " \
256
+ "move this to a top-level scope."
257
+ end
258
+
259
+ thread_data[:in_example_group] = true
260
+ RSpec.world.example_groups
261
+ else
262
+ children
263
+ end
264
+
265
+ begin
266
+ description = args.shift
267
+ combined_metadata = metadata.dup
268
+ combined_metadata.merge!(args.pop) if args.last.is_a? Hash
269
+ args << combined_metadata
270
+
271
+ subclass(self, description, args, registration_collection, &example_group_block)
272
+ ensure
273
+ thread_data.delete(:in_example_group) if top_level
274
+ end
275
+ end
276
+
277
+ RSpec::Core::DSL.expose_example_group_alias(name)
278
+ end
279
+
280
+ define_example_group_method :example_group
281
+
282
+ # An alias of `example_group`. Generally used when grouping examples by a
283
+ # thing you are describing (e.g. an object, class or method).
284
+ # @see example_group
285
+ define_example_group_method :describe
286
+
287
+ # An alias of `example_group`. Generally used when grouping examples
288
+ # contextually (e.g. "with xyz", "when xyz" or "if xyz").
289
+ # @see example_group
290
+ define_example_group_method :context
291
+
292
+ # Shortcut to temporarily make an example group skipped.
293
+ # @see example_group
294
+ define_example_group_method :xdescribe, :skip => "Temporarily skipped with xdescribe"
295
+
296
+ # Shortcut to temporarily make an example group skipped.
297
+ # @see example_group
298
+ define_example_group_method :xcontext, :skip => "Temporarily skipped with xcontext"
299
+
300
+ # Shortcut to define an example group with `:focus => true`.
301
+ # @see example_group
302
+ define_example_group_method :fdescribe, :focus => true
303
+
304
+ # Shortcut to define an example group with `:focus => true`.
305
+ # @see example_group
306
+ define_example_group_method :fcontext, :focus => true
307
+
308
+ # @!endgroup
309
+
310
+ # @!group Including Shared Example Groups
311
+
312
+ # @private
313
+ # @macro [attach] define_nested_shared_group_method
314
+ # @!scope class
315
+ #
316
+ # @see SharedExampleGroup
317
+ def self.define_nested_shared_group_method(new_name, report_label="it should behave like")
318
+ idempotently_define_singleton_method(new_name) do |name, *args, &customization_block|
319
+ # Pass :caller so the :location metadata is set properly.
320
+ # Otherwise, it'll be set to the next line because that's
321
+ # the block's source_location.
322
+ group = example_group("#{report_label} #{name}", :caller => (the_caller = caller)) do
323
+ find_and_eval_shared("examples", name, the_caller.first, *args, &customization_block)
324
+ end
325
+ group.metadata[:shared_group_name] = name
326
+ group
327
+ end
328
+ end
329
+
330
+ # Generates a nested example group and includes the shared content
331
+ # mapped to `name` in the nested group.
332
+ define_nested_shared_group_method :it_behaves_like, "behaves like"
333
+ # Generates a nested example group and includes the shared content
334
+ # mapped to `name` in the nested group.
335
+ define_nested_shared_group_method :it_should_behave_like
336
+
337
+ # Includes shared content mapped to `name` directly in the group in which
338
+ # it is declared, as opposed to `it_behaves_like`, which creates a nested
339
+ # group. If given a block, that block is also eval'd in the current
340
+ # context.
341
+ #
342
+ # @see SharedExampleGroup
343
+ def self.include_context(name, *args, &block)
344
+ find_and_eval_shared("context", name, caller.first, *args, &block)
345
+ end
346
+
347
+ # Includes shared content mapped to `name` directly in the group in which
348
+ # it is declared, as opposed to `it_behaves_like`, which creates a nested
349
+ # group. If given a block, that block is also eval'd in the current
350
+ # context.
351
+ #
352
+ # @see SharedExampleGroup
353
+ def self.include_examples(name, *args, &block)
354
+ find_and_eval_shared("examples", name, caller.first, *args, &block)
355
+ end
356
+
357
+ # Clear memoized values when adding/removing examples
358
+ # @private
359
+ def self.reset_memoized
360
+ @descendant_filtered_examples = nil
361
+ @_descendants = nil
362
+ @parent_groups = nil
363
+ @declaration_locations = nil
364
+ end
365
+
366
+ # Adds an example to the example group
367
+ def self.add_example(example)
368
+ reset_memoized
369
+ examples << example
370
+ end
371
+
372
+ # Removes an example from the example group
373
+ def self.remove_example(example)
374
+ reset_memoized
375
+ examples.delete example
376
+ end
377
+
378
+ # @private
379
+ def self.find_and_eval_shared(label, name, inclusion_location, *args, &customization_block)
380
+ shared_module = RSpec.world.shared_example_group_registry.find(parent_groups, name)
381
+
382
+ unless shared_module
383
+ raise ArgumentError, "Could not find shared #{label} #{name.inspect}"
384
+ end
385
+
386
+ shared_module.include_in(
387
+ self, Metadata.relative_path(inclusion_location),
388
+ args, customization_block
389
+ )
390
+ end
391
+
392
+ # @!endgroup
393
+
394
+ # @private
395
+ def self.subclass(parent, description, args, registration_collection, &example_group_block)
396
+ subclass = Class.new(parent)
397
+ subclass.set_it_up(description, args, registration_collection, &example_group_block)
398
+ subclass.module_exec(&example_group_block) if example_group_block
399
+
400
+ # The LetDefinitions module must be included _after_ other modules
401
+ # to ensure that it takes precedence when there are name collisions.
402
+ # Thus, we delay including it until after the example group block
403
+ # has been eval'd.
404
+ MemoizedHelpers.define_helpers_on(subclass)
405
+
406
+ subclass
407
+ end
408
+
409
+ # @private
410
+ def self.set_it_up(description, args, registration_collection, &example_group_block)
411
+ # Ruby 1.9 has a bug that can lead to infinite recursion and a
412
+ # SystemStackError if you include a module in a superclass after
413
+ # including it in a subclass: https://gist.github.com/845896
414
+ # To prevent this, we must include any modules in
415
+ # RSpec::Core::ExampleGroup before users create example groups and have
416
+ # a chance to include the same module in a subclass of
417
+ # RSpec::Core::ExampleGroup. So we need to configure example groups
418
+ # here.
419
+ ensure_example_groups_are_configured
420
+
421
+ # Register the example with the group before creating the metadata hash.
422
+ # This is necessary since creating the metadata hash triggers
423
+ # `when_first_matching_example_defined` callbacks, in which users can
424
+ # load RSpec support code which defines hooks. For that to work, the
425
+ # examples and example groups must be registered at the time the
426
+ # support code is called or be defined afterwards.
427
+ # Begin defined beforehand but registered afterwards causes hooks to
428
+ # not be applied where they should.
429
+ registration_collection << self
430
+
431
+ @user_metadata = Metadata.build_hash_from(args)
432
+
433
+ @metadata = Metadata::ExampleGroupHash.create(
434
+ superclass_metadata, @user_metadata,
435
+ superclass.method(:next_runnable_index_for),
436
+ description, *args, &example_group_block
437
+ )
438
+
439
+ config = RSpec.configuration
440
+ config.apply_derived_metadata_to(@metadata)
441
+
442
+ ExampleGroups.assign_const(self)
443
+
444
+ @currently_executing_a_context_hook = false
445
+
446
+ config.configure_group(self)
447
+ end
448
+
449
+ # @private
450
+ def self.examples
451
+ @examples ||= []
452
+ end
453
+
454
+ # @private
455
+ def self.filtered_examples
456
+ RSpec.world.filtered_examples[self]
457
+ end
458
+
459
+ # @private
460
+ def self.descendant_filtered_examples
461
+ @descendant_filtered_examples ||= filtered_examples +
462
+ FlatMap.flat_map(children, &:descendant_filtered_examples)
463
+ end
464
+
465
+ # @private
466
+ def self.children
467
+ @children ||= []
468
+ end
469
+
470
+ # @private
471
+ # Traverses the tree of groups, starting with `self`, then the children, recursively.
472
+ # Halts the traversal of a branch of the tree as soon as the passed block returns true.
473
+ # Note that siblings groups and their sub-trees will continue to be explored.
474
+ # This is intended to make it easy to find the top-most group that satisfies some
475
+ # condition.
476
+ def self.traverse_tree_until(&block)
477
+ return if yield self
478
+
479
+ children.each do |child|
480
+ child.traverse_tree_until(&block)
481
+ end
482
+ end
483
+
484
+ # @private
485
+ def self.next_runnable_index_for(file)
486
+ if self == ExampleGroup
487
+ # We add 1 so the ids start at 1 instead of 0. This is
488
+ # necessary for this branch (but not for the other one)
489
+ # because we register examples and groups with the
490
+ # `children` and `examples` collection BEFORE this
491
+ # method is called as part of metadata hash creation,
492
+ # but the example group is recorded with
493
+ # `RSpec.world.example_group_counts_by_spec_file` AFTER
494
+ # the metadata hash is created and the group is returned
495
+ # to the caller.
496
+ RSpec.world.num_example_groups_defined_in(file) + 1
497
+ else
498
+ children.count + examples.count
499
+ end
500
+ end
501
+
502
+ # @private
503
+ def self.descendants
504
+ @_descendants ||= [self] + FlatMap.flat_map(children, &:descendants)
505
+ end
506
+
507
+ ## @private
508
+ def self.parent_groups
509
+ @parent_groups ||= ancestors.select { |a| a < RSpec::Core::ExampleGroup }
510
+ end
511
+
512
+ # @private
513
+ def self.top_level?
514
+ superclass == ExampleGroup
515
+ end
516
+
517
+ # @private
518
+ def self.ensure_example_groups_are_configured
519
+ unless defined?(@@example_groups_configured)
520
+ RSpec.configuration.configure_mock_framework
521
+ RSpec.configuration.configure_expectation_framework
522
+ # rubocop:disable Style/ClassVars
523
+ @@example_groups_configured = true
524
+ # rubocop:enable Style/ClassVars
525
+ end
526
+ end
527
+
528
+ # @private
529
+ def self.before_context_ivars
530
+ @before_context_ivars ||= {}
531
+ end
532
+
533
+ # @private
534
+ def self.store_before_context_ivars(example_group_instance)
535
+ each_instance_variable_for_example(example_group_instance) do |ivar|
536
+ before_context_ivars[ivar] = example_group_instance.instance_variable_get(ivar)
537
+ end
538
+ end
539
+
540
+ # Returns true if a `before(:context)` or `after(:context)`
541
+ # hook is currently executing.
542
+ def self.currently_executing_a_context_hook?
543
+ @currently_executing_a_context_hook
544
+ end
545
+
546
+ # @private
547
+ def self.run_before_context_hooks(example_group_instance)
548
+ set_ivars(example_group_instance, superclass_before_context_ivars)
549
+
550
+ @currently_executing_a_context_hook = true
551
+
552
+ ContextHookMemoized::Before.isolate_for_context_hook(example_group_instance) do
553
+ hooks.run(:before, :context, example_group_instance)
554
+ end
555
+ ensure
556
+ store_before_context_ivars(example_group_instance)
557
+ @currently_executing_a_context_hook = false
558
+ end
559
+
560
+ if RUBY_VERSION.to_f >= 1.9
561
+ # @private
562
+ def self.superclass_before_context_ivars
563
+ superclass.before_context_ivars
564
+ end
565
+ else # 1.8.7
566
+ # :nocov:
567
+ # @private
568
+ def self.superclass_before_context_ivars
569
+ if superclass.respond_to?(:before_context_ivars)
570
+ superclass.before_context_ivars
571
+ else
572
+ # `self` must be the singleton class of an ExampleGroup instance.
573
+ # On 1.8.7, the superclass of a singleton class of an instance of A
574
+ # is A's singleton class. On 1.9+, it's A. On 1.8.7, the first ancestor
575
+ # is A, so we can mirror 1.8.7's behavior here. Note that we have to
576
+ # search for the first that responds to `before_context_ivars`
577
+ # in case a module has been included in the singleton class.
578
+ ancestors.find { |a| a.respond_to?(:before_context_ivars) }.before_context_ivars
579
+ end
580
+ end
581
+ # :nocov:
582
+ end
583
+
584
+ # @private
585
+ def self.run_after_context_hooks(example_group_instance)
586
+ set_ivars(example_group_instance, before_context_ivars)
587
+
588
+ @currently_executing_a_context_hook = true
589
+
590
+ ContextHookMemoized::After.isolate_for_context_hook(example_group_instance) do
591
+ hooks.run(:after, :context, example_group_instance)
592
+ end
593
+ ensure
594
+ before_context_ivars.clear
595
+ @currently_executing_a_context_hook = false
596
+ end
597
+
598
+ # Runs all the examples in this group.
599
+ def self.run(reporter=RSpec::Core::NullReporter)
600
+ return if RSpec.world.wants_to_quit
601
+ reporter.example_group_started(self)
602
+
603
+ should_run_context_hooks = descendant_filtered_examples.any?
604
+ begin
605
+ RSpec.current_scope = :before_context_hook
606
+ run_before_context_hooks(new('before(:context) hook')) if should_run_context_hooks
607
+ result_for_this_group = run_examples(reporter)
608
+ results_for_descendants = ordering_strategy.order(children).map { |child| child.run(reporter) }.all?
609
+ result_for_this_group && results_for_descendants
610
+ rescue Pending::SkipDeclaredInExample => ex
611
+ for_filtered_examples(reporter) { |example| example.skip_with_exception(reporter, ex) }
612
+ true
613
+ rescue Support::AllExceptionsExceptOnesWeMustNotRescue => ex
614
+ for_filtered_examples(reporter) { |example| example.fail_with_exception(reporter, ex) }
615
+ RSpec.world.wants_to_quit = true if reporter.fail_fast_limit_met?
616
+ false
617
+ ensure
618
+ RSpec.current_scope = :after_context_hook
619
+ run_after_context_hooks(new('after(:context) hook')) if should_run_context_hooks
620
+ reporter.example_group_finished(self)
621
+ end
622
+ end
623
+
624
+ # @private
625
+ def self.ordering_strategy
626
+ order = metadata.fetch(:order, :global)
627
+ registry = RSpec.configuration.ordering_registry
628
+
629
+ registry.fetch(order) do
630
+ warn <<-WARNING.gsub(/^ +\|/, '')
631
+ |WARNING: Ignoring unknown ordering specified using `:order => #{order.inspect}` metadata.
632
+ | Falling back to configured global ordering.
633
+ | Unrecognized ordering specified at: #{location}
634
+ WARNING
635
+
636
+ registry.fetch(:global)
637
+ end
638
+ end
639
+
640
+ # @private
641
+ def self.run_examples(reporter)
642
+ ordering_strategy.order(filtered_examples).map do |example|
643
+ next if RSpec.world.wants_to_quit
644
+ instance = new(example.inspect_output)
645
+ set_ivars(instance, before_context_ivars)
646
+ succeeded = example.run(instance, reporter)
647
+ if !succeeded && reporter.fail_fast_limit_met?
648
+ RSpec.world.wants_to_quit = true
649
+ end
650
+ succeeded
651
+ end.all?
652
+ end
653
+
654
+ # @private
655
+ def self.for_filtered_examples(reporter, &block)
656
+ filtered_examples.each(&block)
657
+
658
+ children.each do |child|
659
+ reporter.example_group_started(child)
660
+ child.for_filtered_examples(reporter, &block)
661
+ reporter.example_group_finished(child)
662
+ end
663
+ false
664
+ end
665
+
666
+ # @private
667
+ def self.declaration_locations
668
+ @declaration_locations ||= [Metadata.location_tuple_from(metadata)] +
669
+ examples.map { |e| Metadata.location_tuple_from(e.metadata) } +
670
+ FlatMap.flat_map(children, &:declaration_locations)
671
+ end
672
+
673
+ # @return [String] the unique id of this example group. Pass
674
+ # this at the command line to re-run this exact example group.
675
+ def self.id
676
+ Metadata.id_from(metadata)
677
+ end
678
+
679
+ # @private
680
+ def self.top_level_description
681
+ parent_groups.last.description
682
+ end
683
+
684
+ # @private
685
+ def self.set_ivars(instance, ivars)
686
+ ivars.each { |name, value| instance.instance_variable_set(name, value) }
687
+ end
688
+
689
+ if RUBY_VERSION.to_f < 1.9
690
+ # :nocov:
691
+ # @private
692
+ INSTANCE_VARIABLE_TO_IGNORE = '@__inspect_output'.freeze
693
+ # :nocov:
694
+ else
695
+ # @private
696
+ INSTANCE_VARIABLE_TO_IGNORE = :@__inspect_output
697
+ end
698
+
699
+ # @private
700
+ def self.each_instance_variable_for_example(group)
701
+ group.instance_variables.each do |ivar|
702
+ yield ivar unless ivar == INSTANCE_VARIABLE_TO_IGNORE
703
+ end
704
+ end
705
+
706
+ # @private
707
+ def initialize(inspect_output=nil)
708
+ @__inspect_output = inspect_output || '(no description provided)'
709
+ super() # no args get passed
710
+ end
711
+
712
+ # @private
713
+ def inspect
714
+ "#<#{self.class} #{@__inspect_output}>"
715
+ end
716
+
717
+ unless method_defined?(:singleton_class) # for 1.8.7
718
+ # :nocov:
719
+ # @private
720
+ def singleton_class
721
+ class << self; self; end
722
+ end
723
+ # :nocov:
724
+ end
725
+
726
+ # @private
727
+ def self.update_inherited_metadata(updates)
728
+ metadata.update(updates) do |key, existing_group_value, new_inherited_value|
729
+ @user_metadata.key?(key) ? existing_group_value : new_inherited_value
730
+ end
731
+
732
+ RSpec.configuration.configure_group(self)
733
+ examples.each { |ex| ex.update_inherited_metadata(updates) }
734
+ children.each { |group| group.update_inherited_metadata(updates) }
735
+ end
736
+
737
+ # Raised when an RSpec API is called in the wrong scope, such as `before`
738
+ # being called from within an example rather than from within an example
739
+ # group block.
740
+ WrongScopeError = Class.new(NoMethodError)
741
+
742
+ def self.method_missing(name, *args)
743
+ if method_defined?(name)
744
+ raise WrongScopeError,
745
+ "`#{name}` is not available on an example group (e.g. a " \
746
+ "`describe` or `context` block). It is only available from " \
747
+ "within individual examples (e.g. `it` blocks) or from " \
748
+ "constructs that run in the scope of an example (e.g. " \
749
+ "`before`, `let`, etc)."
750
+ end
751
+
752
+ super
753
+ end
754
+ private_class_method :method_missing
755
+
756
+ private
757
+
758
+ def method_missing(name, *args)
759
+ if self.class.respond_to?(name)
760
+ raise WrongScopeError,
761
+ "`#{name}` is not available from within an example (e.g. an " \
762
+ "`it` block) or from constructs that run in the scope of an " \
763
+ "example (e.g. `before`, `let`, etc). It is only available " \
764
+ "on an example group (e.g. a `describe` or `context` block)."
765
+ end
766
+
767
+ super(name, *args)
768
+ end
769
+ ruby2_keywords :method_missing if respond_to?(:ruby2_keywords, true)
770
+ end
771
+ # rubocop:enable Metrics/ClassLength
772
+
773
+ # @private
774
+ # Unnamed example group used by `SuiteHookContext`.
775
+ class AnonymousExampleGroup < ExampleGroup
776
+ def self.metadata
777
+ {}
778
+ end
779
+ end
780
+
781
+ # Contains information about the inclusion site of a shared example group.
782
+ class SharedExampleGroupInclusionStackFrame
783
+ # @return [String] the name of the shared example group
784
+ attr_reader :shared_group_name
785
+ # @return [String] the location where the shared example was included
786
+ attr_reader :inclusion_location
787
+
788
+ # @private
789
+ def initialize(shared_group_name, inclusion_location)
790
+ @shared_group_name = shared_group_name
791
+ @inclusion_location = inclusion_location
792
+ end
793
+
794
+ # @return [String] The {#inclusion_location}, formatted for display by a formatter.
795
+ def formatted_inclusion_location
796
+ @formatted_inclusion_location ||= begin
797
+ RSpec.configuration.backtrace_formatter.backtrace_line(
798
+ inclusion_location.sub(/(:\d+):in .+$/, '\1')
799
+ )
800
+ end
801
+ end
802
+
803
+ # @return [String] Description of this stack frame, in the form used by
804
+ # RSpec's built-in formatters.
805
+ def description
806
+ @description ||= "Shared Example Group: #{shared_group_name.inspect} " \
807
+ "called from #{formatted_inclusion_location}"
808
+ end
809
+
810
+ # @private
811
+ def self.current_backtrace
812
+ shared_example_group_inclusions.reverse
813
+ end
814
+
815
+ # @private
816
+ def self.with_frame(name, location)
817
+ current_stack = shared_example_group_inclusions
818
+ if current_stack.any? { |frame| frame.shared_group_name == name }
819
+ raise ArgumentError, "can't include shared examples recursively"
820
+ else
821
+ current_stack << new(name, location)
822
+ yield
823
+ end
824
+ ensure
825
+ current_stack.pop
826
+ end
827
+
828
+ # @private
829
+ def self.shared_example_group_inclusions
830
+ RSpec::Support.thread_local_data[:shared_example_group_inclusions] ||= []
831
+ end
832
+ end
833
+ end
834
+
835
+ # @private
836
+ #
837
+ # Namespace for the example group subclasses generated by top-level
838
+ # `describe`.
839
+ module ExampleGroups
840
+ extend Support::RecursiveConstMethods
841
+
842
+ def self.assign_const(group)
843
+ base_name = base_name_for(group)
844
+ const_scope = constant_scope_for(group)
845
+ name = disambiguate(base_name, const_scope)
846
+
847
+ const_scope.const_set(name, group)
848
+ end
849
+
850
+ def self.constant_scope_for(group)
851
+ const_scope = group.superclass
852
+ const_scope = self if const_scope == ::RSpec::Core::ExampleGroup
853
+ const_scope
854
+ end
855
+
856
+ def self.remove_all_constants
857
+ constants.each do |constant|
858
+ __send__(:remove_const, constant)
859
+ end
860
+ end
861
+
862
+ def self.base_name_for(group)
863
+ return "Anonymous".dup if group.description.empty?
864
+
865
+ # Convert to CamelCase.
866
+ name = ' ' + group.description
867
+ name.gsub!(/[^0-9a-zA-Z]+([0-9a-zA-Z])/) do
868
+ match = ::Regexp.last_match[1]
869
+ match.upcase!
870
+ match
871
+ end
872
+
873
+ name.lstrip! # Remove leading whitespace
874
+ name.gsub!(/\W/, ''.freeze) # JRuby, RBX and others don't like non-ascii in const names
875
+
876
+ # Ruby requires first const letter to be A-Z. Use `Nested`
877
+ # as necessary to enforce that.
878
+ name.gsub!(/\A([^A-Z]|\z)/, 'Nested\1'.freeze)
879
+
880
+ name
881
+ end
882
+
883
+ if RUBY_VERSION == '1.9.2'
884
+ # :nocov:
885
+ class << self
886
+ alias _base_name_for base_name_for
887
+ def base_name_for(group)
888
+ _base_name_for(group) + '_'
889
+ end
890
+ end
891
+ private_class_method :_base_name_for
892
+ # :nocov:
893
+ end
894
+
895
+ def self.disambiguate(name, const_scope)
896
+ return name unless const_defined_on?(const_scope, name)
897
+
898
+ # Add a trailing number if needed to disambiguate from an existing
899
+ # constant.
900
+ name << "_2"
901
+ name.next! while const_defined_on?(const_scope, name)
902
+ name
903
+ end
904
+ end
905
+ end