yard 0.9.17 → 0.9.22

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of yard might be problematic. Click here for more details.

Files changed (590) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +2 -0
  3. data/.github/ISSUE_TEMPLATE.md +33 -0
  4. data/.github/PULL_REQUEST_TEMPLATE.md +12 -0
  5. data/.gitignore +14 -0
  6. data/.rspec +2 -0
  7. data/.rubocop.yml +99 -0
  8. data/.travis.yml +52 -0
  9. data/.yardopts +26 -26
  10. data/.yardopts_guide +19 -0
  11. data/.yardopts_i18n +23 -0
  12. data/CHANGELOG.md +774 -728
  13. data/CODE_OF_CONDUCT.md +15 -0
  14. data/CONTRIBUTING.md +140 -0
  15. data/Dockerfile.samus +28 -0
  16. data/Gemfile +32 -0
  17. data/LEGAL +66 -66
  18. data/LICENSE +22 -22
  19. data/README.md +330 -328
  20. data/Rakefile +37 -53
  21. data/SECURITY.md +26 -0
  22. data/benchmarks/builtins_vs_eval.rb +24 -24
  23. data/benchmarks/concat_vs_join.rb +13 -13
  24. data/benchmarks/erb_vs_erubis.rb +54 -54
  25. data/benchmarks/format_args.rb +47 -47
  26. data/benchmarks/generation.rb +38 -38
  27. data/benchmarks/marshal_vs_dbm.rb +64 -64
  28. data/benchmarks/parsing.rb +46 -46
  29. data/benchmarks/pathname_vs_string.rb +50 -50
  30. data/benchmarks/rdoc_vs_yardoc.rb +11 -11
  31. data/benchmarks/registry_store_types.rb +49 -49
  32. data/benchmarks/ri_vs_yri.rb +19 -19
  33. data/benchmarks/ripper_parser.rb +13 -13
  34. data/benchmarks/splat_vs_flatten.rb +13 -13
  35. data/benchmarks/template_erb.rb +23 -23
  36. data/benchmarks/template_format.rb +7 -7
  37. data/benchmarks/template_profile.rb +18 -18
  38. data/benchmarks/yri_cache.rb +20 -20
  39. data/bin/yard +13 -13
  40. data/bin/yardoc +13 -13
  41. data/bin/yri +13 -13
  42. data/docs/CodeObjects.md +115 -115
  43. data/docs/GettingStarted.md +679 -679
  44. data/docs/Handlers.md +152 -152
  45. data/docs/Overview.md +61 -61
  46. data/docs/Parser.md +191 -191
  47. data/docs/Tags.md +283 -283
  48. data/docs/TagsArch.md +123 -123
  49. data/docs/Templates.md +496 -496
  50. data/docs/WhatsNew.md +1245 -1245
  51. data/docs/templates/default/fulldoc/html/full_list_tag.erb +8 -8
  52. data/docs/templates/default/fulldoc/html/setup.rb +6 -6
  53. data/docs/templates/default/layout/html/setup.rb +9 -9
  54. data/docs/templates/default/layout/html/tag_list.erb +11 -11
  55. data/docs/templates/default/yard_tags/html/list.erb +18 -18
  56. data/docs/templates/default/yard_tags/html/setup.rb +26 -26
  57. data/docs/templates/plugin.rb +70 -70
  58. data/lib/rubygems_plugin.rb +9 -9
  59. data/lib/yard.rb +69 -69
  60. data/lib/yard/autoload.rb +308 -303
  61. data/lib/yard/cli/command.rb +85 -85
  62. data/lib/yard/cli/command_parser.rb +93 -93
  63. data/lib/yard/cli/config.rb +198 -198
  64. data/lib/yard/cli/diff.rb +270 -270
  65. data/lib/yard/cli/display.rb +69 -69
  66. data/lib/yard/cli/gems.rb +84 -84
  67. data/lib/yard/cli/graph.rb +125 -125
  68. data/lib/yard/cli/help.rb +20 -20
  69. data/lib/yard/cli/i18n.rb +70 -70
  70. data/lib/yard/cli/list.rb +23 -23
  71. data/lib/yard/cli/markup_types.rb +32 -32
  72. data/lib/yard/cli/server.rb +257 -257
  73. data/lib/yard/cli/stats.rb +231 -231
  74. data/lib/yard/cli/yardoc.rb +789 -788
  75. data/lib/yard/cli/yardopts_command.rb +110 -110
  76. data/lib/yard/cli/yri.rb +215 -215
  77. data/lib/yard/code_objects/base.rb +622 -615
  78. data/lib/yard/code_objects/class_object.rb +146 -146
  79. data/lib/yard/code_objects/class_variable_object.rb +11 -11
  80. data/lib/yard/code_objects/constant_object.rb +16 -16
  81. data/lib/yard/code_objects/extended_method_object.rb +24 -24
  82. data/lib/yard/code_objects/extra_file_object.rb +134 -131
  83. data/lib/yard/code_objects/macro_object.rb +172 -172
  84. data/lib/yard/code_objects/method_object.rb +196 -196
  85. data/lib/yard/code_objects/module_object.rb +21 -21
  86. data/lib/yard/code_objects/namespace_mapper.rb +114 -114
  87. data/lib/yard/code_objects/namespace_object.rb +200 -200
  88. data/lib/yard/code_objects/proxy.rb +244 -240
  89. data/lib/yard/code_objects/root_object.rb +19 -19
  90. data/lib/yard/config.rb +270 -270
  91. data/lib/yard/core_ext/array.rb +16 -16
  92. data/lib/yard/core_ext/file.rb +69 -69
  93. data/lib/yard/core_ext/hash.rb +16 -16
  94. data/lib/yard/core_ext/insertion.rb +63 -63
  95. data/lib/yard/core_ext/module.rb +11 -20
  96. data/lib/yard/core_ext/string.rb +68 -68
  97. data/lib/yard/core_ext/symbol_hash.rb +75 -75
  98. data/lib/yard/docstring.rb +386 -386
  99. data/lib/yard/docstring_parser.rb +345 -345
  100. data/lib/yard/gem_index.rb +29 -29
  101. data/lib/yard/globals.rb +22 -22
  102. data/lib/yard/handlers/base.rb +595 -595
  103. data/lib/yard/handlers/c/alias_handler.rb +16 -16
  104. data/lib/yard/handlers/c/attribute_handler.rb +13 -13
  105. data/lib/yard/handlers/c/base.rb +129 -129
  106. data/lib/yard/handlers/c/class_handler.rb +27 -27
  107. data/lib/yard/handlers/c/constant_handler.rb +13 -13
  108. data/lib/yard/handlers/c/handler_methods.rb +212 -211
  109. data/lib/yard/handlers/c/init_handler.rb +20 -20
  110. data/lib/yard/handlers/c/method_handler.rb +45 -45
  111. data/lib/yard/handlers/c/mixin_handler.rb +21 -21
  112. data/lib/yard/handlers/c/module_handler.rb +17 -17
  113. data/lib/yard/handlers/c/override_comment_handler.rb +31 -31
  114. data/lib/yard/handlers/c/path_handler.rb +11 -11
  115. data/lib/yard/handlers/c/struct_handler.rb +13 -13
  116. data/lib/yard/handlers/c/symbol_handler.rb +8 -8
  117. data/lib/yard/handlers/common/method_handler.rb +19 -0
  118. data/lib/yard/handlers/processor.rb +200 -200
  119. data/lib/yard/handlers/ruby/alias_handler.rb +45 -44
  120. data/lib/yard/handlers/ruby/attribute_handler.rb +87 -87
  121. data/lib/yard/handlers/ruby/base.rb +165 -165
  122. data/lib/yard/handlers/ruby/class_condition_handler.rb +92 -92
  123. data/lib/yard/handlers/ruby/class_handler.rb +119 -119
  124. data/lib/yard/handlers/ruby/class_variable_handler.rb +17 -17
  125. data/lib/yard/handlers/ruby/comment_handler.rb +10 -10
  126. data/lib/yard/handlers/ruby/constant_handler.rb +55 -59
  127. data/lib/yard/handlers/ruby/decorator_handler_methods.rb +123 -123
  128. data/lib/yard/handlers/ruby/dsl_handler.rb +15 -15
  129. data/lib/yard/handlers/ruby/dsl_handler_methods.rb +96 -96
  130. data/lib/yard/handlers/ruby/exception_handler.rb +27 -27
  131. data/lib/yard/handlers/ruby/extend_handler.rb +22 -22
  132. data/lib/yard/handlers/ruby/legacy/alias_handler.rb +37 -37
  133. data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +65 -65
  134. data/lib/yard/handlers/ruby/legacy/base.rb +245 -245
  135. data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -83
  136. data/lib/yard/handlers/ruby/legacy/class_handler.rb +113 -113
  137. data/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +15 -15
  138. data/lib/yard/handlers/ruby/legacy/comment_handler.rb +10 -10
  139. data/lib/yard/handlers/ruby/legacy/constant_handler.rb +29 -29
  140. data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +17 -17
  141. data/lib/yard/handlers/ruby/legacy/exception_handler.rb +13 -13
  142. data/lib/yard/handlers/ruby/legacy/extend_handler.rb +21 -21
  143. data/lib/yard/handlers/ruby/legacy/method_handler.rb +90 -90
  144. data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -39
  145. data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +19 -19
  146. data/lib/yard/handlers/ruby/legacy/module_handler.rb +12 -12
  147. data/lib/yard/handlers/ruby/legacy/private_class_method_handler.rb +22 -22
  148. data/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +22 -22
  149. data/lib/yard/handlers/ruby/legacy/visibility_handler.rb +17 -17
  150. data/lib/yard/handlers/ruby/legacy/yield_handler.rb +29 -29
  151. data/lib/yard/handlers/ruby/method_condition_handler.rb +9 -9
  152. data/lib/yard/handlers/ruby/method_handler.rb +104 -118
  153. data/lib/yard/handlers/ruby/mixin_handler.rb +49 -37
  154. data/lib/yard/handlers/ruby/module_function_handler.rb +27 -27
  155. data/lib/yard/handlers/ruby/module_handler.rb +12 -12
  156. data/lib/yard/handlers/ruby/private_class_method_handler.rb +14 -14
  157. data/lib/yard/handlers/ruby/private_constant_handler.rb +43 -43
  158. data/lib/yard/handlers/ruby/public_class_method_handler.rb +14 -14
  159. data/lib/yard/handlers/ruby/struct_handler_methods.rb +143 -143
  160. data/lib/yard/handlers/ruby/visibility_handler.rb +22 -22
  161. data/lib/yard/handlers/ruby/yield_handler.rb +31 -31
  162. data/lib/yard/i18n/locale.rb +67 -67
  163. data/lib/yard/i18n/message.rb +57 -57
  164. data/lib/yard/i18n/messages.rb +56 -56
  165. data/lib/yard/i18n/po_parser.rb +61 -61
  166. data/lib/yard/i18n/pot_generator.rb +290 -290
  167. data/lib/yard/i18n/text.rb +173 -173
  168. data/lib/yard/logging.rb +205 -205
  169. data/lib/yard/options.rb +217 -217
  170. data/lib/yard/parser/base.rb +57 -57
  171. data/lib/yard/parser/c/c_parser.rb +235 -235
  172. data/lib/yard/parser/c/comment_parser.rb +134 -134
  173. data/lib/yard/parser/c/statement.rb +66 -64
  174. data/lib/yard/parser/ruby/ast_node.rb +551 -540
  175. data/lib/yard/parser/ruby/legacy/irb/slex.rb +276 -0
  176. data/lib/yard/parser/ruby/legacy/ruby_lex.rb +1345 -1354
  177. data/lib/yard/parser/ruby/legacy/ruby_parser.rb +32 -32
  178. data/lib/yard/parser/ruby/legacy/statement.rb +68 -66
  179. data/lib/yard/parser/ruby/legacy/statement_list.rb +394 -394
  180. data/lib/yard/parser/ruby/legacy/token_list.rb +74 -74
  181. data/lib/yard/parser/ruby/ruby_parser.rb +699 -687
  182. data/lib/yard/parser/ruby/token_resolver.rb +156 -156
  183. data/lib/yard/parser/source_parser.rb +526 -526
  184. data/lib/yard/rake/yardoc_task.rb +81 -81
  185. data/lib/yard/registry.rb +439 -439
  186. data/lib/yard/registry_resolver.rb +231 -189
  187. data/lib/yard/registry_store.rb +342 -337
  188. data/lib/yard/rubygems/backports.rb +10 -10
  189. data/lib/yard/rubygems/backports/LICENSE.txt +57 -57
  190. data/lib/yard/rubygems/backports/MIT.txt +20 -20
  191. data/lib/yard/rubygems/backports/gem.rb +10 -10
  192. data/lib/yard/rubygems/backports/source_index.rb +365 -365
  193. data/lib/yard/rubygems/doc_manager.rb +90 -90
  194. data/lib/yard/rubygems/hook.rb +197 -197
  195. data/lib/yard/rubygems/specification.rb +50 -50
  196. data/lib/yard/serializers/base.rb +83 -83
  197. data/lib/yard/serializers/file_system_serializer.rb +123 -123
  198. data/lib/yard/serializers/process_serializer.rb +24 -24
  199. data/lib/yard/serializers/stdout_serializer.rb +34 -34
  200. data/lib/yard/serializers/yardoc_serializer.rb +152 -152
  201. data/lib/yard/server.rb +13 -13
  202. data/lib/yard/server/adapter.rb +100 -100
  203. data/lib/yard/server/commands/base.rb +209 -209
  204. data/lib/yard/server/commands/display_file_command.rb +29 -29
  205. data/lib/yard/server/commands/display_object_command.rb +65 -65
  206. data/lib/yard/server/commands/frames_command.rb +16 -16
  207. data/lib/yard/server/commands/library_command.rb +187 -187
  208. data/lib/yard/server/commands/library_index_command.rb +28 -28
  209. data/lib/yard/server/commands/list_command.rb +25 -25
  210. data/lib/yard/server/commands/root_request_command.rb +15 -15
  211. data/lib/yard/server/commands/search_command.rb +79 -79
  212. data/lib/yard/server/commands/static_file_command.rb +23 -23
  213. data/lib/yard/server/commands/static_file_helpers.rb +61 -62
  214. data/lib/yard/server/doc_server_helper.rb +91 -91
  215. data/lib/yard/server/doc_server_serializer.rb +39 -39
  216. data/lib/yard/server/library_version.rb +277 -277
  217. data/lib/yard/server/rack_adapter.rb +89 -89
  218. data/lib/yard/server/router.rb +187 -187
  219. data/lib/yard/server/static_caching.rb +46 -46
  220. data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +127 -127
  221. data/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +11 -11
  222. data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +37 -37
  223. data/lib/yard/server/templates/default/layout/html/script_setup.erb +7 -7
  224. data/lib/yard/server/templates/default/layout/html/setup.rb +8 -8
  225. data/lib/yard/server/templates/default/method_details/html/permalink.erb +4 -4
  226. data/lib/yard/server/templates/default/method_details/html/setup.rb +5 -5
  227. data/lib/yard/server/templates/doc_server/library_list/html/headers.erb +8 -8
  228. data/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +14 -14
  229. data/lib/yard/server/templates/doc_server/library_list/html/listing.erb +13 -13
  230. data/lib/yard/server/templates/doc_server/library_list/html/setup.rb +6 -6
  231. data/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -2
  232. data/lib/yard/server/templates/doc_server/processing/html/processing.erb +52 -52
  233. data/lib/yard/server/templates/doc_server/processing/html/setup.rb +4 -4
  234. data/lib/yard/server/templates/doc_server/search/html/search.erb +18 -18
  235. data/lib/yard/server/templates/doc_server/search/html/setup.rb +9 -9
  236. data/lib/yard/server/webrick_adapter.rb +45 -45
  237. data/lib/yard/tags/default_factory.rb +191 -191
  238. data/lib/yard/tags/default_tag.rb +13 -13
  239. data/lib/yard/tags/directives.rb +616 -616
  240. data/lib/yard/tags/library.rb +633 -633
  241. data/lib/yard/tags/option_tag.rb +13 -13
  242. data/lib/yard/tags/overload_tag.rb +71 -71
  243. data/lib/yard/tags/ref_tag.rb +8 -8
  244. data/lib/yard/tags/ref_tag_list.rb +28 -28
  245. data/lib/yard/tags/tag.rb +71 -71
  246. data/lib/yard/tags/tag_format_error.rb +7 -7
  247. data/lib/yard/tags/types_explainer.rb +162 -162
  248. data/lib/yard/templates/engine.rb +186 -186
  249. data/lib/yard/templates/erb_cache.rb +23 -23
  250. data/lib/yard/templates/helpers/base_helper.rb +215 -215
  251. data/lib/yard/templates/helpers/filter_helper.rb +27 -27
  252. data/lib/yard/templates/helpers/html_helper.rb +663 -646
  253. data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +78 -78
  254. data/lib/yard/templates/helpers/markup/rdoc_markdown.rb +23 -23
  255. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +109 -109
  256. data/lib/yard/templates/helpers/markup_helper.rb +172 -172
  257. data/lib/yard/templates/helpers/method_helper.rb +75 -75
  258. data/lib/yard/templates/helpers/module_helper.rb +21 -21
  259. data/lib/yard/templates/helpers/text_helper.rb +112 -112
  260. data/lib/yard/templates/helpers/uml_helper.rb +47 -47
  261. data/lib/yard/templates/section.rb +105 -105
  262. data/lib/yard/templates/template.rb +418 -418
  263. data/lib/yard/templates/template_options.rb +92 -92
  264. data/lib/yard/verifier.rb +151 -151
  265. data/lib/yard/version.rb +6 -6
  266. data/po/ja.po +31108 -0
  267. data/samus.json +80 -0
  268. data/spec/cli/command_parser_spec.rb +43 -43
  269. data/spec/cli/command_spec.rb +36 -36
  270. data/spec/cli/config_spec.rb +148 -148
  271. data/spec/cli/diff_spec.rb +254 -254
  272. data/spec/cli/display_spec.rb +30 -30
  273. data/spec/cli/gems_spec.rb +81 -81
  274. data/spec/cli/graph_spec.rb +18 -18
  275. data/spec/cli/help_spec.rb +22 -22
  276. data/spec/cli/i18n_spec.rb +107 -107
  277. data/spec/cli/list_spec.rb +8 -8
  278. data/spec/cli/markup_types_spec.rb +22 -22
  279. data/spec/cli/server_spec.rb +324 -324
  280. data/spec/cli/stats_spec.rb +96 -96
  281. data/spec/cli/yard_on_yard_spec.rb +38 -38
  282. data/spec/cli/yardoc_spec.rb +896 -862
  283. data/spec/cli/yri_spec.rb +101 -101
  284. data/spec/code_objects/base_spec.rb +485 -470
  285. data/spec/code_objects/class_object_spec.rb +226 -226
  286. data/spec/code_objects/code_object_list_spec.rb +36 -36
  287. data/spec/code_objects/constants_spec.rb +116 -116
  288. data/spec/code_objects/extra_file_object_spec.rb +161 -160
  289. data/spec/code_objects/macro_object_spec.rb +150 -150
  290. data/spec/code_objects/method_object_spec.rb +184 -184
  291. data/spec/code_objects/module_object_spec.rb +142 -142
  292. data/spec/code_objects/namespace_object_spec.rb +171 -171
  293. data/spec/code_objects/proxy_spec.rb +147 -141
  294. data/spec/code_objects/spec_helper.rb +3 -3
  295. data/spec/config_spec.rb +171 -171
  296. data/spec/core_ext/array_spec.rb +13 -13
  297. data/spec/core_ext/file_spec.rb +72 -72
  298. data/spec/core_ext/hash_spec.rb +14 -14
  299. data/spec/core_ext/insertion_spec.rb +37 -37
  300. data/spec/core_ext/module_spec.rb +9 -15
  301. data/spec/core_ext/string_spec.rb +42 -42
  302. data/spec/core_ext/symbol_hash_spec.rb +89 -89
  303. data/spec/docstring_parser_spec.rb +280 -280
  304. data/spec/docstring_spec.rb +373 -373
  305. data/spec/handlers/alias_handler_spec.rb +82 -82
  306. data/spec/handlers/attribute_handler_spec.rb +96 -96
  307. data/spec/handlers/base_spec.rb +216 -216
  308. data/spec/handlers/c/alias_handler_spec.rb +34 -34
  309. data/spec/handlers/c/attribute_handler_spec.rb +41 -41
  310. data/spec/handlers/c/class_handler_spec.rb +78 -78
  311. data/spec/handlers/c/constant_handler_spec.rb +71 -71
  312. data/spec/handlers/c/init_handler_spec.rb +48 -48
  313. data/spec/handlers/c/method_handler_spec.rb +327 -325
  314. data/spec/handlers/c/mixin_handler_spec.rb +44 -44
  315. data/spec/handlers/c/module_handler_spec.rb +71 -71
  316. data/spec/handlers/c/override_comment_handler_spec.rb +47 -47
  317. data/spec/handlers/c/path_handler_spec.rb +36 -36
  318. data/spec/handlers/c/spec_helper.rb +23 -23
  319. data/spec/handlers/c/struct_handler_spec.rb +16 -16
  320. data/spec/handlers/class_condition_handler_spec.rb +87 -87
  321. data/spec/handlers/class_handler_spec.rb +247 -247
  322. data/spec/handlers/class_method_handler_shared_examples.rb +133 -133
  323. data/spec/handlers/class_variable_handler_spec.rb +12 -12
  324. data/spec/handlers/constant_handler_spec.rb +112 -112
  325. data/spec/handlers/decorator_handler_methods_spec.rb +393 -393
  326. data/spec/handlers/dsl_handler_spec.rb +226 -219
  327. data/spec/handlers/examples/alias_handler_001.rb.txt +45 -45
  328. data/spec/handlers/examples/attribute_handler_001.rb.txt +31 -31
  329. data/spec/handlers/examples/class_condition_handler_001.rb.txt +68 -68
  330. data/spec/handlers/examples/class_handler_001.rb.txt +120 -120
  331. data/spec/handlers/examples/class_variable_handler_001.rb.txt +9 -9
  332. data/spec/handlers/examples/constant_handler_001.rb.txt +35 -35
  333. data/spec/handlers/examples/dsl_handler_001.rb.txt +156 -154
  334. data/spec/handlers/examples/exception_handler_001.rb.txt +58 -58
  335. data/spec/handlers/examples/extend_handler_001.rb.txt +19 -16
  336. data/spec/handlers/examples/method_condition_handler_001.rb.txt +9 -9
  337. data/spec/handlers/examples/method_handler_001.rb.txt +128 -128
  338. data/spec/handlers/examples/mixin_handler_001.rb.txt +40 -37
  339. data/spec/handlers/examples/module_handler_001.rb.txt +29 -29
  340. data/spec/handlers/examples/private_constant_handler_001.rb.txt +8 -8
  341. data/spec/handlers/examples/process_handler_001.rb.txt +11 -11
  342. data/spec/handlers/examples/visibility_handler_001.rb.txt +35 -35
  343. data/spec/handlers/examples/yield_handler_001.rb.txt +54 -54
  344. data/spec/handlers/exception_handler_spec.rb +49 -49
  345. data/spec/handlers/extend_handler_spec.rb +28 -24
  346. data/spec/handlers/legacy_base_spec.rb +128 -128
  347. data/spec/handlers/method_condition_handler_spec.rb +15 -15
  348. data/spec/handlers/method_handler_spec.rb +214 -190
  349. data/spec/handlers/mixin_handler_spec.rb +60 -56
  350. data/spec/handlers/module_function_handler_spec.rb +106 -106
  351. data/spec/handlers/module_handler_spec.rb +35 -35
  352. data/spec/handlers/private_class_method_handler_spec.rb +11 -11
  353. data/spec/handlers/private_constant_handler_spec.rb +25 -25
  354. data/spec/handlers/processor_spec.rb +35 -35
  355. data/spec/handlers/public_class_method_handler_spec.rb +11 -11
  356. data/spec/handlers/ruby/base_spec.rb +95 -95
  357. data/spec/handlers/ruby/legacy/base_spec.rb +84 -84
  358. data/spec/handlers/spec_helper.rb +33 -33
  359. data/spec/handlers/visibility_handler_spec.rb +44 -44
  360. data/spec/handlers/yield_handler_spec.rb +52 -52
  361. data/spec/i18n/locale_spec.rb +81 -81
  362. data/spec/i18n/message_spec.rb +52 -52
  363. data/spec/i18n/messages_spec.rb +67 -67
  364. data/spec/i18n/pot_generator_spec.rb +295 -295
  365. data/spec/i18n/text_spec.rb +184 -184
  366. data/spec/logging_spec.rb +44 -44
  367. data/spec/options_spec.rb +171 -171
  368. data/spec/parser/base_spec.rb +24 -24
  369. data/spec/parser/c_parser_spec.rb +236 -236
  370. data/spec/parser/examples/array.c.txt +6267 -6267
  371. data/spec/parser/examples/example1.rb.txt +7 -7
  372. data/spec/parser/examples/extrafile.c.txt +8 -8
  373. data/spec/parser/examples/file.c.txt +28 -28
  374. data/spec/parser/examples/multifile.c.txt +22 -22
  375. data/spec/parser/examples/namespace.cpp.txt +68 -68
  376. data/spec/parser/examples/override.c.txt +424 -424
  377. data/spec/parser/examples/parse_in_order_001.rb.txt +2 -2
  378. data/spec/parser/examples/parse_in_order_002.rb.txt +1 -1
  379. data/spec/parser/examples/tag_handler_001.rb.txt +7 -7
  380. data/spec/parser/ruby/ast_node_spec.rb +33 -33
  381. data/spec/parser/ruby/legacy/statement_list_spec.rb +299 -299
  382. data/spec/parser/ruby/legacy/token_list_spec.rb +79 -79
  383. data/spec/parser/ruby/ruby_parser_spec.rb +508 -508
  384. data/spec/parser/ruby/token_resolver_spec.rb +165 -165
  385. data/spec/parser/source_parser_spec.rb +727 -727
  386. data/spec/parser/tag_parsing_spec.rb +17 -17
  387. data/spec/rake/yardoc_task_spec.rb +118 -118
  388. data/spec/registry_spec.rb +463 -463
  389. data/spec/registry_store_spec.rb +327 -316
  390. data/spec/rubygems/doc_manager_spec.rb +112 -112
  391. data/spec/serializers/data/serialized_yardoc/checksums +1 -1
  392. data/spec/serializers/file_system_serializer_spec.rb +145 -145
  393. data/spec/serializers/spec_helper.rb +2 -2
  394. data/spec/serializers/yardoc_serializer_spec.rb +78 -78
  395. data/spec/server/adapter_spec.rb +39 -39
  396. data/spec/server/commands/base_spec.rb +91 -91
  397. data/spec/server/commands/library_command_spec.rb +39 -39
  398. data/spec/server/doc_server_helper_spec.rb +72 -72
  399. data/spec/server/doc_server_serializer_spec.rb +60 -60
  400. data/spec/server/rack_adapter_spec.rb +21 -21
  401. data/spec/server/router_spec.rb +123 -123
  402. data/spec/server/spec_helper.rb +22 -22
  403. data/spec/server/static_caching_spec.rb +47 -47
  404. data/spec/server/webrick_servlet_spec.rb +20 -20
  405. data/spec/server_spec.rb +19 -19
  406. data/spec/spec_helper.rb +212 -212
  407. data/spec/tags/default_factory_spec.rb +168 -168
  408. data/spec/tags/default_tag_spec.rb +11 -11
  409. data/spec/tags/directives_spec.rb +463 -463
  410. data/spec/tags/library_spec.rb +48 -48
  411. data/spec/tags/overload_tag_spec.rb +53 -53
  412. data/spec/tags/ref_tag_list_spec.rb +53 -53
  413. data/spec/tags/types_explainer_spec.rb +203 -203
  414. data/spec/templates/class_spec.rb +45 -45
  415. data/spec/templates/constant_spec.rb +41 -41
  416. data/spec/templates/engine_spec.rb +131 -131
  417. data/spec/templates/examples/class001.html +308 -308
  418. data/spec/templates/examples/class001.txt +36 -36
  419. data/spec/templates/examples/class002.html +39 -39
  420. data/spec/templates/examples/constant001.txt +24 -24
  421. data/spec/templates/examples/constant002.txt +6 -6
  422. data/spec/templates/examples/constant003.txt +10 -10
  423. data/spec/templates/examples/method001.html +137 -137
  424. data/spec/templates/examples/method001.txt +35 -35
  425. data/spec/templates/examples/method002.html +91 -91
  426. data/spec/templates/examples/method002.txt +20 -20
  427. data/spec/templates/examples/method003.html +165 -165
  428. data/spec/templates/examples/method003.txt +45 -45
  429. data/spec/templates/examples/method004.html +48 -48
  430. data/spec/templates/examples/method004.txt +10 -10
  431. data/spec/templates/examples/method005.html +105 -105
  432. data/spec/templates/examples/method005.txt +33 -33
  433. data/spec/templates/examples/method006.html +107 -107
  434. data/spec/templates/examples/method006.txt +20 -20
  435. data/spec/templates/examples/module001.dot +33 -33
  436. data/spec/templates/examples/module001.html +833 -833
  437. data/spec/templates/examples/module001.txt +33 -33
  438. data/spec/templates/examples/module002.html +341 -341
  439. data/spec/templates/examples/module003.html +202 -202
  440. data/spec/templates/examples/module004.html +394 -394
  441. data/spec/templates/examples/module005.html +81 -81
  442. data/spec/templates/examples/tag001.txt +82 -82
  443. data/spec/templates/helpers/base_helper_spec.rb +171 -171
  444. data/spec/templates/helpers/html_helper_spec.rb +687 -668
  445. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +65 -65
  446. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +84 -84
  447. data/spec/templates/helpers/markup_helper_spec.rb +136 -136
  448. data/spec/templates/helpers/method_helper_spec.rb +107 -107
  449. data/spec/templates/helpers/module_helper_spec.rb +35 -35
  450. data/spec/templates/helpers/shared_signature_examples.rb +126 -126
  451. data/spec/templates/helpers/text_helper_spec.rb +65 -65
  452. data/spec/templates/markup_processor_integrations/asciidoctor_spec.rb +60 -0
  453. data/spec/templates/markup_processor_integrations/integration_spec_helper.rb +46 -0
  454. data/spec/templates/markup_processor_integrations/rdoc_markdown_spec.rb +59 -0
  455. data/spec/templates/markup_processor_integrations/rdoc_spec.rb +39 -0
  456. data/spec/templates/markup_processor_integrations/redcarpet_spec.rb +59 -0
  457. data/spec/templates/markup_processor_integrations/redcloth_spec.rb +48 -0
  458. data/spec/templates/method_spec.rb +118 -118
  459. data/spec/templates/module_spec.rb +203 -203
  460. data/spec/templates/onefile_spec.rb +66 -66
  461. data/spec/templates/section_spec.rb +144 -144
  462. data/spec/templates/spec_helper.rb +76 -76
  463. data/spec/templates/tag_spec.rb +52 -52
  464. data/spec/templates/template_spec.rb +410 -410
  465. data/spec/verifier_spec.rb +106 -106
  466. data/templates/default/class/dot/setup.rb +7 -7
  467. data/templates/default/class/dot/superklass.erb +2 -2
  468. data/templates/default/class/html/constructor_details.erb +8 -8
  469. data/templates/default/class/html/setup.rb +2 -2
  470. data/templates/default/class/html/subclasses.erb +4 -4
  471. data/templates/default/class/setup.rb +36 -36
  472. data/templates/default/class/text/setup.rb +12 -12
  473. data/templates/default/class/text/subclasses.erb +5 -5
  474. data/templates/default/constant/text/header.erb +11 -11
  475. data/templates/default/constant/text/setup.rb +4 -4
  476. data/templates/default/docstring/html/abstract.erb +4 -4
  477. data/templates/default/docstring/html/deprecated.erb +1 -1
  478. data/templates/default/docstring/html/index.erb +5 -5
  479. data/templates/default/docstring/html/note.erb +6 -6
  480. data/templates/default/docstring/html/private.erb +4 -4
  481. data/templates/default/docstring/html/text.erb +1 -1
  482. data/templates/default/docstring/html/todo.erb +6 -6
  483. data/templates/default/docstring/setup.rb +52 -52
  484. data/templates/default/docstring/text/abstract.erb +2 -2
  485. data/templates/default/docstring/text/deprecated.erb +2 -2
  486. data/templates/default/docstring/text/index.erb +2 -2
  487. data/templates/default/docstring/text/note.erb +3 -3
  488. data/templates/default/docstring/text/private.erb +2 -2
  489. data/templates/default/docstring/text/text.erb +1 -1
  490. data/templates/default/docstring/text/todo.erb +3 -3
  491. data/templates/default/fulldoc/html/css/full_list.css +58 -58
  492. data/templates/default/fulldoc/html/css/style.css +496 -496
  493. data/templates/default/fulldoc/html/frames.erb +17 -17
  494. data/templates/default/fulldoc/html/full_list.erb +37 -37
  495. data/templates/default/fulldoc/html/full_list_class.erb +2 -2
  496. data/templates/default/fulldoc/html/full_list_file.erb +7 -7
  497. data/templates/default/fulldoc/html/full_list_method.erb +10 -10
  498. data/templates/default/fulldoc/html/js/app.js +314 -292
  499. data/templates/default/fulldoc/html/js/full_list.js +216 -216
  500. data/templates/default/fulldoc/html/js/jquery.js +3 -3
  501. data/templates/default/fulldoc/html/setup.rb +241 -241
  502. data/templates/default/layout/dot/header.erb +5 -5
  503. data/templates/default/layout/dot/setup.rb +15 -15
  504. data/templates/default/layout/html/breadcrumb.erb +11 -11
  505. data/templates/default/layout/html/files.erb +11 -11
  506. data/templates/default/layout/html/footer.erb +5 -5
  507. data/templates/default/layout/html/headers.erb +15 -15
  508. data/templates/default/layout/html/index.erb +2 -2
  509. data/templates/default/layout/html/layout.erb +23 -23
  510. data/templates/default/layout/html/listing.erb +4 -4
  511. data/templates/default/layout/html/objects.erb +32 -32
  512. data/templates/default/layout/html/script_setup.erb +4 -4
  513. data/templates/default/layout/html/search.erb +12 -12
  514. data/templates/default/layout/html/setup.rb +89 -89
  515. data/templates/default/method/html/header.erb +16 -16
  516. data/templates/default/method/setup.rb +4 -4
  517. data/templates/default/method_details/html/header.erb +2 -2
  518. data/templates/default/method_details/html/method_signature.erb +24 -24
  519. data/templates/default/method_details/html/source.erb +9 -9
  520. data/templates/default/method_details/setup.rb +11 -11
  521. data/templates/default/method_details/text/header.erb +10 -10
  522. data/templates/default/method_details/text/method_signature.erb +12 -12
  523. data/templates/default/method_details/text/setup.rb +11 -11
  524. data/templates/default/module/dot/child.erb +1 -1
  525. data/templates/default/module/dot/dependencies.erb +2 -2
  526. data/templates/default/module/dot/header.erb +6 -6
  527. data/templates/default/module/dot/info.erb +13 -13
  528. data/templates/default/module/dot/setup.rb +15 -15
  529. data/templates/default/module/html/attribute_details.erb +10 -10
  530. data/templates/default/module/html/attribute_summary.erb +8 -8
  531. data/templates/default/module/html/box_info.erb +43 -43
  532. data/templates/default/module/html/children.erb +8 -8
  533. data/templates/default/module/html/constant_summary.erb +17 -17
  534. data/templates/default/module/html/defines.erb +2 -2
  535. data/templates/default/module/html/header.erb +5 -5
  536. data/templates/default/module/html/inherited_attributes.erb +14 -14
  537. data/templates/default/module/html/inherited_constants.erb +8 -8
  538. data/templates/default/module/html/inherited_methods.erb +18 -18
  539. data/templates/default/module/html/item_summary.erb +40 -40
  540. data/templates/default/module/html/method_details_list.erb +9 -9
  541. data/templates/default/module/html/method_summary.erb +13 -13
  542. data/templates/default/module/html/methodmissing.erb +12 -12
  543. data/templates/default/module/setup.rb +167 -167
  544. data/templates/default/module/text/children.erb +9 -9
  545. data/templates/default/module/text/class_meths_list.erb +7 -7
  546. data/templates/default/module/text/extends.erb +7 -7
  547. data/templates/default/module/text/header.erb +7 -7
  548. data/templates/default/module/text/includes.erb +7 -7
  549. data/templates/default/module/text/instance_meths_list.erb +7 -7
  550. data/templates/default/module/text/setup.rb +13 -13
  551. data/templates/default/onefile/html/files.erb +4 -4
  552. data/templates/default/onefile/html/headers.erb +6 -6
  553. data/templates/default/onefile/html/layout.erb +17 -17
  554. data/templates/default/onefile/html/readme.erb +2 -2
  555. data/templates/default/onefile/html/setup.rb +62 -62
  556. data/templates/default/root/dot/child.erb +2 -2
  557. data/templates/default/root/dot/setup.rb +6 -6
  558. data/templates/default/root/html/setup.rb +2 -2
  559. data/templates/default/tags/html/example.erb +10 -10
  560. data/templates/default/tags/html/index.erb +2 -2
  561. data/templates/default/tags/html/option.erb +24 -24
  562. data/templates/default/tags/html/overload.erb +13 -13
  563. data/templates/default/tags/html/see.erb +7 -7
  564. data/templates/default/tags/html/tag.erb +20 -20
  565. data/templates/default/tags/setup.rb +57 -57
  566. data/templates/default/tags/text/example.erb +12 -12
  567. data/templates/default/tags/text/index.erb +1 -1
  568. data/templates/default/tags/text/option.erb +20 -20
  569. data/templates/default/tags/text/overload.erb +19 -19
  570. data/templates/default/tags/text/see.erb +11 -11
  571. data/templates/default/tags/text/tag.erb +13 -13
  572. data/templates/guide/class/html/setup.rb +2 -2
  573. data/templates/guide/docstring/html/setup.rb +2 -2
  574. data/templates/guide/fulldoc/html/css/style.css +108 -108
  575. data/templates/guide/fulldoc/html/js/app.js +33 -33
  576. data/templates/guide/fulldoc/html/setup.rb +74 -74
  577. data/templates/guide/layout/html/layout.erb +81 -81
  578. data/templates/guide/layout/html/setup.rb +25 -25
  579. data/templates/guide/method/html/header.erb +17 -17
  580. data/templates/guide/method/html/setup.rb +22 -22
  581. data/templates/guide/module/html/header.erb +6 -6
  582. data/templates/guide/module/html/method_list.erb +4 -4
  583. data/templates/guide/module/html/setup.rb +27 -27
  584. data/templates/guide/onefile/html/files.erb +4 -4
  585. data/templates/guide/onefile/html/setup.rb +6 -6
  586. data/templates/guide/onefile/html/toc.erb +3 -3
  587. data/templates/guide/tags/html/setup.rb +9 -9
  588. data/yard.gemspec +24 -43
  589. metadata +28 -21
  590. data/spec/examples.txt +0 -1878
