eac_tools 0.99.1 → 0.100.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 (294) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +55 -27
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/lib/eac_tools.rb +17 -0
  5. data/sub/avm/avm.gemspec +3 -3
  6. data/sub/avm/lib/avm/rspec/setup.rb +1 -0
  7. data/sub/avm/lib/avm/version.rb +1 -1
  8. data/sub/avm-eac_ruby_base1/Gemfile +8 -0
  9. data/sub/avm-eac_ruby_base1/avm-eac_ruby_base1.gemspec +22 -0
  10. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb +54 -0
  11. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/dependency.rb +17 -0
  12. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile.rb +32 -0
  13. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/depends_on.rb +22 -0
  14. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/gem_conflict.rb +41 -0
  15. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/in_gemfile.rb +14 -0
  16. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb +73 -0
  17. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_factory.rb +26 -0
  18. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_parser_base.rb +17 -0
  19. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/ruby_requirement.rb +13 -0
  20. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/version_requirement.rb +23 -0
  21. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser.rb +23 -0
  22. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/file_formats/base/file_resource_name.rb +44 -0
  23. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/file_formats/base.rb +21 -0
  24. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/instances/mixin.rb +17 -0
  25. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher/gem/build.rb +120 -0
  26. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher/gem/specification.rb +61 -0
  27. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base/local_project_mixin.rb +24 -0
  28. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base/publish.rb +122 -0
  29. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base.rb +33 -0
  30. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/preferred_version_requirements.rb +40 -0
  31. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rspec/setup.rb +15 -0
  32. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rspec/source_generator.rb +20 -0
  33. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rspec.rb +9 -0
  34. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop/configured.rb +29 -0
  35. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop/envvar.rb +15 -0
  36. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop/gemfile.rb +39 -0
  37. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop.rb +52 -0
  38. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/gemspec/add_or_replace_gem_line.rb +69 -0
  39. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/gemspec/dependency.rb +23 -0
  40. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/gemspec.rb +57 -0
  41. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/remote.rb +33 -0
  42. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/version_file.rb +43 -0
  43. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems.rb +9 -0
  44. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners/base/lib_rename.rb +74 -0
  45. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners/base/rubocop.rb +27 -0
  46. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners/base.rb +16 -0
  47. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners.rb +9 -0
  48. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/dependencies.rb +59 -0
  49. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/gemfile_lock.rb +23 -0
  50. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/options.rb +32 -0
  51. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/root_module.rb +35 -0
  52. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/version_builder.rb +58 -0
  53. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base.rb +83 -0
  54. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/bundle_command.rb +35 -0
  55. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/bundler.rb +64 -0
  56. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/rake.rb +39 -0
  57. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/rubocop.rb +23 -0
  58. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/rubocop_command.rb +70 -0
  59. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/rubygems.rb +40 -0
  60. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/update.rb +21 -0
  61. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/version.rb +29 -0
  62. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/version_bump.rb +16 -0
  63. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base.rb +58 -0
  64. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/bundle_update.rb +21 -0
  65. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/gemfile_local/sibling.rb +51 -0
  66. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/gemfile_local.rb +67 -0
  67. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/namespace_replacer.rb +55 -0
  68. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundle.rb +26 -0
  69. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_local.rb +57 -0
  70. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_lock/git.rb +58 -0
  71. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_lock.rb +87 -0
  72. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler/incompatible.rb +73 -0
  73. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler.rb +17 -0
  74. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/update_dependencies_requirements.rb +67 -0
  75. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners.rb +11 -0
  76. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/base.rb +55 -0
  77. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/minitest.rb +27 -0
  78. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/multiple/decorated_gem.rb +50 -0
  79. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/multiple/result.rb +29 -0
  80. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/multiple.rb +86 -0
  81. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/rspec.rb +23 -0
  82. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/update/sub_update.rb +57 -0
  83. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/update_dependency_requirements.rb +63 -0
  84. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/version.rb +7 -0
  85. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1.rb +14 -0
  86. data/sub/avm-eac_ruby_base1/locale/en.yml +9 -0
  87. data/sub/avm-eac_ruby_base1/locale/pt-BR.yml +9 -0
  88. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec.rb +5 -0
  89. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/1.source.out +192 -0
  90. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/1.target.yaml +300 -0
  91. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/2.source.out +245 -0
  92. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/2.target.yaml +355 -0
  93. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/3.source.out +0 -0
  94. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/3.target.yaml +305 -0
  95. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec.rb +13 -0
  96. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files/Gemfile.source +6 -0
  97. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files/Gemfile.target +3 -0
  98. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files/ruby_code.rb.source +6 -0
  99. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files/ruby_code.rb.target +5 -0
  100. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/launcher/gem/build_spec.rb +43 -0
  101. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/launcher/gem/specification_spec.rb +57 -0
  102. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/launcher_stereotypes/base/publish_spec.rb +25 -0
  103. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/launcher_stereotypes/base_spec.rb +21 -0
  104. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/preferred_version_requirements_spec.rb +21 -0
  105. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec.rb +35 -0
  106. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec_files/changes1.source.yaml +5 -0
  107. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec_files/changes1.target.txt +15 -0
  108. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec_files/the_gem.gemspec +15 -0
  109. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/version_file_spec.rb +13 -0
  110. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/version_file_spec_files/a_version_file.rb +7 -0
  111. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec.rb +33 -0
  112. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir1/dir3/Gemfile +5 -0
  113. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir1/dir3/Gemfile.lock +27 -0
  114. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir2/empty.rb +1 -0
  115. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir4/false_command.rb +4 -0
  116. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec.rb +16 -0
  117. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/Gemfile +8 -0
  118. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/Gemfile.lock +1 -0
  119. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/_gitignore +2 -0
  120. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/dashed-mygem.gemspec +19 -0
  121. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/lib/dashed/mygem/version.rb +7 -0
  122. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/lib/dashed/mygem.rb +9 -0
  123. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/spec/rubocop_spec.rb +3 -0
  124. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/spec/spec_helper.rb +5 -0
  125. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/Gemfile +8 -0
  126. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/Gemfile.lock +1 -0
  127. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/_gitignore +2 -0
  128. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/lib/mygem/version.rb +5 -0
  129. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/lib/mygem.rb +7 -0
  130. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/mygem.gemspec +19 -0
  131. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/spec/rubocop_spec.rb +3 -0
  132. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/spec/spec_helper.rb +5 -0
  133. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec.rb +28 -0
  134. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/Gemfile +5 -0
  135. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/Gemfile.lock +19 -0
  136. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/Rakefile +14 -0
  137. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/exe/myrunner +5 -0
  138. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/lib/mygem/version.rb +5 -0
  139. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/lib/mygem.rb +7 -0
  140. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/mygem.gemspec +17 -0
  141. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base_spec.rb +13 -0
  142. data/sub/avm-eac_ruby_base1/spec/rubocop_spec.rb +3 -0
  143. data/sub/avm-eac_ruby_base1/spec/spec_helper.rb +5 -0
  144. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/gemspec.template +19 -0
  145. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/root_lib.template +7 -0
  146. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/Gemfile +8 -0
  147. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/spec/rubocop_spec.rb +3 -0
  148. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/spec/spec_helper.rb.template +5 -0
  149. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/version.template +5 -0
  150. data/sub/eac_ruby_base0/Gemfile +8 -0
  151. data/sub/eac_ruby_base0/eac_ruby_base0.gemspec +22 -0
  152. data/sub/eac_ruby_base0/lib/eac_ruby_base0/application.rb +88 -0
  153. data/sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb +34 -0
  154. data/sub/eac_ruby_base0/lib/eac_ruby_base0/core_ext.rb +5 -0
  155. data/sub/eac_ruby_base0/lib/eac_ruby_base0/jobs_runner.rb +31 -0
  156. data/sub/eac_ruby_base0/lib/eac_ruby_base0/patches/class/jobs_runner.rb +9 -0
  157. data/sub/eac_ruby_base0/lib/eac_ruby_base0/patches/class.rb +4 -0
  158. data/sub/eac_ruby_base0/lib/eac_ruby_base0/patches.rb +4 -0
  159. data/sub/eac_ruby_base0/lib/eac_ruby_base0/rspec/setup.rb +14 -0
  160. data/sub/eac_ruby_base0/lib/eac_ruby_base0/rspec.rb +9 -0
  161. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner/contexts.rb +52 -0
  162. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner/prepend.rb +39 -0
  163. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner.rb +37 -0
  164. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner_with.rb +9 -0
  165. data/sub/eac_ruby_base0/lib/eac_ruby_base0/version.rb +5 -0
  166. data/sub/eac_ruby_base0/lib/eac_ruby_base0.rb +12 -0
  167. data/sub/eac_ruby_base0/spec/rubocop_spec.rb +3 -0
  168. data/sub/eac_ruby_base0/spec/spec_helper.rb +4 -0
  169. data/sub/eac_ruby_gem_support/Gemfile +8 -0
  170. data/sub/eac_ruby_gem_support/eac_ruby_gem_support.gemspec +25 -0
  171. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/helpers/filesystem.rb +73 -0
  172. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/helpers/utils.rb +22 -0
  173. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/setup.rb +55 -0
  174. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures.rb +76 -0
  175. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/shared_examples/spec_paths.rb +14 -0
  176. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/source_target_fixtures_controller.rb +32 -0
  177. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/spec_paths_controller.rb +29 -0
  178. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/specs/rubocop.rb +33 -0
  179. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/source_target_fixtures/source_target_file.rb +19 -0
  180. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/source_target_fixtures.rb +74 -0
  181. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/version.rb +5 -0
  182. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support.rb +11 -0
  183. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/helpers/filesystem_spec.rb +30 -0
  184. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures_spec.rb +11 -0
  185. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures_spec_files/one.source.yaml +2 -0
  186. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures_spec_files/one.target.yaml +2 -0
  187. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/shared_examples/spec_paths_spec.rb +19 -0
  188. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec.rb +27 -0
  189. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec_files/stub1.source.txt +1 -0
  190. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec_files/stub1.target.html +1 -0
  191. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec_files/stub2.source.html +1 -0
  192. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec_files/stub3.target.yaml +1 -0
  193. data/sub/eac_ruby_gem_support/spec/lib/rubocop_check_spec.rb +3 -0
  194. data/sub/eac_ruby_gem_support/spec/spec_helper.rb +103 -0
  195. data/sub/eac_templates/Gemfile +8 -0
  196. data/sub/eac_templates/README.textile +59 -0
  197. data/sub/eac_templates/eac_templates.gemspec +21 -0
  198. data/sub/eac_templates/lib/eac_templates/abstract/directory.rb +42 -0
  199. data/sub/eac_templates/lib/eac_templates/abstract/file.rb +25 -0
  200. data/sub/eac_templates/lib/eac_templates/abstract/fs_object.rb +99 -0
  201. data/sub/eac_templates/lib/eac_templates/abstract/fs_object_by_pathname.rb +13 -0
  202. data/sub/eac_templates/lib/eac_templates/abstract/with_directory_file_methods.rb +77 -0
  203. data/sub/eac_templates/lib/eac_templates/core_ext.rb +4 -0
  204. data/sub/eac_templates/lib/eac_templates/errors/not_found.rb +8 -0
  205. data/sub/eac_templates/lib/eac_templates/errors/type_mismatch.rb +8 -0
  206. data/sub/eac_templates/lib/eac_templates/errors.rb +9 -0
  207. data/sub/eac_templates/lib/eac_templates/interface_methods.rb +12 -0
  208. data/sub/eac_templates/lib/eac_templates/modules/ancestor/directory.rb +37 -0
  209. data/sub/eac_templates/lib/eac_templates/modules/ancestor/file.rb +64 -0
  210. data/sub/eac_templates/lib/eac_templates/modules/ancestor/fs_object.rb +26 -0
  211. data/sub/eac_templates/lib/eac_templates/modules/ancestor.rb +37 -0
  212. data/sub/eac_templates/lib/eac_templates/modules/base/directory.rb +72 -0
  213. data/sub/eac_templates/lib/eac_templates/modules/base/file.rb +31 -0
  214. data/sub/eac_templates/lib/eac_templates/modules/base/fs_object.rb +16 -0
  215. data/sub/eac_templates/lib/eac_templates/modules/base.rb +93 -0
  216. data/sub/eac_templates/lib/eac_templates/modules.rb +9 -0
  217. data/sub/eac_templates/lib/eac_templates/patches/module/erb_template.rb +9 -0
  218. data/sub/eac_templates/lib/eac_templates/patches/module/template.rb +9 -0
  219. data/sub/eac_templates/lib/eac_templates/patches/module.rb +4 -0
  220. data/sub/eac_templates/lib/eac_templates/patches/object/erb_template.rb +9 -0
  221. data/sub/eac_templates/lib/eac_templates/patches/object/template.rb +7 -0
  222. data/sub/eac_templates/lib/eac_templates/patches/object.rb +4 -0
  223. data/sub/eac_templates/lib/eac_templates/patches.rb +4 -0
  224. data/sub/eac_templates/lib/eac_templates/sources/directory.rb +37 -0
  225. data/sub/eac_templates/lib/eac_templates/sources/file.rb +13 -0
  226. data/sub/eac_templates/lib/eac_templates/sources/from_all_gems.rb +4 -0
  227. data/sub/eac_templates/lib/eac_templates/sources/from_gem.rb +37 -0
  228. data/sub/eac_templates/lib/eac_templates/sources/fs_object.rb +58 -0
  229. data/sub/eac_templates/lib/eac_templates/sources/internal_set.rb +27 -0
  230. data/sub/eac_templates/lib/eac_templates/sources/set.rb +61 -0
  231. data/sub/eac_templates/lib/eac_templates/sources/single.rb +34 -0
  232. data/sub/eac_templates/lib/eac_templates/sources.rb +9 -0
  233. data/sub/eac_templates/lib/eac_templates/variables/content.rb +52 -0
  234. data/sub/eac_templates/lib/eac_templates/variables/directory.rb +48 -0
  235. data/sub/eac_templates/lib/eac_templates/variables/file.rb +26 -0
  236. data/sub/eac_templates/lib/eac_templates/variables/fs_object.rb +65 -0
  237. data/sub/eac_templates/lib/eac_templates/variables/not_found_error.rb +7 -0
  238. data/sub/eac_templates/lib/eac_templates/variables/providers/base.rb +24 -0
  239. data/sub/eac_templates/lib/eac_templates/variables/providers/config_reader.rb +29 -0
  240. data/sub/eac_templates/lib/eac_templates/variables/providers/entries_reader.rb +25 -0
  241. data/sub/eac_templates/lib/eac_templates/variables/providers/generic.rb +25 -0
  242. data/sub/eac_templates/lib/eac_templates/variables/providers/hash.rb +29 -0
  243. data/sub/eac_templates/lib/eac_templates/variables/providers.rb +25 -0
  244. data/sub/eac_templates/lib/eac_templates/variables.rb +9 -0
  245. data/sub/eac_templates/lib/eac_templates/version.rb +5 -0
  246. data/sub/eac_templates/lib/eac_templates.rb +15 -0
  247. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec.rb +28 -0
  248. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/a_module/a/a_a +1 -0
  249. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/a_module/a/a_b +1 -0
  250. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/a_module/b +1 -0
  251. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/a_module/c +1 -0
  252. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/prepended_module/a/a_d +1 -0
  253. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/prepended_module/c +1 -0
  254. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/prepended_module/d +1 -0
  255. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/a/a_a +1 -0
  256. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/a/a_b +1 -0
  257. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/a/a_c +1 -0
  258. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/a/a_d +1 -0
  259. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/b +1 -0
  260. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/c +1 -0
  261. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/d +1 -0
  262. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/super_class/a/a_a +1 -0
  263. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/super_class/a/a_b +1 -0
  264. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/super_class/b +1 -0
  265. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/super_class/c +1 -0
  266. data/sub/eac_templates/spec/lib/eac_templates/modules/base/child_spec.rb +110 -0
  267. data/sub/eac_templates/spec/lib/eac_templates/patches/object/template_spec.rb +26 -0
  268. data/sub/eac_templates/spec/lib/eac_templates/patches/object/template_spec_files/path/my_stub_with_template +1 -0
  269. data/sub/eac_templates/spec/lib/eac_templates/sources/set_spec.rb +42 -0
  270. data/sub/eac_templates/spec/lib/eac_templates/sources/set_spec_files/path1/subdir1/file1.template +1 -0
  271. data/sub/eac_templates/spec/lib/eac_templates/sources/set_spec_files/path1/subdir1/file2 +1 -0
  272. data/sub/eac_templates/spec/lib/eac_templates/sources/set_spec_files/path2/subdir1/file3.template +1 -0
  273. data/sub/eac_templates/spec/lib/eac_templates/variables/content_spec.rb +35 -0
  274. data/sub/eac_templates/spec/lib/eac_templates/variables/content_spec_files/expected_content +2 -0
  275. data/sub/eac_templates/spec/lib/eac_templates/variables/content_spec_files/source.template +2 -0
  276. data/sub/eac_templates/spec/rubocop_spec.rb +3 -0
  277. data/sub/eac_templates/spec/spec_helper/modules_resources_context.rb +45 -0
  278. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/a_module/a/a_a +1 -0
  279. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/a_module/b +1 -0
  280. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/prepended_module/a/a_d.template +1 -0
  281. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/sub_class/a/a_c +1 -0
  282. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/super_class/a/a_b +1 -0
  283. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/super_class/b +1 -0
  284. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/a_module/a/a_b +1 -0
  285. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/a_module/b +1 -0
  286. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/a_module/c +1 -0
  287. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/prepended_module/c +1 -0
  288. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/prepended_module/d.template +1 -0
  289. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/sub_class/a/a_d +1 -0
  290. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/sub_class/b +1 -0
  291. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/super_class/a/a_b +1 -0
  292. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/super_class/b +1 -0
  293. data/sub/eac_templates/spec/spec_helper.rb +6 -0
  294. metadata +294 -20
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+ require 'eac_cli/speaker'
5
+ require 'eac_cli/speaker/input_blocked'
6
+ require 'eac_config/node'
7
+ require 'eac_fs/contexts'
8
+ require 'eac_ruby_utils/speaker'
9
+
10
+ module EacRubyBase0
11
+ module Runner
12
+ module Prepend
13
+ SYSTEM_STACK_ERROR_FILE = 'system_stack_error'
14
+
15
+ def run
16
+ on_rescue_stack_overflow do
17
+ if parsed.version?
18
+ show_version
19
+ else
20
+ run_with_subcommand
21
+ end
22
+ end
23
+ end
24
+
25
+ def run_run
26
+ on_context { super }
27
+ end
28
+
29
+ private
30
+
31
+ def on_rescue_stack_overflow
32
+ yield
33
+ rescue ::SystemStackError => e
34
+ SYSTEM_STACK_ERROR_FILE.to_pathname.write(e.backtrace.map { |v| "#{v}\n" }.join)
35
+ raise e
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+ require 'eac_cli/speaker'
5
+ require 'eac_cli/speaker/input_blocked'
6
+ require 'eac_config/node'
7
+ require 'eac_fs/contexts'
8
+ require 'eac_ruby_utils/speaker'
9
+
10
+ module EacRubyBase0
11
+ module Runner
12
+ require_sub __FILE__
13
+ enable_speaker
14
+ common_concern do
15
+ include ::EacCli::RunnerWith::Help
16
+ include ::EacCli::RunnerWith::Subcommands
17
+ include ::EacRubyBase0::Runner::Contexts
18
+ prepend ::EacRubyBase0::Runner::Prepend
19
+ runner_definition do
20
+ bool_opt '-q', '--quiet', 'Quiet mode.'
21
+ bool_opt '-I', '--no-input', 'Fail if a input is requested.'
22
+ subcommands
23
+ alt do
24
+ bool_opt '-V', '--version', 'Show version.', usage: true, required: true
25
+ end
26
+ end
27
+ end
28
+
29
+ def application_version
30
+ runner_context.call(:application).version.to_s
31
+ end
32
+
33
+ def show_version
34
+ out("#{application_version}\n")
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacRubyBase0
6
+ module RunnerWith
7
+ require_sub __FILE__
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyBase0
4
+ VERSION = '0.19.1'
5
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils'
4
+ EacRubyUtils::RootModuleSetup.perform __FILE__ do
5
+ ignore 'core_ext'
6
+ ignore 'patches'
7
+ end
8
+
9
+ module EacRubyBase0
10
+ end
11
+
12
+ require 'eac_ruby_base0/core_ext'
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ EacRubyUtils::Rspec.default_setup.describe_rubocop
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_base0'
4
+ EacRubyUtils::Rspec.default_setup_create(File.expand_path('..', __dir__))
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gemspec
6
+
7
+ local_gemfile = File.join(File.dirname(__FILE__), 'Gemfile.local')
8
+ eval_gemfile local_gemfile if File.exist?(local_gemfile)
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
4
+
5
+ require 'eac_ruby_gem_support/version'
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = 'eac_ruby_gem_support'
9
+ s.version = EacRubyGemSupport::VERSION
10
+ s.authors = ['Esquilo Azul Company']
11
+ s.summary = 'Development support for Ruby\' Gem.'
12
+ s.homepage = 'https://github.com/esquilo-azul/eac_ruby_gem_support'
13
+ s.metadata = { 'source_code_uri' => 'https://github.com/esquilo-azul/eac_ruby_gem_support' }
14
+
15
+ s.files = Dir['{lib}/**/*', '.rubocop.yml']
16
+
17
+ s.required_ruby_version = '>= 2.7.0'
18
+
19
+ s.add_dependency 'eac_ruby_utils', '~> 0.127'
20
+ s.add_dependency 'rspec', '~> 3.13', '>= 3.13.1'
21
+ s.add_dependency 'rubocop', '~> 1.76'
22
+ s.add_dependency 'rubocop-rails', '~> 2.32'
23
+ s.add_dependency 'rubocop-rspec', '~> 3.6'
24
+ s.add_dependency 'super_diff', '~> 0.9'
25
+ end
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'fileutils'
4
+ require 'tmpdir'
5
+ require 'tempfile'
6
+
7
+ module EacRubyGemSupport
8
+ module Rspec
9
+ module Helpers
10
+ module Filesystem
11
+ def purge_temp_files
12
+ ::FileUtils.rm_rf(temp_set.pop) while temp_set.any?
13
+ end
14
+
15
+ # @return [Pathname]
16
+ def temp_copy(source_path)
17
+ source_path = to_pathname(source_path)
18
+ if source_path.file?
19
+ temp_file_copy(source_path)
20
+ elsif source_path.directory?
21
+ temp_dir_copy(source_path)
22
+ else
23
+ raise "Source path \"#{source_path}\" is not a file or directory"
24
+ end
25
+ end
26
+
27
+ # @return [Pathname]
28
+ def temp_dir(*mktmpdir_args)
29
+ add_to_temp_set(::Dir.mktmpdir(*mktmpdir_args))
30
+ end
31
+
32
+ # @return [Pathname]
33
+ def temp_dir_copy(source_path)
34
+ r = temp_dir
35
+ ::FileUtils.cp_r("#{source_path}/.", r.to_path)
36
+ r
37
+ end
38
+
39
+ # @return [Pathname]
40
+ def temp_file(*tempfile_args)
41
+ file = ::Tempfile.new(*tempfile_args)
42
+ path = file.path
43
+ file.close
44
+ add_to_temp_set(path)
45
+ end
46
+
47
+ # @return [Pathname]
48
+ def temp_file_copy(source_path)
49
+ r = temp_file
50
+ ::FileUtils.cp(to_pathname(source_path).to_path, r.to_path)
51
+ r
52
+ end
53
+
54
+ # @return [Pathname]
55
+ def to_pathname(path)
56
+ path.is_a?(::Pathname) ? path : ::Pathname.new(path.to_s)
57
+ end
58
+
59
+ private
60
+
61
+ def add_to_temp_set(path)
62
+ r = to_pathname(path)
63
+ temp_set << r
64
+ r
65
+ end
66
+
67
+ def temp_set
68
+ @temp_set ||= []
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'fileutils'
4
+ require 'tmpdir'
5
+ require 'tempfile'
6
+
7
+ module EacRubyGemSupport
8
+ module Rspec
9
+ module Helpers
10
+ module Utils
11
+ # @return [StandardError, nil] If block raises an error, return this error. If not, return
12
+ # +nil+.
13
+ def capture_error
14
+ yield
15
+ nil
16
+ rescue ::StandardError => e
17
+ e
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_ruby_gem_support/rspec/helpers/filesystem'
5
+ require 'eac_ruby_gem_support/rspec/helpers/utils'
6
+ require 'eac_ruby_gem_support/rspec/specs/rubocop'
7
+ require 'tmpdir'
8
+
9
+ module EacRubyGemSupport
10
+ module Rspec
11
+ module Setup
12
+ extend ::ActiveSupport::Concern
13
+ include ::EacRubyGemSupport::Rspec::Specs::Rubocop
14
+
15
+ SETUPS = %w[load_path example_persistence filesystem_helper shared_examples].freeze
16
+
17
+ def self.extended(setup_obj)
18
+ SETUPS.each { |s| setup_obj.send("setup_#{s}") }
19
+ end
20
+
21
+ def setup_filesystem_helper
22
+ rspec_config.include ::EacRubyGemSupport::Rspec::Helpers::Filesystem
23
+ rspec_config.include ::EacRubyGemSupport::Rspec::Helpers::Utils
24
+ rspec_config.after(:each) { purge_temp_files }
25
+ end
26
+
27
+ def setup_load_path
28
+ $LOAD_PATH.push app_root_path.join('lib').to_path
29
+ end
30
+
31
+ def setup_example_persistence
32
+ rspec_config.example_status_persistence_file_path = example_persistence_path.to_path
33
+ end
34
+
35
+ def setup_shared_examples
36
+ require 'eac_ruby_gem_support/rspec/shared_examples/spec_paths'
37
+ require 'eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures'
38
+ end
39
+
40
+ # @return [Pathname]
41
+ def example_persistence_path
42
+ root_tmp.join('example_status_persistence')
43
+ end
44
+
45
+ # The root directory for temporary files.
46
+ # @return [Pathname]
47
+ def root_tmp
48
+ r = ::Pathname.new(::Dir.tmpdir)
49
+ .join("#{app_root_path.expand_path.to_path.variableize}_specs_tmp")
50
+ r.mkpath unless r.exist?
51
+ r
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_gem_support/rspec/shared_examples/spec_paths'
4
+ require 'eac_ruby_gem_support/rspec/source_target_fixtures_controller'
5
+ require 'eac_ruby_gem_support/source_target_fixtures'
6
+ require 'yaml'
7
+
8
+ RSpec.shared_examples 'source_target_fixtures' do |spec_file| # rubocop:disable Metrics/BlockLength
9
+ include_examples 'spec_paths', spec_file
10
+ fixtures_controller = EacRubyGemSupport::Rspec::SourceTargetFixturesController
11
+ .new(spec_paths_controller)
12
+
13
+ let(:fixtures_controller) { fixtures_controller }
14
+ let(:spec_file) { spec_file }
15
+
16
+ it 'fixtures directory should exist' do
17
+ expect(File.directory?(fixtures_controller.fixtures_dir)).to be true
18
+ end
19
+
20
+ context 'with fixtures directory' do
21
+ it 'has at least one file' do
22
+ expect(source_target_fixtures.source_target_files.count).to be > 0 # rubocop:disable Style/NumericPredicate
23
+ end
24
+
25
+ fixtures_controller.source_target_fixtures.source_target_files.each do |st|
26
+ context "when source file is \"#{File.basename(st.source)}\"" do
27
+ if fixtures_controller.write_target_fixtures?
28
+ it 'writes target data' do
29
+ sd = sort_results(source_data(st.source))
30
+ basename = EacRubyGemSupport::SourceTargetFixtures.source_target_basename(st.source)
31
+ target_file = File.expand_path("../#{basename}.target#{target_file_extname}", st.source)
32
+ File.write(target_file, target_content(sd))
33
+ end
34
+ else
35
+ it 'parses data' do
36
+ assert_source_target_complete(st)
37
+ sd = source_data(st.source)
38
+ td = target_data(st.target)
39
+ expect(sort_results(sd)).to eq(sort_results(td))
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+
46
+ delegate :source_target_fixtures, to: :fixtures_controller
47
+
48
+ def assert_source_target_complete(source_target)
49
+ expect(source_target.source).to(be_truthy, "Source not found (Target: #{source_target.target})")
50
+ expect(source_target.target).to(be_truthy, "Target not found (Source: #{source_target.source})")
51
+ end
52
+
53
+ def source_data(source_file)
54
+ instance = described_class.new(source_file)
55
+ return instance.data if instance.respond_to?(:data)
56
+
57
+ raise "#{instance} has no \"data\" method. You need to implement \"#{instance}.data\" or " \
58
+ "\"#{self}.source_data(source_file)\""
59
+ end
60
+
61
+ def sort_results(results)
62
+ results
63
+ end
64
+
65
+ def target_data(target_file)
66
+ YAML.load_file(target_file)
67
+ end
68
+
69
+ def target_content(data)
70
+ data.to_yaml
71
+ end
72
+
73
+ def target_file_extname
74
+ '.yaml'
75
+ end
76
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_gem_support/rspec/spec_paths_controller'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ RSpec.shared_context 'spec_paths' do |the_spec_file|
7
+ cattr_accessor :spec_paths_controller
8
+ self.spec_paths_controller = EacRubyGemSupport::Rspec::SpecPathsController.new(self,
9
+ the_spec_file)
10
+
11
+ %i[fixtures_directory spec_directory spec_file].each do |m|
12
+ let(m) { self.class.spec_paths_controller.send(m) }
13
+ end
14
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_gem_support/source_target_fixtures'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module EacRubyGemSupport
7
+ module Rspec
8
+ class SourceTargetFixturesController
9
+ enable_simple_cache
10
+ common_constructor :spec_paths_controller
11
+ delegate :example, to: :spec_paths_controller
12
+
13
+ def fixtures_dir
14
+ if example.respond_to?(:fixtures_dir)
15
+ example.fixtures_dir
16
+ else
17
+ spec_paths_controller.fixtures_directory
18
+ end
19
+ end
20
+
21
+ def write_target_fixtures?
22
+ ENV['WRITE_TARGET_FIXTURES'].to_bool
23
+ end
24
+
25
+ private
26
+
27
+ def source_target_fixtures_uncached
28
+ ::EacRubyGemSupport::SourceTargetFixtures.new(fixtures_dir)
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacRubyGemSupport
6
+ module Rspec
7
+ class SpecPathsController
8
+ # @!attribute [r] spec_file
9
+ # @return [Pathname]
10
+
11
+ # @!method initialize(example, spec_file)
12
+ # @param example [RSpec::Core::ExampleGroup]
13
+ # @param spec_file [Pathname]
14
+ common_constructor :example, :spec_file do
15
+ self.spec_file = spec_file.to_pathname
16
+ end
17
+
18
+ # @return [Pathname]
19
+ def fixtures_directory
20
+ spec_directory.join(spec_file.basename('.*')).basename_sub { |b| "#{b}_files" }
21
+ end
22
+
23
+ # @return [Pathname]
24
+ def spec_directory
25
+ spec_file.parent
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rspec'
4
+ require 'rubocop'
5
+
6
+ module EacRubyGemSupport
7
+ module Rspec
8
+ module Specs
9
+ module Rubocop
10
+ def describe_rubocop # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
11
+ this = self
12
+ ::RSpec.describe ::RuboCop do
13
+ before do
14
+ ::RuboCop::ConfigLoader.ignore_parent_exclusion = true
15
+ end
16
+
17
+ let(:root_path) { this.app_root_path }
18
+ let(:config_store) do
19
+ r = ::RuboCop::ConfigStore.new
20
+ r.for(root_path)
21
+ r
22
+ end
23
+ let(:runner) { ::RuboCop::Runner.new({}, config_store) }
24
+
25
+ it 'rubocop return ok' do
26
+ expect(::Dir.chdir(root_path) { runner.run([]) }).to eq(true)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacRubyGemSupport
6
+ class SourceTargetFixtures
7
+ class SourceTargetFile
8
+ common_constructor :owner, :basename
9
+
10
+ def source
11
+ owner.source_file(basename)
12
+ end
13
+
14
+ def target
15
+ owner.target_file(basename)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacRubyGemSupport
6
+ # Lists pairs of source/target files in a directory.
7
+ class SourceTargetFixtures
8
+ class << self
9
+ def source_target_basename(file)
10
+ m = /^(.+)\.(?:source|target)(?:\..+)?$/.match(File.basename(file))
11
+ m ? m[1] : nil
12
+ end
13
+ end
14
+
15
+ # @!attribute [r] fixtures_directory
16
+ # @return [String]
17
+
18
+ # @!method initialize(fixtures_directory)
19
+ # @param fixtures_directory [Pathname]
20
+ common_constructor :fixtures_directory
21
+
22
+ def source_target_files
23
+ sources_targets_basenames.map do |basename|
24
+ ::EacRubyGemSupport::SourceTargetFixtures::SourceTargetFile.new(self, basename)
25
+ end
26
+ end
27
+
28
+ def source_files
29
+ r = []
30
+ source_target_files.each do |st|
31
+ r << st.source if st.source
32
+ end
33
+ r
34
+ end
35
+
36
+ def target_files
37
+ r = []
38
+ source_target_files.each do |st|
39
+ r << st.target if st.target
40
+ end
41
+ r
42
+ end
43
+
44
+ def target_file(basename)
45
+ fixture_file(basename, 'target')
46
+ end
47
+
48
+ def source_file(basename)
49
+ fixture_file(basename, 'source')
50
+ end
51
+
52
+ private
53
+
54
+ def fixture_file(basename, suffix)
55
+ prefix = "#{basename}.#{suffix}"
56
+ Dir.foreach(fixtures_directory) do |item|
57
+ next if %w[. ..].include?(item)
58
+ return File.expand_path(item, fixtures_directory) if item.starts_with?(prefix)
59
+ end
60
+ nil
61
+ end
62
+
63
+ def sources_targets_basenames
64
+ basenames = Set.new
65
+ Dir.foreach(fixtures_directory) do |item|
66
+ next if %w[. ..].include?(item)
67
+
68
+ b = self.class.source_target_basename(item)
69
+ basenames << b if b.present?
70
+ end
71
+ basenames
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyGemSupport
4
+ VERSION = '0.12.0'
5
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils'
4
+ EacRubyUtils::RootModuleSetup.perform __FILE__
5
+
6
+ require 'super_diff'
7
+ require 'super_diff/active_support'
8
+ require 'super_diff/rspec'
9
+
10
+ module EacRubyGemSupport
11
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe EacRubyGemSupport::Rspec::Helpers::Filesystem do
4
+ describe '#temp_file' do
5
+ let(:a_temp_file) { temp_file }
6
+
7
+ it { expect(temp_file).to be_file }
8
+ end
9
+
10
+ describe '#temp_dir' do
11
+ let(:a_temp_dir) { temp_dir }
12
+
13
+ it { expect(temp_dir).to be_directory }
14
+ end
15
+
16
+ describe '#temp_copy' do
17
+ let(:source_file) { Pathname.new(__FILE__) }
18
+ let(:source_dir) { source_file.parent }
19
+ let(:file_copy) { temp_copy(source_file) }
20
+ let(:dir_copy) { temp_copy(source_dir) }
21
+
22
+ it { expect(file_copy).to be_file }
23
+ it { expect(file_copy.read).to eq(source_file.read) }
24
+ it { expect(file_copy).not_to eq(source_file) }
25
+
26
+ it { expect(dir_copy).to be_directory }
27
+ it { expect(dir_copy.join(source_file.basename).read).to eq(source_file.read) }
28
+ it { expect(dir_copy).not_to eq(source_dir) }
29
+ end
30
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yaml'
4
+
5
+ RSpec.describe "RSpec.shared_examples('source_target_fixtures')" do # rubocop:disable RSpec/DescribeClass
6
+ include_examples 'source_target_fixtures', __FILE__
7
+
8
+ def source_data(file)
9
+ YAML.load_file(file)
10
+ end
11
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ RSpec.describe "RSpec.shared_examples('spec_paths')" do # rubocop:disable RSpec/DescribeClass
6
+ include_context 'spec_paths', __FILE__
7
+
8
+ it do
9
+ expect(spec_file).to eq(__FILE__.to_pathname)
10
+ end
11
+
12
+ it do
13
+ expect(spec_directory).to eq(__FILE__.to_pathname.dirname)
14
+ end
15
+
16
+ it do
17
+ expect(fixtures_directory).to eq(__FILE__.to_pathname.dirname.join('spec_paths_spec_files'))
18
+ end
19
+ end