yard 0.9.24 → 0.9.25

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 (223) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +37 -24
  3. data/CHANGELOG.md +18 -3
  4. data/README.md +96 -101
  5. data/Rakefile +2 -0
  6. data/lib/yard/cli/diff.rb +4 -1
  7. data/lib/yard/cli/server.rb +22 -13
  8. data/lib/yard/code_objects/proxy.rb +2 -1
  9. data/lib/yard/globals.rb +1 -1
  10. data/lib/yard/handlers/c/base.rb +164 -129
  11. data/lib/yard/parser/ruby/ruby_parser.rb +6 -4
  12. data/lib/yard/registry_store.rb +1 -1
  13. data/lib/yard/templates/helpers/html_helper.rb +10 -3
  14. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +5 -4
  15. data/lib/yard/version.rb +1 -1
  16. data/tasks/update_error_map.rake +53 -0
  17. data/yard.gemspec +1 -1
  18. metadata +3 -207
  19. data/spec/cli/command_parser_spec.rb +0 -43
  20. data/spec/cli/command_spec.rb +0 -36
  21. data/spec/cli/config_spec.rb +0 -148
  22. data/spec/cli/diff_spec.rb +0 -254
  23. data/spec/cli/display_spec.rb +0 -30
  24. data/spec/cli/gems_spec.rb +0 -81
  25. data/spec/cli/graph_spec.rb +0 -18
  26. data/spec/cli/help_spec.rb +0 -22
  27. data/spec/cli/i18n_spec.rb +0 -107
  28. data/spec/cli/list_spec.rb +0 -8
  29. data/spec/cli/markup_types_spec.rb +0 -22
  30. data/spec/cli/server_spec.rb +0 -324
  31. data/spec/cli/stats_spec.rb +0 -96
  32. data/spec/cli/yard_on_yard_spec.rb +0 -38
  33. data/spec/cli/yardoc_spec.rb +0 -896
  34. data/spec/cli/yri_spec.rb +0 -101
  35. data/spec/code_objects/base_spec.rb +0 -485
  36. data/spec/code_objects/class_object_spec.rb +0 -226
  37. data/spec/code_objects/code_object_list_spec.rb +0 -36
  38. data/spec/code_objects/constants_spec.rb +0 -116
  39. data/spec/code_objects/extra_file_object_spec.rb +0 -161
  40. data/spec/code_objects/macro_object_spec.rb +0 -150
  41. data/spec/code_objects/method_object_spec.rb +0 -184
  42. data/spec/code_objects/module_object_spec.rb +0 -142
  43. data/spec/code_objects/namespace_mapper_spec.rb +0 -32
  44. data/spec/code_objects/namespace_object_spec.rb +0 -171
  45. data/spec/code_objects/proxy_spec.rb +0 -147
  46. data/spec/code_objects/spec_helper.rb +0 -3
  47. data/spec/config_spec.rb +0 -171
  48. data/spec/core_ext/array_spec.rb +0 -13
  49. data/spec/core_ext/file_spec.rb +0 -72
  50. data/spec/core_ext/hash_spec.rb +0 -14
  51. data/spec/core_ext/insertion_spec.rb +0 -37
  52. data/spec/core_ext/module_spec.rb +0 -9
  53. data/spec/core_ext/string_spec.rb +0 -42
  54. data/spec/core_ext/symbol_hash_spec.rb +0 -89
  55. data/spec/docstring_parser_spec.rb +0 -280
  56. data/spec/docstring_spec.rb +0 -373
  57. data/spec/handlers/alias_handler_spec.rb +0 -82
  58. data/spec/handlers/attribute_handler_spec.rb +0 -96
  59. data/spec/handlers/base_spec.rb +0 -216
  60. data/spec/handlers/c/alias_handler_spec.rb +0 -34
  61. data/spec/handlers/c/attribute_handler_spec.rb +0 -41
  62. data/spec/handlers/c/class_handler_spec.rb +0 -78
  63. data/spec/handlers/c/constant_handler_spec.rb +0 -71
  64. data/spec/handlers/c/init_handler_spec.rb +0 -48
  65. data/spec/handlers/c/method_handler_spec.rb +0 -327
  66. data/spec/handlers/c/mixin_handler_spec.rb +0 -44
  67. data/spec/handlers/c/module_handler_spec.rb +0 -71
  68. data/spec/handlers/c/override_comment_handler_spec.rb +0 -47
  69. data/spec/handlers/c/path_handler_spec.rb +0 -36
  70. data/spec/handlers/c/spec_helper.rb +0 -23
  71. data/spec/handlers/c/struct_handler_spec.rb +0 -16
  72. data/spec/handlers/class_condition_handler_spec.rb +0 -87
  73. data/spec/handlers/class_handler_spec.rb +0 -247
  74. data/spec/handlers/class_method_handler_shared_examples.rb +0 -133
  75. data/spec/handlers/class_variable_handler_spec.rb +0 -12
  76. data/spec/handlers/constant_handler_spec.rb +0 -112
  77. data/spec/handlers/decorator_handler_methods_spec.rb +0 -393
  78. data/spec/handlers/dsl_handler_spec.rb +0 -226
  79. data/spec/handlers/examples/alias_handler_001.rb.txt +0 -46
  80. data/spec/handlers/examples/attribute_handler_001.rb.txt +0 -32
  81. data/spec/handlers/examples/class_condition_handler_001.rb.txt +0 -69
  82. data/spec/handlers/examples/class_handler_001.rb.txt +0 -120
  83. data/spec/handlers/examples/class_variable_handler_001.rb.txt +0 -10
  84. data/spec/handlers/examples/constant_handler_001.rb.txt +0 -35
  85. data/spec/handlers/examples/dsl_handler_001.rb.txt +0 -156
  86. data/spec/handlers/examples/exception_handler_001.rb.txt +0 -59
  87. data/spec/handlers/examples/extend_handler_001.rb.txt +0 -19
  88. data/spec/handlers/examples/method_condition_handler_001.rb.txt +0 -10
  89. data/spec/handlers/examples/method_handler_001.rb.txt +0 -128
  90. data/spec/handlers/examples/mixin_handler_001.rb.txt +0 -40
  91. data/spec/handlers/examples/module_handler_001.rb.txt +0 -29
  92. data/spec/handlers/examples/private_constant_handler_001.rb.txt +0 -8
  93. data/spec/handlers/examples/process_handler_001.rb.txt +0 -11
  94. data/spec/handlers/examples/visibility_handler_001.rb.txt +0 -36
  95. data/spec/handlers/examples/yield_handler_001.rb.txt +0 -54
  96. data/spec/handlers/exception_handler_spec.rb +0 -49
  97. data/spec/handlers/extend_handler_spec.rb +0 -28
  98. data/spec/handlers/legacy_base_spec.rb +0 -128
  99. data/spec/handlers/method_condition_handler_spec.rb +0 -15
  100. data/spec/handlers/method_handler_spec.rb +0 -214
  101. data/spec/handlers/mixin_handler_spec.rb +0 -60
  102. data/spec/handlers/module_function_handler_spec.rb +0 -106
  103. data/spec/handlers/module_handler_spec.rb +0 -35
  104. data/spec/handlers/private_class_method_handler_spec.rb +0 -11
  105. data/spec/handlers/private_constant_handler_spec.rb +0 -25
  106. data/spec/handlers/processor_spec.rb +0 -35
  107. data/spec/handlers/public_class_method_handler_spec.rb +0 -11
  108. data/spec/handlers/ruby/base_spec.rb +0 -95
  109. data/spec/handlers/ruby/legacy/base_spec.rb +0 -84
  110. data/spec/handlers/spec_helper.rb +0 -33
  111. data/spec/handlers/visibility_handler_spec.rb +0 -44
  112. data/spec/handlers/yield_handler_spec.rb +0 -52
  113. data/spec/i18n/locale_spec.rb +0 -81
  114. data/spec/i18n/message_spec.rb +0 -52
  115. data/spec/i18n/messages_spec.rb +0 -67
  116. data/spec/i18n/pot_generator_spec.rb +0 -295
  117. data/spec/i18n/text_spec.rb +0 -184
  118. data/spec/logging_spec.rb +0 -44
  119. data/spec/options_spec.rb +0 -171
  120. data/spec/parser/base_spec.rb +0 -24
  121. data/spec/parser/c_parser_spec.rb +0 -236
  122. data/spec/parser/examples/array.c.txt +0 -6267
  123. data/spec/parser/examples/example1.rb.txt +0 -8
  124. data/spec/parser/examples/extrafile.c.txt +0 -8
  125. data/spec/parser/examples/file.c.txt +0 -28
  126. data/spec/parser/examples/multifile.c.txt +0 -22
  127. data/spec/parser/examples/namespace.cpp.txt +0 -68
  128. data/spec/parser/examples/override.c.txt +0 -424
  129. data/spec/parser/examples/parse_in_order_001.rb.txt +0 -2
  130. data/spec/parser/examples/parse_in_order_002.rb.txt +0 -2
  131. data/spec/parser/examples/tag_handler_001.rb.txt +0 -8
  132. data/spec/parser/ruby/ast_node_spec.rb +0 -33
  133. data/spec/parser/ruby/legacy/statement_list_spec.rb +0 -299
  134. data/spec/parser/ruby/legacy/token_list_spec.rb +0 -79
  135. data/spec/parser/ruby/ruby_parser_spec.rb +0 -520
  136. data/spec/parser/ruby/token_resolver_spec.rb +0 -165
  137. data/spec/parser/source_parser_spec.rb +0 -727
  138. data/spec/parser/tag_parsing_spec.rb +0 -17
  139. data/spec/rake/yardoc_task_spec.rb +0 -118
  140. data/spec/registry_resolver_spec.rb +0 -15
  141. data/spec/registry_spec.rb +0 -463
  142. data/spec/registry_store_spec.rb +0 -327
  143. data/spec/rubygems/doc_manager_spec.rb +0 -112
  144. data/spec/serializers/data/serialized_yardoc/checksums +0 -1
  145. data/spec/serializers/data/serialized_yardoc/objects/Foo.dat +0 -0
  146. data/spec/serializers/data/serialized_yardoc/objects/Foo/bar_i.dat +0 -0
  147. data/spec/serializers/data/serialized_yardoc/objects/Foo/baz_i.dat +0 -0
  148. data/spec/serializers/data/serialized_yardoc/objects/root.dat +0 -0
  149. data/spec/serializers/data/serialized_yardoc/proxy_types +0 -2
  150. data/spec/serializers/file_system_serializer_spec.rb +0 -145
  151. data/spec/serializers/spec_helper.rb +0 -2
  152. data/spec/serializers/yardoc_serializer_spec.rb +0 -90
  153. data/spec/server/adapter_spec.rb +0 -39
  154. data/spec/server/commands/base_spec.rb +0 -91
  155. data/spec/server/commands/library_command_spec.rb +0 -39
  156. data/spec/server/doc_server_helper_spec.rb +0 -72
  157. data/spec/server/doc_server_serializer_spec.rb +0 -60
  158. data/spec/server/rack_adapter_spec.rb +0 -21
  159. data/spec/server/router_spec.rb +0 -123
  160. data/spec/server/spec_helper.rb +0 -22
  161. data/spec/server/static_caching_spec.rb +0 -47
  162. data/spec/server/webrick_servlet_spec.rb +0 -20
  163. data/spec/server_spec.rb +0 -19
  164. data/spec/spec_helper.rb +0 -212
  165. data/spec/tags/default_factory_spec.rb +0 -168
  166. data/spec/tags/default_tag_spec.rb +0 -11
  167. data/spec/tags/directives_spec.rb +0 -463
  168. data/spec/tags/library_spec.rb +0 -48
  169. data/spec/tags/overload_tag_spec.rb +0 -53
  170. data/spec/tags/ref_tag_list_spec.rb +0 -53
  171. data/spec/tags/types_explainer_spec.rb +0 -203
  172. data/spec/templates/class_spec.rb +0 -45
  173. data/spec/templates/constant_spec.rb +0 -41
  174. data/spec/templates/engine_spec.rb +0 -131
  175. data/spec/templates/examples/class001.html +0 -308
  176. data/spec/templates/examples/class001.txt +0 -36
  177. data/spec/templates/examples/class002.html +0 -39
  178. data/spec/templates/examples/constant001.txt +0 -25
  179. data/spec/templates/examples/constant002.txt +0 -7
  180. data/spec/templates/examples/constant003.txt +0 -11
  181. data/spec/templates/examples/method001.html +0 -137
  182. data/spec/templates/examples/method001.txt +0 -35
  183. data/spec/templates/examples/method002.html +0 -91
  184. data/spec/templates/examples/method002.txt +0 -20
  185. data/spec/templates/examples/method003.html +0 -165
  186. data/spec/templates/examples/method003.txt +0 -45
  187. data/spec/templates/examples/method004.html +0 -48
  188. data/spec/templates/examples/method004.txt +0 -10
  189. data/spec/templates/examples/method005.html +0 -105
  190. data/spec/templates/examples/method005.txt +0 -33
  191. data/spec/templates/examples/method006.html +0 -108
  192. data/spec/templates/examples/method006.txt +0 -20
  193. data/spec/templates/examples/module001.dot +0 -33
  194. data/spec/templates/examples/module001.html +0 -833
  195. data/spec/templates/examples/module001.txt +0 -33
  196. data/spec/templates/examples/module002.html +0 -341
  197. data/spec/templates/examples/module003.html +0 -202
  198. data/spec/templates/examples/module004.html +0 -394
  199. data/spec/templates/examples/module005.html +0 -82
  200. data/spec/templates/examples/tag001.txt +0 -82
  201. data/spec/templates/helpers/base_helper_spec.rb +0 -171
  202. data/spec/templates/helpers/html_helper_spec.rb +0 -666
  203. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +0 -65
  204. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +0 -84
  205. data/spec/templates/helpers/markup_helper_spec.rb +0 -136
  206. data/spec/templates/helpers/method_helper_spec.rb +0 -107
  207. data/spec/templates/helpers/module_helper_spec.rb +0 -35
  208. data/spec/templates/helpers/shared_signature_examples.rb +0 -126
  209. data/spec/templates/helpers/text_helper_spec.rb +0 -65
  210. data/spec/templates/markup_processor_integrations/asciidoctor_spec.rb +0 -60
  211. data/spec/templates/markup_processor_integrations/integration_spec_helper.rb +0 -50
  212. data/spec/templates/markup_processor_integrations/rdoc_markdown_spec.rb +0 -48
  213. data/spec/templates/markup_processor_integrations/rdoc_spec.rb +0 -39
  214. data/spec/templates/markup_processor_integrations/redcarpet_spec.rb +0 -64
  215. data/spec/templates/markup_processor_integrations/redcloth_spec.rb +0 -64
  216. data/spec/templates/method_spec.rb +0 -118
  217. data/spec/templates/module_spec.rb +0 -203
  218. data/spec/templates/onefile_spec.rb +0 -66
  219. data/spec/templates/section_spec.rb +0 -144
  220. data/spec/templates/spec_helper.rb +0 -76
  221. data/spec/templates/tag_spec.rb +0 -52
  222. data/spec/templates/template_spec.rb +0 -410
  223. data/spec/verifier_spec.rb +0 -106
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MixinHandler" do
5
- before(:all) { parse_file :mixin_handler_001, __FILE__ }
6
-
7
- it "handles includes from classes or modules" do
8
- expect(Registry.at(:X).instance_mixins).to include(P(:A))
9
- expect(Registry.at(:Y).instance_mixins).to include(P(:A))
10
- end
11
-
12
- it "handles includes in class << self" do
13
- expect(Registry.at(:Y).class_mixins).to include(P(:A))
14
- end
15
-
16
- it "handles includes for modules that don't yet exist" do
17
- expect(Registry.at(:X).instance_mixins).to include(P(nil, :NOTEXIST))
18
- end
19
-
20
- it "sets the type of non-existing modules to :module" do
21
- o = Registry.at(:X).instance_mixins.find {|obj| obj.name == :NOTEXIST }
22
- expect(o.type).to eq :module
23
- end
24
-
25
- it "handles includes with multiple parameters" do
26
- expect(Registry.at(:X)).not_to be nil
27
- end
28
-
29
- it "handles complex include statements" do
30
- expect(P(:Y).instance_mixins).to include(P('B::C'))
31
- expect(P(:Y).instance_mixins).to include(P(:B))
32
- end
33
-
34
- it "treats a mixed in Constant by taking its value as the real object name" do
35
- expect(P(:Y).instance_mixins).to include(Registry.at('B::D'))
36
- end
37
-
38
- it "adds includes in the correct order when include is given multiple arguments" do
39
- expect(P(:Z).instance_mixins).to eq [P(:A), P(:B)]
40
- end
41
-
42
- it "avoids including self for unresolved mixins of the same name" do
43
- expect(P("ABC::DEF::FOO").mixins).to eq [P("ABC::FOO")]
44
- expect(P("ABC::DEF::BAR").mixins).to eq [P("ABC::BAR")]
45
- end
46
-
47
- it "raises undocumentable error if argument is variable" do
48
- undoc_error "module X; include invalid; end"
49
- expect(Registry.at('X').mixins).to eq []
50
- end
51
-
52
- it "parses all other arguments before erroring out on undocumentable error" do
53
- undoc_error "module X; include invalid, Y; end"
54
- expect(Registry.at('X').mixins).to eq [P('Y')]
55
- end
56
-
57
- it "adds mixins from include calls to constants" do
58
- expect(P('FromConstant').instance_mixins).to eq [P('A')]
59
- end
60
- end
@@ -1,106 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}VisibilityHandler" do
5
- after { Registry.clear }
6
-
7
- def assert_module_function(namespace, name)
8
- klass = Registry.at("#{namespace}.#{name}")
9
- instance = Registry.at("#{namespace}##{name}")
10
- expect(klass).not_to be nil
11
- expect(instance).not_to be nil
12
- expect(klass).to be_module_function
13
- expect(instance).not_to be_module_function
14
- expect(klass.visibility).to eq :public
15
- expect(instance.visibility).to eq :private
16
- end
17
-
18
- it "is able to create a module function with parameters" do
19
- YARD.parse_string <<-eof
20
- module Foo
21
- def bar; end
22
- def baz; end
23
-
24
- module_function :bar, :baz
25
- end
26
- eof
27
- assert_module_function('Foo', 'bar')
28
- assert_module_function('Foo', 'baz')
29
- end
30
-
31
- it "is able to set scope for duration of block without params" do
32
- YARD.parse_string <<-eof
33
- module Foo
34
- def qux; end
35
-
36
- module_function
37
-
38
- def bar; end
39
- def baz; end
40
- end
41
- eof
42
- expect(Registry.at('Foo.qux')).to be nil
43
- assert_module_function('Foo', 'bar')
44
- assert_module_function('Foo', 'baz')
45
- end
46
-
47
- # @bug gh-563
48
- it "copies tags to module function properly" do
49
- YARD.parse_string <<-eof
50
- module Foo
51
- # @param [String] foo bar
52
- # @option foo [String] bar (nil) baz
53
- # @return [void]
54
- def bar(foo); end
55
- module_function :bar
56
- end
57
- eof
58
- assert_module_function('Foo', 'bar')
59
- o = Registry.at('Foo.bar')
60
- expect(o.tag(:param).types).to eq ['String']
61
- expect(o.tag(:param).name).to eq 'foo'
62
- expect(o.tag(:param).text).to eq 'bar'
63
- expect(o.tag(:option).name).to eq 'foo'
64
- expect(o.tag(:option).pair.types).to eq ['String']
65
- expect(o.tag(:option).pair.defaults).to eq ['nil']
66
- expect(o.tag(:option).pair.text).to eq 'baz'
67
- expect(o.tag(:return).types).to eq ['void']
68
- end
69
-
70
- it "handles all method names in parameters" do
71
- YARD.parse_string <<-eof
72
- module Foo
73
- def -(t); end
74
- def ==(other); end
75
- def a?; end
76
- module_function :-, '==', :a?
77
- end
78
- eof
79
- assert_module_function('Foo', '-')
80
- assert_module_function('Foo', '==')
81
- assert_module_function('Foo', 'a?')
82
- end
83
-
84
- it "only accepts strings and symbols" do
85
- YARD.parse_string <<-eof
86
- module Foo
87
- module_function name
88
- module_function *argument
89
- module_function *(method_call)
90
- end
91
- eof
92
- expect(Registry.at('Foo#name')).to be nil
93
- expect(Registry.at('Foo#argument')).to be nil
94
- expect(Registry.at('Foo#method_call')).to be nil
95
- end
96
-
97
- it "handles constants passed in as symbols" do
98
- YARD.parse_string <<-eof
99
- module Foo
100
- def Foo; end
101
- module_function :Foo
102
- end
103
- eof
104
- assert_module_function('Foo', 'Foo')
105
- end
106
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ModuleHandler" do
5
- before(:all) { parse_file :module_handler_001, __FILE__ }
6
-
7
- it "parses a module block" do
8
- expect(Registry.at(:ModName)).not_to eq nil
9
- expect(Registry.at("ModName::OtherModName")).not_to eq nil
10
- end
11
-
12
- it "attaches docstring" do
13
- expect(Registry.at("ModName::OtherModName").docstring).to eq "Docstring"
14
- end
15
-
16
- it "handles any formatting" do
17
- expect(Registry.at(:StressTest)).not_to eq nil
18
- end
19
-
20
- it "handles complex module names" do
21
- expect(Registry.at("A::B")).not_to eq nil
22
- end
23
-
24
- it "handles modules in the form ::ModName" do
25
- expect(Registry.at("Kernel")).not_to be nil
26
- end
27
-
28
- it "lists mixins in proper order" do
29
- expect(Registry.at('D').mixins).to eq [P(:C), P(:B), P(:A)]
30
- end
31
-
32
- it "creates proper module when constant is in namespace" do
33
- expect(Registry.at('Q::FOO::A')).not_to be nil
34
- end
35
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
- require File.dirname(__FILE__) + '/class_method_handler_shared_examples'
4
-
5
- RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}PrivateClassMethodHandler" do
6
- before { Registry.clear }
7
-
8
- let(:visibility) { :private }
9
-
10
- include_examples "class method visibility decorator"
11
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}PrivateConstantHandler" do
5
- before(:all) { parse_file :private_constant_handler_001, __FILE__ }
6
-
7
- it "handles private_constant statement" do
8
- expect(Registry.at('A::Foo').visibility).to eq :private
9
- expect(Registry.at('A::B').visibility).to eq :private
10
- expect(Registry.at('A::C').visibility).to eq :private
11
- end
12
-
13
- it "makes all other constants public" do
14
- expect(Registry.at('A::D').visibility).to eq :public
15
- end
16
-
17
- it "fails if parameter is not String, Symbol or Constant" do
18
- undoc_error 'class Foo; private_constant x; end'
19
- undoc_error 'class Foo; X = 1; private_constant X.new("hi"); end'
20
- end unless LEGACY_PARSER
21
-
22
- it "fails if constant can't be recognized" do
23
- undoc_error 'class Foo2; private_constant :X end'
24
- end
25
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- RSpec.describe YARD::Handlers::Processor do
5
- before do
6
- @proc = Handlers::Processor.new(OpenStruct.new(:parser_type => :ruby))
7
- end
8
-
9
- it "starts with public visibility" do
10
- expect(@proc.visibility).to eq :public
11
- end
12
-
13
- it "starts in instance scope" do
14
- expect(@proc.scope).to eq :instance
15
- end
16
-
17
- it "starts in root namespace" do
18
- expect(@proc.namespace).to eq Registry.root
19
- end
20
-
21
- it "has a globals structure" do
22
- expect(@proc.globals).to be_a(OpenStruct)
23
- end
24
-
25
- it "ignores HandlerAborted exceptions (but print debug info)" do
26
- class AbortHandlerProcessor < YARD::Handlers::Ruby::Base
27
- process { abort! }
28
- end
29
- stmt = OpenStruct.new(:line => 1, :show => 'SOURCE')
30
- allow(@proc).to receive(:find_handlers).and_return([AbortHandlerProcessor])
31
- expect(log).to receive(:debug).with(/AbortHandlerProcessor cancelled from/)
32
- expect(log).to receive(:debug).with("\tin file '(stdin)':1:\n\nSOURCE\n")
33
- @proc.process([stmt])
34
- end
35
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
- require File.dirname(__FILE__) + '/class_method_handler_shared_examples'
4
-
5
- RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}PublicClassMethodHandler" do
6
- before { Registry.clear }
7
-
8
- let(:visibility) { :public }
9
-
10
- include_examples "class method visibility decorator"
11
- end
@@ -1,95 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe YARD::Handlers::Ruby::Base, '#valid_handler?' do
4
- include YARD::Parser::Ruby
5
- YARD::Parser::Ruby::AstNode # rubocop:disable Lint/Void
6
-
7
- before do
8
- allow(Handlers::Ruby::Base).to receive(:inherited)
9
- @processor = Handlers::Processor.new(OpenStruct.new(:parser_type => :ruby))
10
- end
11
-
12
- after(:all) do
13
- Handlers::Base.clear_subclasses
14
- end
15
-
16
- def valid(handler, stmt)
17
- expect(@processor.find_handlers(stmt)).to include(handler)
18
- end
19
-
20
- def invalid(handler, stmt)
21
- expect(@processor.find_handlers(stmt)).not_to include(handler)
22
- end
23
-
24
- it "only handles Handlers inherited from Ruby::Base class" do
25
- class IgnoredHandler < Handlers::Base
26
- handles :list
27
- end
28
- class NotIgnoredHandler < Handlers::Ruby::Base
29
- handles :list
30
- end
31
- allow(Handlers::Base).to receive(:subclasses).and_return [IgnoredHandler, NotIgnoredHandler]
32
- expect(@processor.find_handlers(s)).to eq [NotIgnoredHandler]
33
- end
34
-
35
- it "handles string input (matches AstNode#source)" do
36
- class StringHandler < Handlers::Ruby::Base
37
- handles "x"
38
- end
39
- allow(Handlers::Base).to receive(:subclasses).and_return [StringHandler]
40
- ast = Parser::Ruby::RubyParser.parse("if x == 2 then true end").ast
41
- valid StringHandler, ast[0][0][0]
42
- invalid StringHandler, ast[0][1]
43
- end
44
-
45
- it "handles symbol input (matches AstNode#type)" do
46
- class SymbolHandler < Handlers::Ruby::Base
47
- handles :myNodeType
48
- end
49
- allow(Handlers::Base).to receive(:subclasses).and_return [SymbolHandler]
50
- valid SymbolHandler, s(:myNodeType, s(1, 2, 3))
51
- invalid SymbolHandler, s(:NOTmyNodeType, s(1, 2, 3))
52
- end
53
-
54
- it "handles regex input (matches AstNode#source)" do
55
- class RegexHandler < Handlers::Ruby::Base
56
- handles(/^if x ==/)
57
- end
58
- allow(Handlers::Base).to receive(:subclasses).and_return [RegexHandler]
59
- ast = Parser::Ruby::RubyParser.parse("if x == 2 then true end").ast
60
- valid RegexHandler, ast
61
- invalid RegexHandler, ast[0][1]
62
- end
63
-
64
- it "handles AstNode input (matches AST literally)" do
65
- class ASTHandler < Handlers::Ruby::Base
66
- handles s(:vcall, s(:ident, "hello_world"))
67
- end
68
- allow(Handlers::Base).to receive(:subclasses).and_return [ASTHandler]
69
- valid ASTHandler, s(:vcall, s(:ident, "hello_world"))
70
- invalid ASTHandler, s(:vcall, s(:ident, "NOTHELLOWORLD"))
71
- end
72
-
73
- it "handles #method_call(:methname) on a valid AST" do
74
- class MethCallHandler < Handlers::Ruby::Base
75
- handles method_call(:meth)
76
- end
77
- allow(Handlers::Base).to receive(:subclasses).and_return [MethCallHandler]
78
- ast = Parser::Ruby::RubyParser.parse(<<-"eof").ast
79
- meth # 0
80
- meth() # 1
81
- meth(1,2,3) # 2
82
- meth 1,2,3 # 3
83
- NotMeth.meth # 4
84
- NotMeth.meth { } # 5
85
- NotMeth.meth do end # 6
86
- NotMeth.meth 1, 2, 3 # 7
87
- NotMeth.meth(1, 2, 3) # 8
88
- NotMeth # 9
89
- eof
90
- (0..8).each do |i|
91
- valid MethCallHandler, ast[i]
92
- end
93
- invalid MethCallHandler, ast[9]
94
- end
95
- end if HAVE_RIPPER
@@ -1,84 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- include Parser::Ruby::Legacy
4
-
5
- RSpec.describe YARD::Handlers::Ruby::Legacy::Base, "#handles and inheritance" do
6
- before do
7
- allow(Handlers::Ruby::Legacy::Base).to receive(:inherited)
8
- if RUBY_VERSION > '1.8.7'
9
- allow(Handlers::Ruby::Legacy::MixinHandler).to receive(:inherited) # fixes a Ruby1.9 issue
10
- end
11
- @processor = Handlers::Processor.new(OpenStruct.new(:parser_type => :ruby18))
12
- end
13
-
14
- after(:all) do
15
- Handlers::Base.clear_subclasses
16
- end
17
-
18
- def stmt(string)
19
- Statement.new(TokenList.new(string))
20
- end
21
-
22
- it "only handles Handlers inherited from Ruby::Legacy::Base class" do
23
- class IgnoredHandler < Handlers::Base
24
- handles "hello"
25
- end
26
- class NotIgnoredHandlerLegacy < Handlers::Ruby::Legacy::Base
27
- handles "hello"
28
- end
29
- allow(Handlers::Base).to receive(:subclasses).and_return [IgnoredHandler, NotIgnoredHandlerLegacy]
30
- expect(@processor.find_handlers(stmt("hello world"))).to eq [NotIgnoredHandlerLegacy]
31
- end
32
-
33
- it "handles a string input" do
34
- class TestStringHandler < Handlers::Ruby::Legacy::Base
35
- handles "hello"
36
- end
37
-
38
- expect(TestStringHandler.handles?(stmt("hello world"))).to be true
39
- expect(TestStringHandler.handles?(stmt("nothello world"))).to be false
40
- end
41
-
42
- it "handles regex input" do
43
- class TestRegexHandler < Handlers::Ruby::Legacy::Base
44
- handles(/^nothello$/)
45
- end
46
-
47
- expect(TestRegexHandler.handles?(stmt("nothello"))).to be true
48
- expect(TestRegexHandler.handles?(stmt("not hello hello"))).to be false
49
- end
50
-
51
- it "handles token input" do
52
- class TestTokenHandler < Handlers::Ruby::Legacy::Base
53
- handles TkMODULE
54
- end
55
-
56
- expect(TestTokenHandler.handles?(stmt("module"))).to be true
57
- expect(TestTokenHandler.handles?(stmt("if"))).to be false
58
- end
59
-
60
- it "parses a do/end or { } block with #parse_block" do
61
- class MyBlockHandler < Handlers::Ruby::Legacy::Base
62
- handles(/\AmyMethod\b/)
63
- def process
64
- parse_block(:owner => "test")
65
- end
66
- end
67
-
68
- class MyBlockInnerHandler < Handlers::Ruby::Legacy::Base
69
- handles "inner"
70
- def self.reset; @@reached = false end
71
- def self.reached?; @@reached ||= false end
72
- def process; @@reached = true end
73
- end
74
-
75
- allow(Handlers::Base).to receive(:subclasses).and_return [MyBlockHandler, MyBlockInnerHandler]
76
- Parser::SourceParser.parser_type = :ruby18
77
- Parser::SourceParser.parse_string "myMethod do inner end"
78
- expect(MyBlockInnerHandler).to be_reached
79
- MyBlockInnerHandler.reset
80
- Parser::SourceParser.parse_string "myMethod { inner }"
81
- expect(MyBlockInnerHandler).to be_reached
82
- Parser::SourceParser.parser_type = :ruby
83
- end
84
- end