yard 0.9.21 → 0.9.26

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 (250) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +0 -0
  3. data/.gitattributes +4 -0
  4. data/.github/FUNDING.yml +3 -0
  5. data/.github/ISSUE_TEMPLATE.md +6 -6
  6. data/.github/PULL_REQUEST_TEMPLATE.md +5 -5
  7. data/.github/workflows/ci.yml +42 -0
  8. data/.github/workflows/gem.yml +27 -0
  9. data/.gitignore +0 -0
  10. data/.rspec +0 -0
  11. data/.rubocop.yml +37 -24
  12. data/.travis.yml +0 -3
  13. data/.yardopts +0 -0
  14. data/.yardopts_guide +0 -0
  15. data/.yardopts_i18n +0 -0
  16. data/CHANGELOG.md +47 -4
  17. data/CONTRIBUTING.md +2 -2
  18. data/Gemfile +4 -3
  19. data/README.md +97 -102
  20. data/Rakefile +2 -0
  21. data/lib/yard/cli/diff.rb +4 -1
  22. data/lib/yard/cli/server.rb +22 -13
  23. data/lib/yard/code_objects/method_object.rb +1 -1
  24. data/lib/yard/code_objects/namespace_mapper.rb +30 -3
  25. data/lib/yard/code_objects/proxy.rb +2 -1
  26. data/lib/yard/globals.rb +1 -1
  27. data/lib/yard/handlers/c/base.rb +35 -0
  28. data/lib/yard/handlers/ruby/mixin_handler.rb +4 -1
  29. data/lib/yard/parser/ruby/legacy/irb/slex.rb +1 -1
  30. data/lib/yard/parser/ruby/ruby_parser.rb +6 -4
  31. data/lib/yard/parser/ruby/token_resolver.rb +3 -1
  32. data/lib/yard/parser/source_parser.rb +1 -1
  33. data/lib/yard/registry_resolver.rb +10 -24
  34. data/lib/yard/registry_store.rb +1 -1
  35. data/lib/yard/serializers/yardoc_serializer.rb +1 -1
  36. data/lib/yard/server/commands/base.rb +2 -2
  37. data/lib/yard/templates/helpers/html_helper.rb +10 -3
  38. data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +1 -1
  39. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +5 -4
  40. data/lib/yard/templates/section.rb +1 -3
  41. data/lib/yard/version.rb +1 -1
  42. data/samus.json +15 -46
  43. data/tasks/update_error_map.rake +53 -0
  44. data/templates/default/fulldoc/html/css/style.css +1 -0
  45. data/templates/default/fulldoc/html/js/jquery.js +4 -2
  46. data/yard.gemspec +1 -2
  47. metadata +9 -206
  48. data/spec/cli/command_parser_spec.rb +0 -43
  49. data/spec/cli/command_spec.rb +0 -36
  50. data/spec/cli/config_spec.rb +0 -148
  51. data/spec/cli/diff_spec.rb +0 -254
  52. data/spec/cli/display_spec.rb +0 -30
  53. data/spec/cli/gems_spec.rb +0 -81
  54. data/spec/cli/graph_spec.rb +0 -18
  55. data/spec/cli/help_spec.rb +0 -22
  56. data/spec/cli/i18n_spec.rb +0 -107
  57. data/spec/cli/list_spec.rb +0 -8
  58. data/spec/cli/markup_types_spec.rb +0 -22
  59. data/spec/cli/server_spec.rb +0 -324
  60. data/spec/cli/stats_spec.rb +0 -96
  61. data/spec/cli/yard_on_yard_spec.rb +0 -38
  62. data/spec/cli/yardoc_spec.rb +0 -896
  63. data/spec/cli/yri_spec.rb +0 -101
  64. data/spec/code_objects/base_spec.rb +0 -485
  65. data/spec/code_objects/class_object_spec.rb +0 -226
  66. data/spec/code_objects/code_object_list_spec.rb +0 -36
  67. data/spec/code_objects/constants_spec.rb +0 -116
  68. data/spec/code_objects/extra_file_object_spec.rb +0 -161
  69. data/spec/code_objects/macro_object_spec.rb +0 -150
  70. data/spec/code_objects/method_object_spec.rb +0 -184
  71. data/spec/code_objects/module_object_spec.rb +0 -142
  72. data/spec/code_objects/namespace_object_spec.rb +0 -171
  73. data/spec/code_objects/proxy_spec.rb +0 -147
  74. data/spec/code_objects/spec_helper.rb +0 -3
  75. data/spec/config_spec.rb +0 -171
  76. data/spec/core_ext/array_spec.rb +0 -13
  77. data/spec/core_ext/file_spec.rb +0 -72
  78. data/spec/core_ext/hash_spec.rb +0 -14
  79. data/spec/core_ext/insertion_spec.rb +0 -37
  80. data/spec/core_ext/module_spec.rb +0 -9
  81. data/spec/core_ext/string_spec.rb +0 -42
  82. data/spec/core_ext/symbol_hash_spec.rb +0 -89
  83. data/spec/docstring_parser_spec.rb +0 -280
  84. data/spec/docstring_spec.rb +0 -373
  85. data/spec/handlers/alias_handler_spec.rb +0 -82
  86. data/spec/handlers/attribute_handler_spec.rb +0 -96
  87. data/spec/handlers/base_spec.rb +0 -216
  88. data/spec/handlers/c/alias_handler_spec.rb +0 -34
  89. data/spec/handlers/c/attribute_handler_spec.rb +0 -41
  90. data/spec/handlers/c/class_handler_spec.rb +0 -78
  91. data/spec/handlers/c/constant_handler_spec.rb +0 -71
  92. data/spec/handlers/c/init_handler_spec.rb +0 -48
  93. data/spec/handlers/c/method_handler_spec.rb +0 -327
  94. data/spec/handlers/c/mixin_handler_spec.rb +0 -44
  95. data/spec/handlers/c/module_handler_spec.rb +0 -71
  96. data/spec/handlers/c/override_comment_handler_spec.rb +0 -47
  97. data/spec/handlers/c/path_handler_spec.rb +0 -36
  98. data/spec/handlers/c/spec_helper.rb +0 -23
  99. data/spec/handlers/c/struct_handler_spec.rb +0 -16
  100. data/spec/handlers/class_condition_handler_spec.rb +0 -87
  101. data/spec/handlers/class_handler_spec.rb +0 -247
  102. data/spec/handlers/class_method_handler_shared_examples.rb +0 -133
  103. data/spec/handlers/class_variable_handler_spec.rb +0 -12
  104. data/spec/handlers/constant_handler_spec.rb +0 -112
  105. data/spec/handlers/decorator_handler_methods_spec.rb +0 -393
  106. data/spec/handlers/dsl_handler_spec.rb +0 -226
  107. data/spec/handlers/examples/alias_handler_001.rb.txt +0 -46
  108. data/spec/handlers/examples/attribute_handler_001.rb.txt +0 -32
  109. data/spec/handlers/examples/class_condition_handler_001.rb.txt +0 -69
  110. data/spec/handlers/examples/class_handler_001.rb.txt +0 -120
  111. data/spec/handlers/examples/class_variable_handler_001.rb.txt +0 -10
  112. data/spec/handlers/examples/constant_handler_001.rb.txt +0 -35
  113. data/spec/handlers/examples/dsl_handler_001.rb.txt +0 -156
  114. data/spec/handlers/examples/exception_handler_001.rb.txt +0 -59
  115. data/spec/handlers/examples/extend_handler_001.rb.txt +0 -19
  116. data/spec/handlers/examples/method_condition_handler_001.rb.txt +0 -10
  117. data/spec/handlers/examples/method_handler_001.rb.txt +0 -128
  118. data/spec/handlers/examples/mixin_handler_001.rb.txt +0 -40
  119. data/spec/handlers/examples/module_handler_001.rb.txt +0 -29
  120. data/spec/handlers/examples/private_constant_handler_001.rb.txt +0 -8
  121. data/spec/handlers/examples/process_handler_001.rb.txt +0 -11
  122. data/spec/handlers/examples/visibility_handler_001.rb.txt +0 -36
  123. data/spec/handlers/examples/yield_handler_001.rb.txt +0 -54
  124. data/spec/handlers/exception_handler_spec.rb +0 -49
  125. data/spec/handlers/extend_handler_spec.rb +0 -28
  126. data/spec/handlers/legacy_base_spec.rb +0 -128
  127. data/spec/handlers/method_condition_handler_spec.rb +0 -15
  128. data/spec/handlers/method_handler_spec.rb +0 -214
  129. data/spec/handlers/mixin_handler_spec.rb +0 -60
  130. data/spec/handlers/module_function_handler_spec.rb +0 -106
  131. data/spec/handlers/module_handler_spec.rb +0 -35
  132. data/spec/handlers/private_class_method_handler_spec.rb +0 -11
  133. data/spec/handlers/private_constant_handler_spec.rb +0 -25
  134. data/spec/handlers/processor_spec.rb +0 -35
  135. data/spec/handlers/public_class_method_handler_spec.rb +0 -11
  136. data/spec/handlers/ruby/base_spec.rb +0 -95
  137. data/spec/handlers/ruby/legacy/base_spec.rb +0 -84
  138. data/spec/handlers/spec_helper.rb +0 -33
  139. data/spec/handlers/visibility_handler_spec.rb +0 -44
  140. data/spec/handlers/yield_handler_spec.rb +0 -52
  141. data/spec/i18n/locale_spec.rb +0 -81
  142. data/spec/i18n/message_spec.rb +0 -52
  143. data/spec/i18n/messages_spec.rb +0 -67
  144. data/spec/i18n/pot_generator_spec.rb +0 -295
  145. data/spec/i18n/text_spec.rb +0 -184
  146. data/spec/logging_spec.rb +0 -44
  147. data/spec/options_spec.rb +0 -171
  148. data/spec/parser/base_spec.rb +0 -24
  149. data/spec/parser/c_parser_spec.rb +0 -236
  150. data/spec/parser/examples/array.c.txt +0 -6267
  151. data/spec/parser/examples/example1.rb.txt +0 -8
  152. data/spec/parser/examples/extrafile.c.txt +0 -8
  153. data/spec/parser/examples/file.c.txt +0 -28
  154. data/spec/parser/examples/multifile.c.txt +0 -22
  155. data/spec/parser/examples/namespace.cpp.txt +0 -68
  156. data/spec/parser/examples/override.c.txt +0 -424
  157. data/spec/parser/examples/parse_in_order_001.rb.txt +0 -2
  158. data/spec/parser/examples/parse_in_order_002.rb.txt +0 -2
  159. data/spec/parser/examples/tag_handler_001.rb.txt +0 -8
  160. data/spec/parser/ruby/ast_node_spec.rb +0 -33
  161. data/spec/parser/ruby/legacy/statement_list_spec.rb +0 -299
  162. data/spec/parser/ruby/legacy/token_list_spec.rb +0 -79
  163. data/spec/parser/ruby/ruby_parser_spec.rb +0 -508
  164. data/spec/parser/ruby/token_resolver_spec.rb +0 -165
  165. data/spec/parser/source_parser_spec.rb +0 -727
  166. data/spec/parser/tag_parsing_spec.rb +0 -17
  167. data/spec/rake/yardoc_task_spec.rb +0 -118
  168. data/spec/registry_spec.rb +0 -463
  169. data/spec/registry_store_spec.rb +0 -327
  170. data/spec/rubygems/doc_manager_spec.rb +0 -112
  171. data/spec/serializers/data/serialized_yardoc/checksums +0 -1
  172. data/spec/serializers/data/serialized_yardoc/objects/Foo.dat +0 -0
  173. data/spec/serializers/data/serialized_yardoc/objects/Foo/bar_i.dat +0 -0
  174. data/spec/serializers/data/serialized_yardoc/objects/Foo/baz_i.dat +0 -0
  175. data/spec/serializers/data/serialized_yardoc/objects/root.dat +0 -0
  176. data/spec/serializers/data/serialized_yardoc/proxy_types +0 -2
  177. data/spec/serializers/file_system_serializer_spec.rb +0 -145
  178. data/spec/serializers/spec_helper.rb +0 -2
  179. data/spec/serializers/yardoc_serializer_spec.rb +0 -78
  180. data/spec/server/adapter_spec.rb +0 -39
  181. data/spec/server/commands/base_spec.rb +0 -91
  182. data/spec/server/commands/library_command_spec.rb +0 -39
  183. data/spec/server/doc_server_helper_spec.rb +0 -72
  184. data/spec/server/doc_server_serializer_spec.rb +0 -60
  185. data/spec/server/rack_adapter_spec.rb +0 -21
  186. data/spec/server/router_spec.rb +0 -123
  187. data/spec/server/spec_helper.rb +0 -22
  188. data/spec/server/static_caching_spec.rb +0 -47
  189. data/spec/server/webrick_servlet_spec.rb +0 -20
  190. data/spec/server_spec.rb +0 -19
  191. data/spec/spec_helper.rb +0 -212
  192. data/spec/tags/default_factory_spec.rb +0 -168
  193. data/spec/tags/default_tag_spec.rb +0 -11
  194. data/spec/tags/directives_spec.rb +0 -463
  195. data/spec/tags/library_spec.rb +0 -48
  196. data/spec/tags/overload_tag_spec.rb +0 -53
  197. data/spec/tags/ref_tag_list_spec.rb +0 -53
  198. data/spec/tags/types_explainer_spec.rb +0 -203
  199. data/spec/templates/class_spec.rb +0 -45
  200. data/spec/templates/constant_spec.rb +0 -41
  201. data/spec/templates/engine_spec.rb +0 -131
  202. data/spec/templates/examples/class001.html +0 -308
  203. data/spec/templates/examples/class001.txt +0 -36
  204. data/spec/templates/examples/class002.html +0 -39
  205. data/spec/templates/examples/constant001.txt +0 -25
  206. data/spec/templates/examples/constant002.txt +0 -7
  207. data/spec/templates/examples/constant003.txt +0 -11
  208. data/spec/templates/examples/method001.html +0 -137
  209. data/spec/templates/examples/method001.txt +0 -35
  210. data/spec/templates/examples/method002.html +0 -91
  211. data/spec/templates/examples/method002.txt +0 -20
  212. data/spec/templates/examples/method003.html +0 -165
  213. data/spec/templates/examples/method003.txt +0 -45
  214. data/spec/templates/examples/method004.html +0 -48
  215. data/spec/templates/examples/method004.txt +0 -10
  216. data/spec/templates/examples/method005.html +0 -105
  217. data/spec/templates/examples/method005.txt +0 -33
  218. data/spec/templates/examples/method006.html +0 -108
  219. data/spec/templates/examples/method006.txt +0 -20
  220. data/spec/templates/examples/module001.dot +0 -33
  221. data/spec/templates/examples/module001.html +0 -833
  222. data/spec/templates/examples/module001.txt +0 -33
  223. data/spec/templates/examples/module002.html +0 -341
  224. data/spec/templates/examples/module003.html +0 -202
  225. data/spec/templates/examples/module004.html +0 -394
  226. data/spec/templates/examples/module005.html +0 -82
  227. data/spec/templates/examples/tag001.txt +0 -82
  228. data/spec/templates/helpers/base_helper_spec.rb +0 -171
  229. data/spec/templates/helpers/html_helper_spec.rb +0 -687
  230. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +0 -65
  231. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +0 -84
  232. data/spec/templates/helpers/markup_helper_spec.rb +0 -136
  233. data/spec/templates/helpers/method_helper_spec.rb +0 -107
  234. data/spec/templates/helpers/module_helper_spec.rb +0 -35
  235. data/spec/templates/helpers/shared_signature_examples.rb +0 -126
  236. data/spec/templates/helpers/text_helper_spec.rb +0 -65
  237. data/spec/templates/markup_processor_integrations/asciidoctor_spec.rb +0 -60
  238. data/spec/templates/markup_processor_integrations/integration_spec_helper.rb +0 -46
  239. data/spec/templates/markup_processor_integrations/rdoc_markdown_spec.rb +0 -59
  240. data/spec/templates/markup_processor_integrations/rdoc_spec.rb +0 -39
  241. data/spec/templates/markup_processor_integrations/redcarpet_spec.rb +0 -59
  242. data/spec/templates/markup_processor_integrations/redcloth_spec.rb +0 -48
  243. data/spec/templates/method_spec.rb +0 -118
  244. data/spec/templates/module_spec.rb +0 -203
  245. data/spec/templates/onefile_spec.rb +0 -66
  246. data/spec/templates/section_spec.rb +0 -144
  247. data/spec/templates/spec_helper.rb +0 -76
  248. data/spec/templates/tag_spec.rb +0 -52
  249. data/spec/templates/template_spec.rb +0 -410
  250. data/spec/verifier_spec.rb +0 -106
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe YARD::CLI::CommandParser do
4
- describe "#run" do
5
- before do
6
- @cmd = CLI::CommandParser.new
7
- end
8
-
9
- it "shows help if --help is provided" do
10
- command = double(:command)
11
- expect(command).to receive(:run).with('--help')
12
- CLI::CommandParser.commands[:foo] = command
13
- @cmd.class.default_command = :foo
14
- @cmd.run(*%w(foo --help))
15
- end
16
-
17
- it "uses default command if first argument is a switch" do
18
- command = double(:command)
19
- expect(command).to receive(:run).with('--a', 'b', 'c')
20
- CLI::CommandParser.commands[:foo] = command
21
- @cmd.class.default_command = :foo
22
- @cmd.run(*%w(--a b c))
23
- end
24
-
25
- it "uses default command if no arguments are provided" do
26
- command = double(:command)
27
- expect(command).to receive(:run)
28
- CLI::CommandParser.commands[:foo] = command
29
- @cmd.class.default_command = :foo
30
- @cmd.run
31
- end
32
-
33
- it "lists commands if command is not found" do
34
- expect(@cmd).to receive(:list_commands)
35
- @cmd.run(*%w(unknown_command --args))
36
- end
37
-
38
- it "lists commands if --help is provided as sole argument" do
39
- expect(@cmd).to receive(:list_commands)
40
- @cmd.run(*%w(--help))
41
- end
42
- end
43
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'optparse'
3
-
4
- RSpec.describe YARD::CLI::Command do
5
- describe "#parse_options" do
6
- before do
7
- @options = OptionParser.new
8
- @saw_foo = false
9
- @options.on('--foo') { @saw_foo = true }
10
- end
11
-
12
- def parse(*args)
13
- CLI::Command.new.send(:parse_options, @options, args)
14
- args
15
- end
16
-
17
- it "skips unrecognized options but continue to next option" do
18
- expect(log).to receive(:warn).with(/Unrecognized.*--list/)
19
- expect(log).to receive(:warn).with(/Unrecognized.*--list2/)
20
- parse('--list', '--list2', '--foo')
21
- expect(@saw_foo).to be true
22
- end
23
-
24
- it "skips unrecognized options and any extra non-option arg that follows" do
25
- expect(log).to receive(:warn).with(/Unrecognized.*--list/)
26
- parse('--list', 'foo', '--foo')
27
- expect(@saw_foo).to be true
28
- end
29
-
30
- it "stops retrying to parse at non-switch argument" do
31
- expect(log).to receive(:warn).with(/Unrecognized.*--list/)
32
- args = parse('--list', 'foo', 'foo', 'foo')
33
- expect(args).to eq %w(foo foo)
34
- end
35
- end
36
- end
@@ -1,148 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'yaml'
3
-
4
- RSpec.describe YARD::CLI::Config do
5
- before do
6
- @config = YARD::CLI::Config.new
7
- YARD::Config.options = YARD::Config::DEFAULT_CONFIG_OPTIONS.dup
8
- allow(YARD::Config).to receive(:save)
9
- end
10
-
11
- def run(*args)
12
- @config.run(*args)
13
- end
14
-
15
- describe "Listing configuration" do
16
- it "accepts --list" do
17
- opts = YARD::Config.options
18
- expect(YAML).to receive(:dump).twice.and_return("--- foo\nbar\nbaz")
19
- expect(log).to receive(:puts).twice.with("bar\nbaz")
20
- run
21
- run('--list')
22
- expect(YARD::Config.options).to eq opts
23
- end
24
- end
25
-
26
- describe "Viewing an item" do
27
- it "views item if no value is given" do
28
- YARD::Config.options[:foo] = 'bar'
29
- expect(log).to receive(:puts).with('"bar"')
30
- run 'foo'
31
- expect(YARD::Config.options[:foo]).to eq 'bar'
32
- end
33
- end
34
-
35
- describe "Modifying an item" do
36
- it "accepts --reset to set value" do
37
- YARD::Config.options[:load_plugins] = 'foo'
38
- run('--reset', 'load_plugins')
39
- expect(YARD::Config.options[:load_plugins]).to be false
40
- end
41
-
42
- it "accepts --as-list to force single item as list" do
43
- run('--as-list', 'foo', 'bar')
44
- expect(YARD::Config.options[:foo]).to eq ['bar']
45
- end
46
-
47
- it "accepts --append to append values to existing key" do
48
- YARD::Config.options[:foo] = ['bar']
49
- run('--append', 'foo', 'baz', 'quux')
50
- expect(YARD::Config.options[:foo]).to eq ['bar', 'baz', 'quux']
51
- run('-a', 'foo', 'last')
52
- expect(YARD::Config.options[:foo]).to eq ['bar', 'baz', 'quux', 'last']
53
- end
54
-
55
- it "turns key into list if --append is used on single item" do
56
- YARD::Config.options[:foo] = 'bar'
57
- run('-a', 'foo', 'baz')
58
- expect(YARD::Config.options[:foo]).to eq ['bar', 'baz']
59
- end
60
-
61
- it "modifies item if value is given" do
62
- run('foo', 'xxx')
63
- expect(YARD::Config.options[:foo]).to eq 'xxx'
64
- end
65
-
66
- it "turns list of values into array of values" do
67
- run('foo', 'a', 'b', '1', 'true', 'false')
68
- expect(YARD::Config.options[:foo]).to eq ['a', 'b', 1, true, false]
69
- end
70
-
71
- it "turns number into numeric Ruby type" do
72
- run('foo', '1')
73
- expect(YARD::Config.options[:foo]).to eq 1
74
- end
75
-
76
- it "turns true into TrueClass" do
77
- run('foo', 'true')
78
- expect(YARD::Config.options[:foo]).to be true
79
- end
80
-
81
- it "turns false into FalseClass" do
82
- run('foo', 'false')
83
- expect(YARD::Config.options[:foo]).to be false
84
- end
85
-
86
- it "saves on modification" do
87
- expect(YARD::Config).to receive(:save)
88
- run('foo', 'true')
89
- end
90
- end
91
-
92
- describe "RubyGems hooks" do
93
- require 'rubygems'
94
-
95
- class FakeGemConfig < Hash
96
- attr_accessor :written
97
- def write; @written = true end
98
- def path; nil end
99
- end
100
-
101
- before do
102
- allow(Gem).to receive(:configuration).and_return(FakeGemConfig.new)
103
- end
104
-
105
- it "accepts --gem-install-yri" do
106
- @config.send(:optparse, '--gem-install-yri')
107
- expect(@config.gem_install_cmd).to eq 'yri'
108
- end
109
-
110
- it "accepts --gem-install-yard" do
111
- @config.send(:optparse, '--gem-install-yard')
112
- expect(@config.gem_install_cmd).to eq 'yard'
113
- end
114
-
115
- it "does not change back to yri if yard was specified" do
116
- @config.send(:optparse, '--gem-install-yard', '--gem-install-yri')
117
- expect(@config.gem_install_cmd).to eq 'yard'
118
- end
119
-
120
- it "ignores actual config options" do
121
- run('--gem-install-yri', 'foo', 'true')
122
- expect(YARD::Config).not_to receive(:save)
123
- end
124
-
125
- it "updates configuration as :gem if no configuration exists" do
126
- run('--gem-install-yri')
127
- expect(Gem.configuration[:gem]).to eq "--document=yri"
128
- expect(Gem.configuration.written).to eq true
129
- end
130
-
131
- [:install, "install", :gem, "gem"].each do |type|
132
- it "finds existing config in #{type.inspect} and updates that line without changing anything else" do
133
- Gem.configuration[type] = "--opts x"
134
- run('--gem-install-yri')
135
- expect(Gem.configuration[type]).to eq "--opts x --document=yri"
136
- ([:install, "install", :gem, "gem"] - [type]).each do |other|
137
- expect(Gem.configuration[other]).to eq nil
138
- end
139
- end
140
- end
141
-
142
- it "scrubs --document values from existing config" do
143
- Gem.configuration["gem"] = "--document=yri,ri --no-document --opts x"
144
- run('--gem-install-yri')
145
- expect(Gem.configuration["gem"]).to eq "--opts x --document=yri"
146
- end
147
- end
148
- end
@@ -1,254 +0,0 @@
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