@@ -1,254 +1,254 @@
1
- # frozen_string_literal: true
2
- require 'stringio'
3
- require 'open-uri'
4
-
5
- RSpec.describe YARD::CLI::Diff do
6
- before do
7
- allow(CLI::Yardoc).to receive(:run)
8
- allow(CLI::Gems).to receive(:run)
9
- @diff = CLI::Diff.new
10
- end
11
-
12
- describe "Argument handling" do
13
- it "exits if there is only one gem name" do
14
- expect(@diff).to receive(:exit)
15
- expect(log).to receive(:puts).with(/Usage/)
16
- @diff.run
17
- end
18
- end
19
-
20
- describe "Diffing" do
21
- before do
22
- @objects1 = nil
23
- @objects2 = nil
24
- end
25
-
26
- def run(*args)
27
- @all_call = -1
28
- @data = StringIO.new
29
- @objects1 ||= %w(C#fooey C#baz D.bar)
30
- @objects2 ||= %w(A A::B A::B::C A.foo A#foo B C.foo C.bar C#baz)
31
- @objects = [@objects1, @objects2]
32
- expect(@diff).to receive(:load_gem_data).ordered.with('gem1') do
33
- Registry.clear
34
- YARD.parse_string <<-eof
35
- class C
36
- def fooey; end
37
- def baz; FOO end
38
- end
39
- class D
40
- def self.bar; end
41
- end
42
- eof
43
- end
44
- expect(@diff).to receive(:load_gem_data).ordered.with('gem2') do
45
- Registry.clear
46
- YARD.parse_string <<-eof
47
- module A
48
- module B
49
- class C; end
50
- end
51
- def self.foo; end
52
- def foo; end
53
- end
54
- class C
55
- def self.foo; end
56
- def self.bar; end
57
- def baz; BAR end
58
- end
59
- eof
60
- end
61
- allow(log).to receive(:print) {|data| @data << data }
62
- allow(log).to receive(:puts) {|*pargs| @data << pargs.join("\n"); @data << "\n" }
63
- @diff.run(*(args + ['gem1', 'gem2']))
64
- end
65
-
66
- it "shows differences between objects" do
67
- run
68
- expect(@data.string).to eq <<-eof
69
- Added objects:
70
-
71
- A ((stdin):1) (...)
72
- A::B::C ((stdin):3)
73
- C.bar ((stdin):10)
74
- C.foo ((stdin):9)
75
-
76
- Modified objects:
77
-
78
- C#baz ((stdin):3)
79
-
80
- Removed objects:
81
-
82
- C#fooey ((stdin):2)
83
- D ((stdin):5) (...)
84
-
85
- eof
86
- end
87
-
88
- it "accepts --compact" do
89
- run('--compact')
90
- expect(@data.string).to eq <<-eof
91
- A A ((stdin):1) (...)
92
- A A::B::C ((stdin):3)
93
- A C.bar ((stdin):10)
94
- A C.foo ((stdin):9)
95
- M C#baz ((stdin):3)
96
- D C#fooey ((stdin):2)
97
- D D ((stdin):5) (...)
98
- eof
99
- end
100
-
101
- it "accepts -a/--all" do
102
- ['-a', '--all'].each do |opt|
103
- run(opt)
104
- expect(@data.string).to eq <<-eof
105
- Added objects:
106
-
107
- A ((stdin):1)
108
- A#foo ((stdin):6)
109
- A.foo ((stdin):5)
110
- A::B ((stdin):2)
111
- A::B::C ((stdin):3)
112
- C.bar ((stdin):10)
113
- C.foo ((stdin):9)
114
-
115
- Modified objects:
116
-
117
- C#baz ((stdin):3)
118
-
119
- Removed objects:
120
-
121
- C#fooey ((stdin):2)
122
- D ((stdin):5)
123
- D.bar ((stdin):6)
124
-
125
- eof
126
- end
127
- end
128
-
129
- it "accepts --compact and --all" do
130
- run('--compact', '--all')
131
- expect(@data.string).to eq <<-eof
132
- A A ((stdin):1)
133
- A A#foo ((stdin):6)
134
- A A.foo ((stdin):5)
135
- A A::B ((stdin):2)
136
- A A::B::C ((stdin):3)
137
- A C.bar ((stdin):10)
138
- A C.foo ((stdin):9)
139
- M C#baz ((stdin):3)
140
- D C#fooey ((stdin):2)
141
- D D ((stdin):5)
142
- D D.bar ((stdin):6)
143
- eof
144
- end
145
-
146
- it "accepts --no-modified" do
147
- run('--compact', '--no-modified')
148
- expect(@data.string).to eq <<-eof
149
- A A ((stdin):1) (...)
150
- A A::B::C ((stdin):3)
151
- A C.bar ((stdin):10)
152
- A C.foo ((stdin):9)
153
- D C#fooey ((stdin):2)
154
- D D ((stdin):5) (...)
155
- eof
156
- end
157
-
158
- it "accepts --query" do
159
- run('--compact', '--query', 'o.type == :method')
160
- expect(@data.string).to eq <<-eof
161
- A A#foo ((stdin):6)
162
- A A.foo ((stdin):5)
163
- A C.bar ((stdin):10)
164
- A C.foo ((stdin):9)
165
- M C#baz ((stdin):3)
166
- D C#fooey ((stdin):2)
167
- D D.bar ((stdin):6)
168
- eof
169
- end
170
- end
171
-
172
- describe "File searching" do
173
- before do
174
- allow(@diff).to receive(:generate_yardoc)
175
- end
176
-
177
- it "searches for gem/.yardoc" do
178
- expect(File).to receive(:directory?).with('gem1/.yardoc').and_return(true)
179
- expect(File).to receive(:directory?).with('gem2/.yardoc').and_return(true)
180
- expect(Registry).to receive(:load_yardoc).with('gem1/.yardoc')
181
- expect(Registry).to receive(:load_yardoc).with('gem2/.yardoc')
182
- @diff.run('gem1', 'gem2')
183
- end
184
-
185
- it "searches for argument as yardoc" do
186
- expect(File).to receive(:directory?).with('gem1/.yardoc').and_return(false)
187
- expect(File).to receive(:directory?).with('gem2/.yardoc').and_return(false)
188
- expect(File).to receive(:directory?).with('gem1').and_return(true)
189
- expect(File).to receive(:directory?).with('gem2').and_return(true)
190
- expect(Registry).to receive(:load_yardoc).with('gem1')
191
- expect(Registry).to receive(:load_yardoc).with('gem2')
192
- @diff.run('gem1', 'gem2')
193
- end
194
-
195
- it "searches for installed gem" do
196
- expect(File).to receive(:directory?).with('gem1-1.0.0.gem/.yardoc').and_return(false)
197
- expect(File).to receive(:directory?).with('gem2-1.0.0/.yardoc').and_return(false)
198
- expect(File).to receive(:directory?).with('gem1-1.0.0.gem').and_return(false)
199
- expect(File).to receive(:directory?).with('gem2-1.0.0').and_return(false)
200
- spec1 = double(:spec)
201
- spec2 = double(:spec)
202
- allow(YARD::GemIndex).to receive(:each) {|&b| [spec1, spec2].each(&b) }
203
- allow(spec1).to receive(:full_name).and_return('gem1-1.0.0')
204
- allow(spec1).to receive(:name).and_return('gem1')
205
- allow(spec1).to receive(:version).and_return('1.0.0')
206
- allow(spec2).to receive(:full_name).and_return('gem2-1.0.0')
207
- allow(spec2).to receive(:name).and_return('gem2')
208
- allow(spec2).to receive(:version).and_return('1.0.0')
209
- expect(Registry).to receive(:yardoc_file_for_gem).with('gem1', '= 1.0.0').and_return('/path/to/file')
210
- expect(Registry).to receive(:yardoc_file_for_gem).with('gem2', '= 1.0.0').and_return(nil)
211
- expect(Registry).to receive(:load_yardoc).with('/path/to/file')
212
- expect(CLI::Gems).to receive(:run).with('gem2', '1.0.0').and_return(nil)
213
- allow(Dir).to receive(:chdir)
214
- @diff.run('gem1-1.0.0.gem', 'gem2-1.0.0')
215
- end
216
-
217
- it "searches for .gem file" do
218
- expect(File).to receive(:directory?).with('gem1/.yardoc').and_return(false)
219
- expect(File).to receive(:directory?).with('gem2.gem/.yardoc').and_return(false)
220
- expect(File).to receive(:directory?).with('gem1').and_return(false)
221
- expect(File).to receive(:directory?).with('gem2.gem').and_return(false)
222
- expect(File).to receive(:exist?).with('gem1.gem').and_return(true)
223
- expect(File).to receive(:exist?).with('gem2.gem').and_return(true)
224
- expect(File).to receive(:open).with('gem1.gem', 'rb')
225
- expect(File).to receive(:open).with('gem2.gem', 'rb')
226
- allow(FileUtils).to receive(:mkdir_p)
227
- allow(Gem::Package).to receive(:open)
228
- allow(FileUtils).to receive(:rm_rf)
229
- @diff.run('gem1', 'gem2.gem')
230
- end
231
-
232
- it "searches for .gem file on rubygems.org" do
233
- expect(File).to receive(:directory?).with('gem1/.yardoc').and_return(false)
234
- expect(File).to receive(:directory?).with('gem2.gem/.yardoc').and_return(false)
235
- expect(File).to receive(:directory?).with('gem1').and_return(false)
236
- expect(File).to receive(:directory?).with('gem2.gem').and_return(false)
237
- expect(File).to receive(:exist?).with('gem1.gem').and_return(false)
238
- expect(File).to receive(:exist?).with('gem2.gem').and_return(false)
239
- expect(@diff).to receive(:open).with('http://rubygems.org/downloads/gem1.gem')
240
- expect(@diff).to receive(:open).with('http://rubygems.org/downloads/gem2.gem')
241
- allow(FileUtils).to receive(:mkdir_p)
242
- allow(Gem::Package).to receive(:open)
243
- allow(FileUtils).to receive(:rm_rf)
244
- @diff.run('gem1', 'gem2.gem')
245
- end
246
-
247
- it "raises an error if gem is not found" do
248
- expect(log).to receive(:error).with("Cannot find gem gem1")
249
- expect(log).to receive(:error).with("Cannot find gem gem2.gem")
250
- allow(@diff).to receive(:load_gem_data).and_return(false)
251
- @diff.run('gem1', 'gem2.gem')
252
- end
253
- end
254
- end
1
+ # frozen_string_literal: true
2
+ require 'stringio'
3
+ require 'open-uri'
4
+
5
+ RSpec.describe YARD::CLI::Diff do
6
+ before do
7
+ allow(CLI::Yardoc).to receive(:run)
8
+ allow(CLI::Gems).to receive(:run)
9
+ @diff = CLI::Diff.new
10
+ end
11
+
12
+ describe "Argument handling" do
13
+ it "exits if there is only one gem name" do
14
+ expect(@diff).to receive(:exit)
15
+ expect(log).to receive(:puts).with(/Usage/)
16
+ @diff.run
17
+ end
18
+ end
19
+
20
+ describe "Diffing" do
21
+ before do
22
+ @objects1 = nil
23
+ @objects2 = nil
24
+ end
25
+
26
+ def run(*args)
27
+ @all_call = -1
28
+ @data = StringIO.new
29
+ @objects1 ||= %w(C#fooey C#baz D.bar)
30
+ @objects2 ||= %w(A A::B A::B::C A.foo A#foo B C.foo C.bar C#baz)
31
+ @objects = [@objects1, @objects2]
32
+ expect(@diff).to receive(:load_gem_data).ordered.with('gem1') do
33
+ Registry.clear
34
+ YARD.parse_string <<-eof
35
+ class C
36
+ def fooey; end
37
+ def baz; FOO end
38
+ end
39
+ class D
40
+ def self.bar; end
41
+ end
42
+ eof
43
+ end
44
+ expect(@diff).to receive(:load_gem_data).ordered.with('gem2') do
45
+ Registry.clear
46
+ YARD.parse_string <<-eof
47
+ module A
48
+ module B
49
+ class C; end
50
+ end
51
+ def self.foo; end
52
+ def foo; end
53
+ end
54
+ class C
55
+ def self.foo; end
56
+ def self.bar; end
57
+ def baz; BAR end
58
+ end
59
+ eof
60
+ end
61
+ allow(log).to receive(:print) {|data| @data << data }
62
+ allow(log).to receive(:puts) {|*pargs| @data << pargs.join("\n"); @data << "\n" }
63
+ @diff.run(*(args + ['gem1', 'gem2']))
64
+ end
65
+
66
+ it "shows differences between objects" do
67
+ run
68
+ expect(@data.string).to eq <<-eof
69
+ Added objects:
70
+
71
+ A ((stdin):1) (...)
72
+ A::B::C ((stdin):3)
73
+ C.bar ((stdin):10)
74
+ C.foo ((stdin):9)
75
+
76
+ Modified objects:
77
+
78
+ C#baz ((stdin):3)
79
+
80
+ Removed objects:
81
+
82
+ C#fooey ((stdin):2)
83
+ D ((stdin):5) (...)
84
+
85
+ eof
86
+ end
87
+
88
+ it "accepts --compact" do
89
+ run('--compact')
90
+ expect(@data.string).to eq <<-eof
91
+ A A ((stdin):1) (...)
92
+ A A::B::C ((stdin):3)
93
+ A C.bar ((stdin):10)
94
+ A C.foo ((stdin):9)
95
+ M C#baz ((stdin):3)
96
+ D C#fooey ((stdin):2)
97
+ D D ((stdin):5) (...)
98
+ eof
99
+ end
100
+
101
+ it "accepts -a/--all" do
102
+ ['-a', '--all'].each do |opt|
103
+ run(opt)
104
+ expect(@data.string).to eq <<-eof
105
+ Added objects:
106
+
107
+ A ((stdin):1)
108
+ A#foo ((stdin):6)
109
+ A.foo ((stdin):5)
110
+ A::B ((stdin):2)
111
+ A::B::C ((stdin):3)
112
+ C.bar ((stdin):10)
113
+ C.foo ((stdin):9)
114
+
115
+ Modified objects:
116
+
117
+ C#baz ((stdin):3)
118
+
119
+ Removed objects:
120
+
121
+ C#fooey ((stdin):2)
122
+ D ((stdin):5)
123
+ D.bar ((stdin):6)
124
+
125
+ eof
126
+ end
127
+ end
128
+
129
+ it "accepts --compact and --all" do
130
+ run('--compact', '--all')
131
+ expect(@data.string).to eq <<-eof
132
+ A A ((stdin):1)
133
+ A A#foo ((stdin):6)
134
+ A A.foo ((stdin):5)
135
+ A A::B ((stdin):2)
136
+ A A::B::C ((stdin):3)
137
+ A C.bar ((stdin):10)
138
+ A C.foo ((stdin):9)
139
+ M C#baz ((stdin):3)
140
+ D C#fooey ((stdin):2)
141
+ D D ((stdin):5)
142
+ D D.bar ((stdin):6)
143
+ eof
144
+ end
145
+
146
+ it "accepts --no-modified" do
147
+ run('--compact', '--no-modified')
148
+ expect(@data.string).to eq <<-eof
149
+ A A ((stdin):1) (...)
150
+ A A::B::C ((stdin):3)
151
+ A C.bar ((stdin):10)
152
+ A C.foo ((stdin):9)
153
+ D C#fooey ((stdin):2)
154
+ D D ((stdin):5) (...)
155
+ eof
156
+ end
157
+
158
+ it "accepts --query" do
159
+ run('--compact', '--query', 'o.type == :method')
160
+ expect(@data.string).to eq <<-eof
161
+ A A#foo ((stdin):6)
162
+ A A.foo ((stdin):5)
163
+ A C.bar ((stdin):10)
164
+ A C.foo ((stdin):9)
165
+ M C#baz ((stdin):3)
166
+ D C#fooey ((stdin):2)
167
+ D D.bar ((stdin):6)
168
+ eof
169
+ end
170
+ end
171
+
172
+ describe "File searching" do
173
+ before do
174
+ allow(@diff).to receive(:generate_yardoc)
175
+ end
176
+
177
+ it "searches for gem/.yardoc" do
178
+ expect(File).to receive(:directory?).with('gem1/.yardoc').and_return(true)
179
+ expect(File).to receive(:directory?).with('gem2/.yardoc').and_return(true)
180
+ expect(Registry).to receive(:load_yardoc).with('gem1/.yardoc')
181
+ expect(Registry).to receive(:load_yardoc).with('gem2/.yardoc')
182
+ @diff.run('gem1', 'gem2')
183
+ end
184
+
185
+ it "searches for argument as yardoc" do
186
+ expect(File).to receive(:directory?).with('gem1/.yardoc').and_return(false)
187
+ expect(File).to receive(:directory?).with('gem2/.yardoc').and_return(false)
188
+ expect(File).to receive(:directory?).with('gem1').and_return(true)
189
+ expect(File).to receive(:directory?).with('gem2').and_return(true)
190
+ expect(Registry).to receive(:load_yardoc).with('gem1')
191
+ expect(Registry).to receive(:load_yardoc).with('gem2')
192
+ @diff.run('gem1', 'gem2')
193
+ end
194
+
195
+ it "searches for installed gem" do
196
+ expect(File).to receive(:directory?).with('gem1-1.0.0.gem/.yardoc').and_return(false)
197
+ expect(File).to receive(:directory?).with('gem2-1.0.0/.yardoc').and_return(false)
198
+ expect(File).to receive(:directory?).with('gem1-1.0.0.gem').and_return(false)
199
+ expect(File).to receive(:directory?).with('gem2-1.0.0').and_return(false)
200
+ spec1 = double(:spec)
201
+ spec2 = double(:spec)
202
+ allow(YARD::GemIndex).to receive(:each) {|&b| [spec1, spec2].each(&b) }
203
+ allow(spec1).to receive(:full_name).and_return('gem1-1.0.0')
204
+ allow(spec1).to receive(:name).and_return('gem1')
205
+ allow(spec1).to receive(:version).and_return('1.0.0')
206
+ allow(spec2).to receive(:full_name).and_return('gem2-1.0.0')
207
+ allow(spec2).to receive(:name).and_return('gem2')
208
+ allow(spec2).to receive(:version).and_return('1.0.0')
209
+ expect(Registry).to receive(:yardoc_file_for_gem).with('gem1', '= 1.0.0').and_return('/path/to/file')
210
+ expect(Registry).to receive(:yardoc_file_for_gem).with('gem2', '= 1.0.0').and_return(nil)
211
+ expect(Registry).to receive(:load_yardoc).with('/path/to/file')
212
+ expect(CLI::Gems).to receive(:run).with('gem2', '1.0.0').and_return(nil)
213
+ allow(Dir).to receive(:chdir)
214
+ @diff.run('gem1-1.0.0.gem', 'gem2-1.0.0')
215
+ end
216
+
217
+ it "searches for .gem file" do
218
+ expect(File).to receive(:directory?).with('gem1/.yardoc').and_return(false)
219
+ expect(File).to receive(:directory?).with('gem2.gem/.yardoc').and_return(false)
220
+ expect(File).to receive(:directory?).with('gem1').and_return(false)
221
+ expect(File).to receive(:directory?).with('gem2.gem').and_return(false)
222
+ expect(File).to receive(:exist?).with('gem1.gem').and_return(true)
223
+ expect(File).to receive(:exist?).with('gem2.gem').and_return(true)
224
+ expect(File).to receive(:open).with('gem1.gem', 'rb')
225
+ expect(File).to receive(:open).with('gem2.gem', 'rb')
226
+ allow(FileUtils).to receive(:mkdir_p)
227
+ allow(Gem::Package).to receive(:open)
228
+ allow(FileUtils).to receive(:rm_rf)
229
+ @diff.run('gem1', 'gem2.gem')
230
+ end
231
+
232
+ it "searches for .gem file on rubygems.org" do
233
+ expect(File).to receive(:directory?).with('gem1/.yardoc').and_return(false)
234
+ expect(File).to receive(:directory?).with('gem2.gem/.yardoc').and_return(false)
235
+ expect(File).to receive(:directory?).with('gem1').and_return(false)
236
+ expect(File).to receive(:directory?).with('gem2.gem').and_return(false)
237
+ expect(File).to receive(:exist?).with('gem1.gem').and_return(false)
238
+ expect(File).to receive(:exist?).with('gem2.gem').and_return(false)
239
+ expect(@diff).to receive(:open).with('http://rubygems.org/downloads/gem1.gem')
240
+ expect(@diff).to receive(:open).with('http://rubygems.org/downloads/gem2.gem')
241
+ allow(FileUtils).to receive(:mkdir_p)
242
+ allow(Gem::Package).to receive(:open)
243
+ allow(FileUtils).to receive(:rm_rf)
244
+ @diff.run('gem1', 'gem2.gem')
245
+ end
246
+
247
+ it "raises an error if gem is not found" do
248
+ expect(log).to receive(:error).with("Cannot find gem gem1")
249
+ expect(log).to receive(:error).with("Cannot find gem gem2.gem")
250
+ allow(@diff).to receive(:load_gem_data).and_return(false)
251
+ @diff.run('gem1', 'gem2.gem')
252
+ end
253
+ end
254
+ end